diff --git a/.actrc b/.actrc new file mode 100644 index 00000000000000..44367d36ab8b94 --- /dev/null +++ b/.actrc @@ -0,0 +1,27 @@ +# This file contains settings for local github action runner act: +# https://github.com/nektos/act +# +# It is recommended to run specific jobs that you need, all jobs except those +# running on should darwin work. +# e.g. act -j build_linux +# +# It is recommended to set up a separate bridge network +# and possibly define it in ~/.actrc like so: +# --network=bridge +# https://docs.docker.com/network/drivers/bridge/ + +# Remove containers after finishing a job, comment out for debugging +--rm + +# Reuse the checkout from host, otherwise act will do docker cp that makes +# running jobs a lot longer even on SSD. Clean up your .environment before +# running it. +--bind + +# Easier to have 1:1 match between triggering jobs and reading logs when they +# use the same name +--log-prefix-job-id + +# Default runner image does not include enough. +# https://github.com/nektos/act#default-runners-are-intentionally-incomplete +-P ubuntu-latest=catthehacker/ubuntu:full-latest diff --git a/.github/actions/checkout-submodules-and-bootstrap/action.yaml b/.github/actions/checkout-submodules-and-bootstrap/action.yaml index 892cf93716cb8d..8ddaec14e7bc47 100644 --- a/.github/actions/checkout-submodules-and-bootstrap/action.yaml +++ b/.github/actions/checkout-submodules-and-bootstrap/action.yaml @@ -17,6 +17,8 @@ runs: steps: - name: Dump disk info uses: ./.github/actions/dump-disk-info + - name: Set git safe directory for local act runs + uses: ./.github/actions/git-safe-directory - name: Checkout submodules uses: ./.github/actions/checkout-submodules with: diff --git a/.github/actions/git-safe-directory/action.yaml b/.github/actions/git-safe-directory/action.yaml new file mode 100644 index 00000000000000..1308c4ea1bf524 --- /dev/null +++ b/.github/actions/git-safe-directory/action.yaml @@ -0,0 +1,9 @@ +name: Git safe directory +description: For running act with checkout owned by non-root user +runs: + using: "composite" + steps: + - name: Set git safe.directory to "*" + if: ${{ env.ACT }} + shell: bash + run: git config --system --add safe.directory '*' \ No newline at end of file diff --git a/.github/boring-cyborg.yml b/.github/boring-cyborg.yml index f9e4a7a44840c5..c6fa9bcf943bef 100644 --- a/.github/boring-cyborg.yml +++ b/.github/boring-cyborg.yml @@ -105,7 +105,7 @@ labelPRBasedOnFilePath: - src/darwin/* efr32: - - src/platform/efr32/* + - src/platform/silabs/* esp32: - src/platform/ESP32/* diff --git a/.github/labeler.yml b/.github/labeler.yml index 5893e8d173a8bf..525a93e0d37048 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -16,223 +16,309 @@ # Top Level Labels ############################################################ repo: - - ./* + - changed-files: + - any-glob-to-any-file: + - './*' ############################################################ # Examples ############################################################ examples: - - examples/* - - examples/**/* + - changed-files: + - any-glob-to-any-file: + - examples/* + - examples/**/* ############################################################ # Documentation ############################################################ documentation: - - docs/* - - docs/**/* - - "*.md" + - changed-files: + - any-glob-to-any-file: + - docs/* + - docs/**/* + - "*.md" ############################################################ # Tools + Development Items ############################################################ scripts: - - scripts/* - - scripts/**/* + - changed-files: + - any-glob-to-any-file: + - scripts/* + - scripts/**/* integrations: - - integrations/* - - integrations/**/* + - changed-files: + - any-glob-to-any-file: + - integrations/* + - integrations/**/* docker: - - integrations/docker/* - - integrations/docker/**/* + - changed-files: + - any-glob-to-any-file: + - integrations/docker/* + - integrations/docker/**/* vscode: - - .vscode/* - - .vscode/**/* - - .devcontainer/* - - .devcontainer/**/* + - changed-files: + - any-glob-to-any-file: + - .vscode/* + - .vscode/**/* + - .devcontainer/* + - .devcontainer/**/* gn: - - build/* - - build/**/* - - build_overrides/* - - build_overrides/**/* - - .gn - - "*.gn" - - "*.gni" + - changed-files: + - any-glob-to-any-file: + - build/* + - build/**/* + - build_overrides/* + - build_overrides/**/* + - .gn + - "*.gn" + - "*.gni" github: - - .github - - .github/* - - .github/**/* + - changed-files: + - any-glob-to-any-file: + - .github + - .github/* + - .github/**/* workflows: - - .github/workflows/* - - .github/workflows/**/* + - changed-files: + - any-glob-to-any-file: + - .github/workflows/* + - .github/workflows/**/* tools: - - src/tools/* - - src/tools/**/* - - tools/* - - tools/**/* - - examples/chip-tool/* - - examples/chip-tool/**/* + - changed-files: + - any-glob-to-any-file: + - src/tools/* + - src/tools/**/* + - tools/* + - tools/**/* + - examples/chip-tool/* + - examples/chip-tool/**/* ############################################################ # Tests ############################################################ tests: - - src/python_testing/* - - src/python_testing/**/* - - src/app/tests/* - - src/app/tests/**/* + - changed-files: + - any-glob-to-any-file: + - src/python_testing/* + - src/python_testing/**/* + - src/app/tests/* + - src/app/tests/**/* test driver: - - src/test_driver/* - - src/test_driver/**/* + - changed-files: + - any-glob-to-any-file: + - src/test_driver/* + - src/test_driver/**/* ############################################################ # Source Code ############################################################ qr code: - - src/qrcode/* - - src/qrcode/**/* - - src/qrcodetool/* - - src/qrcodetool/**/* + - changed-files: + - any-glob-to-any-file: + - src/qrcode/* + - src/qrcode/**/* + - src/qrcodetool/* + - src/qrcodetool/**/* lwip: - - src/lwip/* - - src/lwip/**/* + - changed-files: + - any-glob-to-any-file: + - src/lwip/* + - src/lwip/**/* inet: - - src/inet/* - - src/inet/**/* + - changed-files: + - any-glob-to-any-file: + - src/inet/* + - src/inet/**/* config: - - config/* - - config/**/* + - changed-files: + - any-glob-to-any-file: + - config/* + - config/**/* lib: - - src/lib/* - - src/lib/**/* + - changed-files: + - any-glob-to-any-file: + - src/lib/* + - src/lib/**/* core: - - src/lib/core/* - - src/lib/core/**/* + - changed-files: + - any-glob-to-any-file: + - src/lib/core/* + - src/lib/core/**/* protocols: - - src/lib/protocols/* - - src/lib/protocols/**/* - - src/protocols/* - - src/protocols/**/* + - changed-files: + - any-glob-to-any-file: + - src/lib/protocols/* + - src/lib/protocols/**/* + - src/protocols/* + - src/protocols/**/* messaging: - - src/messaging/* - - src/messaging/**/* + - changed-files: + - any-glob-to-any-file: + - src/messaging/* + - src/messaging/**/* shell: - - src/lib/shell/* - - src/lib/shell/**/* + - changed-files: + - any-glob-to-any-file: + - src/lib/shell/* + - src/lib/shell/**/* support: - - src/lib/support/* - - src/lib/support/**/* + - changed-files: + - any-glob-to-any-file: + - src/lib/support/* + - src/lib/support/**/* crypto: - - src/crypto/* - - src/crypto/**/* + - changed-files: + - any-glob-to-any-file: + - src/crypto/* + - src/crypto/**/* controller: - - src/controller/* - - src/controller/**/* + - changed-files: + - any-glob-to-any-file: + - src/controller/* + - src/controller/**/* ble: - - src/ble/* - - src/ble/**/* + - changed-files: + - any-glob-to-any-file: + - src/ble/* + - src/ble/**/* app: - - src/app/* - - src/app/**/* + - changed-files: + - any-glob-to-any-file: + - src/app/* + - src/app/**/* icd: - - src/app/icd/* - - src/app/icd/**/* + - changed-files: + - any-glob-to-any-file: + - src/app/icd/* + - src/app/icd/**/* transport: - - src/transport/* - - src/transport/**/* + - changed-files: + - any-glob-to-any-file: + - src/transport/* + - src/transport/**/* system: - - src/system/* - - src/system/**/* + - changed-files: + - any-glob-to-any-file: + - src/system/* + - src/system/**/* setup payload: - - src/setup_payload/* - - src/setup_payload/**/* + - changed-files: + - any-glob-to-any-file: + - src/setup_payload/* + - src/setup_payload/**/* ############################################################ # Platforms ############################################################ platform: - - src/platform/* - - src/platform/**/* - - config/tizen/chip-gn/platform/* - - config/tizen/chip-gn/platform/**/* - - examples/platform/* - - examples/platform/**/* - - scripts/tools/memory/platform/* - - scripts/tools/memory/platform/**/* - - src/include/platform/* - - src/include/platform/**/* - - src/lib/dnssd/platform/* - - src/lib/dnssd/platform/**/* + - changed-files: + - any-glob-to-any-file: + - src/platform/* + - src/platform/**/* + - config/tizen/chip-gn/platform/* + - config/tizen/chip-gn/platform/**/* + - examples/platform/* + - examples/platform/**/* + - scripts/tools/memory/platform/* + - scripts/tools/memory/platform/**/* + - src/include/platform/* + - src/include/platform/**/* + - src/lib/dnssd/platform/* + - src/lib/dnssd/platform/**/* darwin: - - src/platform/Darwin/* - - src/platform/Darwin/**/* - - src/darwin/* - - src/darwin/**/* - - examples/darwin-framework-tool/* - - examples/darwin-framework-tool/**/* + - changed-files: + - any-glob-to-any-file: + - src/platform/Darwin/* + - src/platform/Darwin/**/* + - src/darwin/* + - src/darwin/**/* + - examples/darwin-framework-tool/* + - examples/darwin-framework-tool/**/* silabs: - - src/platform/silabs/* - - src/platform/silabs/**/* + - changed-files: + - any-glob-to-any-file: + - src/platform/silabs/* + - src/platform/silabs/**/* esp32: - - src/platform/ESP32/* - - src/platform/ESP32/**/* + - changed-files: + - any-glob-to-any-file: + - src/platform/ESP32/* + - src/platform/ESP32/**/* freeRTOS: - - src/platform/FreeRTOS/* - - src/platform/FreeRTOS/**/* + - changed-files: + - any-glob-to-any-file: + - src/platform/FreeRTOS/* + - src/platform/FreeRTOS/**/* k32w: - - src/platform/K32W/* - - src/platform/K32W/**/* + - changed-files: + - any-glob-to-any-file: + - src/platform/K32W/* + - src/platform/K32W/**/* linux: - - src/platform/Linux/* - - src/platform/Linux/**/* + - changed-files: + - any-glob-to-any-file: + - src/platform/Linux/* + - src/platform/Linux/**/* nrf connect: - - src/platform/nrfconnect/* - - src/platform/nrfconnect/**/* + - changed-files: + - any-glob-to-any-file: + - src/platform/nrfconnect/* + - src/platform/nrfconnect/**/* openthread: - - src/platform/openthread/* - - src/platform/openthread/**/* + - changed-files: + - any-glob-to-any-file: + - src/platform/openthread/* + - src/platform/openthread/**/* zephyr: - - src/platform/Zephyr/* - - src/platform/Zephyr/**/* + - changed-files: + - any-glob-to-any-file: + - src/platform/Zephyr/* + - src/platform/Zephyr/**/* telink: - - src/platform/telink/* - - src/platform/telink/**/* + - changed-files: + - any-glob-to-any-file: + - src/platform/telink/* + - src/platform/telink/**/* tizen: - - src/platform/Tizen/* - - src/platform/Tizen/**/* + - changed-files: + - any-glob-to-any-file: + - src/platform/Tizen/* + - src/platform/Tizen/**/* diff --git a/.github/workflows/docbuild.yaml b/.github/workflows/docbuild.yaml index f02d704f348143..2d28a2a537d922 100644 --- a/.github/workflows/docbuild.yaml +++ b/.github/workflows/docbuild.yaml @@ -27,7 +27,7 @@ jobs: path: matter fetch-depth: 0 - name: Install Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: 3.8 cache-dependency-path: matter/docs/requirements.txt diff --git a/.github/workflows/examples-k32w.yaml b/.github/workflows/examples-k32w.yaml index 5d811a986c757a..e2854c2e297f38 100644 --- a/.github/workflows/examples-k32w.yaml +++ b/.github/workflows/examples-k32w.yaml @@ -37,7 +37,7 @@ jobs: if: github.actor != 'restyled-io[bot]' container: - image: ghcr.io/project-chip/chip-build-k32w:26 + image: ghcr.io/project-chip/chip-build-k32w:27 volumes: - "/tmp/bloat_reports:/tmp/bloat_reports" steps: diff --git a/.github/workflows/examples-openiotsdk.yaml b/.github/workflows/examples-openiotsdk.yaml index f468341b0b84b1..7ef7120da6ad04 100644 --- a/.github/workflows/examples-openiotsdk.yaml +++ b/.github/workflows/examples-openiotsdk.yaml @@ -73,7 +73,7 @@ jobs: /tmp/bloat_reports/ - name: "Test: shell example" - if: steps.build_shell.outcome == 'success' + if: github.event_name == 'workflow_dispatch' && steps.build_shell.outcome == 'success' run: | scripts/run_in_python_env.sh out/venv \ 'scripts/examples/openiotsdk_example.sh --no-activate -C test shell' @@ -103,7 +103,7 @@ jobs: /tmp/bloat_reports/ - name: "Test: tv-app example" - if: steps.build_tv_app.outcome == 'success' + if: github.event_name == 'workflow_dispatch' && steps.build_tv_app.outcome == 'success' timeout-minutes: 10 run: | scripts/setup/openiotsdk/network_setup.sh -n $TEST_NETWORK_NAME up @@ -125,7 +125,7 @@ jobs: /tmp/bloat_reports/ - name: "Test: all-clusters-app example" - if: steps.build_all_clusters_app.outcome == 'success' + if: github.event_name == 'workflow_dispatch' && steps.build_all_clusters_app.outcome == 'success' timeout-minutes: 5 run: | scripts/setup/openiotsdk/network_setup.sh -n $TEST_NETWORK_NAME up @@ -161,7 +161,7 @@ jobs: scripts/examples/gn_build_example.sh examples/ota-provider-app/linux/ out/ota-provider chip_config_network_layer_ble=false - name: "Test: lock-app example (mbedtls)" - if: steps.build_lock_app_mbedtls.outcome == 'success' + if: github.event_name == 'workflow_dispatch' && steps.build_lock_app_mbedtls.outcome == 'success' run: | scripts/setup/openiotsdk/network_setup.sh -n $TEST_NETWORK_NAME up scripts/run_in_python_env.sh out/venv \ @@ -169,7 +169,7 @@ jobs: scripts/setup/openiotsdk/network_setup.sh -n $TEST_NETWORK_NAME down - name: "Test: ota-requestor-app example" - if: steps.build_ota_requestor_app.outcome == 'success' && steps.build_ota_provider_app.outcome == 'success' + if: github.event_name == 'workflow_dispatch' && steps.build_ota_requestor_app.outcome == 'success' && steps.build_ota_provider_app.outcome == 'success' timeout-minutes: 30 run: | mkdir out/binaries @@ -182,7 +182,7 @@ jobs: scripts/setup/openiotsdk/network_setup.sh -n $TEST_NETWORK_NAME down - name: "Test: unit-tests (mbedtls)" - if: steps.build_unit_tests_mbedtls.outcome == 'success' + if: github.event_name == 'workflow_dispatch' && steps.build_unit_tests_mbedtls.outcome == 'success' run: | scripts/run_in_python_env.sh out/venv \ 'scripts/examples/openiotsdk_example.sh --no-activate -C test unit-tests' @@ -199,7 +199,7 @@ jobs: /tmp/bloat_reports/ - name: "Test: lock-app example (psa)" - if: steps.build_lock_app_psa.outcome == 'success' + if: github.event_name == 'workflow_dispatch' && steps.build_lock_app_psa.outcome == 'success' run: | scripts/setup/openiotsdk/network_setup.sh -n $TEST_NETWORK_NAME up scripts/run_in_python_env.sh out/venv \ @@ -212,7 +212,7 @@ jobs: scripts/examples/openiotsdk_example.sh -b psa unit-tests - name: "Test: unit-tests (psa)" - if: steps.build_unit_tests_psa.outcome == 'success' + if: github.event_name == 'workflow_dispatch' && steps.build_unit_tests_psa.outcome == 'success' run: | scripts/run_in_python_env.sh out/venv \ 'scripts/examples/openiotsdk_example.sh --no-activate -C test unit-tests' diff --git a/.github/workflows/examples-telink.yaml b/.github/workflows/examples-telink.yaml index 4af591a58c91f0..e7b760d0cf7e53 100644 --- a/.github/workflows/examples-telink.yaml +++ b/.github/workflows/examples-telink.yaml @@ -199,15 +199,6 @@ jobs: - name: clean out build output run: rm -rf ./out - - name: Build example Telink (B91) Resource Monitoring App - run: | - ./scripts/run_in_build_env.sh \ - "./scripts/build/build_examples.py --target 'telink-tlsr9518adk80d-resource-monitoring' build" - .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ - telink tlsr9518adk80d resource-monitoring-app \ - out/telink-tlsr9518adk80d-resource-monitoring/zephyr/zephyr.elf \ - /tmp/bloat_reports/ - - name: clean out build output run: rm -rf ./out diff --git a/.github/workflows/kotlin-style.yaml b/.github/workflows/kotlin-style.yaml index ba8d242d6552ea..08bade12d21963 100644 --- a/.github/workflows/kotlin-style.yaml +++ b/.github/workflows/kotlin-style.yaml @@ -22,7 +22,7 @@ jobs: uses: actions/checkout@v4 - name: "detekt" - uses: natiginfo/action-detekt-all@1.23.3 + uses: natiginfo/action-detekt-all@1.23.4 # Detekt seems not to like circular symlinks, so we set up # explicit paths below with: @@ -35,7 +35,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: actions/setup-java@v3 + - uses: actions/setup-java@v4 with: distribution: 'adopt' java-version: '17' diff --git a/.github/workflows/labeler.yaml b/.github/workflows/labeler.yaml index 057208eda328d2..59f56fdb5407ae 100644 --- a/.github/workflows/labeler.yaml +++ b/.github/workflows/labeler.yaml @@ -4,11 +4,12 @@ on: jobs: triage: + name: Label Triage permissions: contents: read pull-requests: write runs-on: ubuntu-latest steps: - - uses: actions/labeler@v4 + - uses: actions/labeler@v5 with: repo-token: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/protocol_compatibility.yaml b/.github/workflows/protocol_compatibility.yaml index 6b99b44317580c..6c8960072ec3be 100644 --- a/.github/workflows/protocol_compatibility.yaml +++ b/.github/workflows/protocol_compatibility.yaml @@ -28,7 +28,7 @@ jobs: - name: Checkout uses: actions/checkout@v4 - name: Setup python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: 3.11 - name: Install dependencies diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 308d0a688a46fe..a9c04f6d8f5a6b 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -110,13 +110,17 @@ jobs: src/app/zap-templates/zcl/data-model/chip/color-control-cluster.xml \ src/app/zap-templates/zcl/data-model/chip/concentration-measurement-cluster.xml \ src/app/zap-templates/zcl/data-model/chip/content-launch-cluster.xml \ + src/app/zap-templates/zcl/data-model/chip/content-app-observer-cluster.xml \ + src/app/zap-templates/zcl/data-model/chip/content-control-cluster.xml \ src/app/zap-templates/zcl/data-model/chip/descriptor-cluster.xml \ + src/app/zap-templates/zcl/data-model/chip/device-energy-management-cluster.xml \ src/app/zap-templates/zcl/data-model/chip/diagnostic-logs-cluster.xml \ src/app/zap-templates/zcl/data-model/chip/dishwasher-alarm-cluster.xml \ src/app/zap-templates/zcl/data-model/chip/dishwasher-mode-cluster.xml \ src/app/zap-templates/zcl/data-model/chip/microwave-oven-mode-cluster.xml \ src/app/zap-templates/zcl/data-model/chip/microwave-oven-control-cluster.xml \ src/app/zap-templates/zcl/data-model/chip/door-lock-cluster.xml \ + src/app/zap-templates/zcl/data-model/chip/energy-evse-cluster.xml \ src/app/zap-templates/zcl/data-model/chip/ethernet-network-diagnostics-cluster.xml \ src/app/zap-templates/zcl/data-model/chip/fan-control-cluster.xml \ src/app/zap-templates/zcl/data-model/chip/fault-injection-cluster.xml \ @@ -144,6 +148,7 @@ jobs: src/app/zap-templates/zcl/data-model/chip/onoff-cluster.xml \ src/app/zap-templates/zcl/data-model/chip/operational-credentials-cluster.xml \ src/app/zap-templates/zcl/data-model/chip/operational-state-cluster.xml \ + src/app/zap-templates/zcl/data-model/chip/operational-state-oven-cluster.xml \ src/app/zap-templates/zcl/data-model/chip/operational-state-rvc-cluster.xml \ src/app/zap-templates/zcl/data-model/chip/oven-mode-cluster.xml \ src/app/zap-templates/zcl/data-model/chip/pressure-measurement-cluster.xml \ diff --git a/.github/workflows/zap_templates.yaml b/.github/workflows/zap_templates.yaml index 61b6ddea5b807d..fc1764866daf21 100644 --- a/.github/workflows/zap_templates.yaml +++ b/.github/workflows/zap_templates.yaml @@ -51,8 +51,15 @@ jobs: run: | apt-get update DEBIAN_FRONTEND=noninteractive apt-get install -fy --fix-missing openjdk-17-jre + # Clean out java generated files: since java codegen will generate one file per + # structure/cluster, if clusters and structures are ever changed (for in progress work) + # this may leave obsolete files. Ensure we always check for clean regen. + - name: Ensure clean java + run: rm -rf src/controller/java/generated/ - name: Generate all run: ./scripts/run_in_build_env.sh scripts/tools/zap_regen_all.py + - name: Generate script-maintained items (ERROR_CODES.md) + run: ./scripts/run_in_build_env.sh "scripts/error_table.py > docs/ERROR_CODES.md" - name: Ensure git works in current working directory run: git config --global --add safe.directory `pwd` - name: Check for uncommited changes diff --git a/.gitmodules b/.gitmodules index ac8f8bde39fbe8..fdfac588c0eb35 100644 --- a/.gitmodules +++ b/.gitmodules @@ -54,7 +54,7 @@ path = third_party/freertos/repo url = https://github.com/FreeRTOS/FreeRTOS-Kernel.git branch = V10.3.1-kernel-only - platforms = ameba,cc13xx_26xx,bouffalolab,efr32,esp32,k32w,infineon,qpg,cc32xx,silabs_docker + platforms = ameba,cc13xx_26xx,bouffalolab,esp32,k32w,infineon,qpg,cc32xx [submodule "simw-top-mini"] path = third_party/simw-top-mini/repo url = https://github.com/NXP/plug-and-trust.git @@ -72,7 +72,7 @@ path = third_party/openthread/ot-efr32 url = https://github.com/SiliconLabs/ot-efr32.git branch = matter_sve - platforms = efr32,silabs_docker + platforms = silabs,silabs_docker [submodule "third_party/openthread/ot-ifx"] path = third_party/openthread/ot-ifx url = https://github.com/Infineon/ot-ifx-release.git @@ -235,22 +235,22 @@ path = third_party/silabs/matter_support url = https://github.com/SiliconLabs/sdk_support.git branch = main - platforms = efr32,silabs_docker + platforms = silabs,silabs_docker [submodule "third_party/silabs/gecko_sdk"] path = third_party/silabs/gecko_sdk url = https://github.com/SiliconLabs/gecko_sdk.git branch = v4.3.2 - platforms = efr32 + platforms = silabs [submodule "third_party/silabs/wiseconnect-wifi-bt-sdk"] path = third_party/silabs/wiseconnect-wifi-bt-sdk url = https://github.com/SiliconLabs/wiseconnect-wifi-bt-sdk.git branch = 2.8.2 - platforms = efr32 + platforms = silabs [submodule "third_party/silabs/wifi_sdk"] path = third_party/silabs/wifi_sdk url = https://github.com/SiliconLabs/wiseconnect.git branch = v3.1.0 - platforms = efr32 + platforms = silabs [submodule "editline"] path = third_party/editline/repo url = https://github.com/troglobit/editline.git diff --git a/.restyled.yaml b/.restyled.yaml index aeedbacd16240c..ddea89227f3727 100644 --- a/.restyled.yaml +++ b/.restyled.yaml @@ -84,6 +84,8 @@ exclude: - "scripts/setup/bootstrap.sh" # tries to quote loop variable - "integrations/docker/build-all.sh" # tries to quote loop variable - "scripts/setup/pigweed.json" # TODO(#29547). This file is temporary copy from pigweed repo that has minor edits. No restyle help in diff. + - "docs/ERROR_CODES.md" # generated by scripts, not easy to align tables + - "docs/clusters.md" # generated by scripts, not easy to align tables changed_paths: maximum: 100000 diff --git a/.spellcheck.yml b/.spellcheck.yml index 28915deea38167..e3e470a696bbeb 100644 --- a/.spellcheck.yml +++ b/.spellcheck.yml @@ -65,6 +65,6 @@ matrix: # converts markdown to HTML - pyspelling.filters.markdown: sources: - - '**/*.md|!third_party/**|!examples/common/**/repo/**|!docs/ERROR_CODES.md' + - '**/*.md|!third_party/**|!examples/common/**/repo/**|!docs/ERROR_CODES.md|!docs/clusters.md' aspell: ignore-case: true diff --git a/BUILD.gn b/BUILD.gn index 8c7c5bd4f32c7c..587d3df973c7a9 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -37,6 +37,10 @@ import("${build_root}/config/compiler/compiler.gni") import("//src/crypto/crypto.gni") +if (chip_with_lwip) { + import("//build_overrides/lwip.gni") +} + if (current_toolchain != "${dir_pw_toolchain}/default:default") { declare_args() { chip_enable_python_modules = @@ -146,13 +150,13 @@ if (current_toolchain != "${dir_pw_toolchain}/default:default") { if (chip_build_tests) { deps += [ "//src:tests" ] - if (current_os == "android") { + if (current_os == "android" && current_toolchain == default_toolchain) { deps += [ "${chip_root}/build/chip/java/tests:java_build_test" ] } } if (chip_with_lwip) { - deps += [ "${chip_root}/src/lwip" ] + deps += [ "${lwip_root}:lwip" ] } if (chip_build_tools) { diff --git a/build/chip/java/kotlinc_runner.py b/build/chip/java/kotlinc_runner.py index 07d4aabe79a880..da8078127aeaae 100755 --- a/build/chip/java/kotlinc_runner.py +++ b/build/chip/java/kotlinc_runner.py @@ -127,6 +127,9 @@ def main(): if classpath: kotlin_args += ["-classpath", classpath] + kotlin_args += ["-J-Xms256m", "-J-Xmx4096m", "-J-XX:MaxPermSize=350m", + "-J-XX:ReservedCodeCacheSize=225m", "-J-XX:+UseCompressedOops"] + retcode = subprocess.check_call(kotlin_args + args.rest) if retcode != EXIT_SUCCESS: return retcode diff --git a/config/esp32/components/chip/CMakeLists.txt b/config/esp32/components/chip/CMakeLists.txt index b2058fe75df41c..0ce9cb54933bed 100644 --- a/config/esp32/components/chip/CMakeLists.txt +++ b/config/esp32/components/chip/CMakeLists.txt @@ -38,12 +38,9 @@ if(NOT "${IDF_TARGET}" STREQUAL "esp32h2") endif() if (NOT CMAKE_BUILD_EARLY_EXPANSION) - if (CONFIG_COMPILER_OPTIMIZATION_DEFAULT OR CONFIG_COMPILER_OPTIMIZATION_NONE) + if (CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE) set(is_debug TRUE) else() - if (NOT CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE) - message(FATAL_ERROR "CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE shall be set") - endif() set(is_debug FALSE) endif() endif() @@ -265,6 +262,10 @@ if (CONFIG_ENABLE_ESP_INSIGHTS_TRACE) chip_gn_arg_append("matter_trace_config" "\"${CHIP_ROOT}/src/tracing/esp32_trace:esp32_trace_tracing\"") endif() +if (CONFIG_ENABLE_ESP_INSIGHTS_SYSTEM_STATS) + chip_gn_arg_append("matter_enable_esp_insights_system_stats" "true") +endif() + if (CONFIG_USE_ESP32_ECDSA_PERIPHERAL) chip_gn_arg_append("chip_use_esp32_ecdsa_peripheral" "true") endif() @@ -492,7 +493,7 @@ foreach(phy_blob ${phy_blobs}) list(APPEND chip_libraries "${esp_phy_dir}/lib/${target_name}/lib${phy_blob}.a") endforeach() -set(components_to_link esp_event hal esp_system soc efuse vfs driver esp_coex freertos) +set(components_to_link esp_event hal esp_system soc efuse vfs driver esp_coex freertos esp_timer) idf_build_get_property(build_components BUILD_COMPONENTS) foreach(component ${components_to_link}) # Some of the components are not present in IDF v4.x diff --git a/config/esp32/components/chip/Kconfig b/config/esp32/components/chip/Kconfig index b73398bca4c2bf..ec2ab1a6b26d64 100644 --- a/config/esp32/components/chip/Kconfig +++ b/config/esp32/components/chip/Kconfig @@ -876,6 +876,12 @@ menu "CHIP Device Layer" Enabling the above option will enable the esp32 specific tracing functionality and report the diagnostic information to the insights cloud. + config ENABLE_ESP_INSIGHTS_SYSTEM_STATS + bool "Enable System Stats for insights" + depends on ESP_INSIGHTS_ENABLED + default n + help + This option enables the system statistics to be sent to the insights cloud. endmenu diff --git a/config/nrfconnect/chip-module/CMakeLists.txt b/config/nrfconnect/chip-module/CMakeLists.txt index 0001ff78309a53..81f7769ac21094 100644 --- a/config/nrfconnect/chip-module/CMakeLists.txt +++ b/config/nrfconnect/chip-module/CMakeLists.txt @@ -136,12 +136,11 @@ matter_add_gn_arg_bool ("chip_malloc_sys_heap" CONFIG_CHIP_MA matter_add_gn_arg_bool ("chip_enable_wifi" CONFIG_WIFI_NRF700X) matter_add_gn_arg_bool ("chip_system_config_provide_statistics" CONFIG_CHIP_STATISTICS) matter_add_gn_arg_bool ("chip_enable_icd_server" CONFIG_CHIP_ENABLE_ICD_SUPPORT) +matter_add_gn_arg_bool ("chip_enable_factory_data" CONFIG_CHIP_FACTORY_DATA) -if (CONFIG_CHIP_FACTORY_DATA) - matter_add_gn_arg_bool("chip_use_transitional_commissionable_data_provider" FALSE) - matter_add_gn_arg_bool("chip_enable_factory_data" TRUE) -elseif (CONFIG_CHIP_FACTORY_DATA_CUSTOM_BACKEND) - matter_add_gn_arg_bool("chip_use_transitional_commissionable_data_provider" FALSE) +if (CONFIG_CHIP_FACTORY_DATA OR CONFIG_CHIP_FACTORY_DATA_CUSTOM_BACKEND) + matter_add_gn_arg_bool("chip_use_transitional_commissionable_data_provider" FALSE) + matter_add_gn_arg_bool("chip_use_transitional_device_instance_info_provider" FALSE) endif() if (CONFIG_CHIP_ROTATING_DEVICE_ID) diff --git a/config/telink/chip-module/CMakeLists.txt b/config/telink/chip-module/CMakeLists.txt index 8e798c058525c6..f9f4b933cccf5d 100644 --- a/config/telink/chip-module/CMakeLists.txt +++ b/config/telink/chip-module/CMakeLists.txt @@ -95,6 +95,7 @@ matter_add_gn_arg_bool ("chip_enable_openthread" CONFIG_NET_L2_ matter_add_gn_arg_bool ("chip_openthread_ftd" CONFIG_OPENTHREAD_FTD) matter_add_gn_arg_bool ("chip_config_network_layer_ble" CONFIG_BT) matter_add_gn_arg_bool ("chip_inet_config_enable_ipv4" CONFIG_NET_IPV4) +matter_add_gn_arg_bool ("chip_enable_nfc" CONFIG_CHIP_NFC_COMMISSIONING) matter_add_gn_arg_bool ("chip_enable_ota_requestor" CONFIG_CHIP_OTA_REQUESTOR) matter_add_gn_arg_bool ("chip_enable_bootloader_mcuboot" CONFIG_BOOTLOADER_MCUBOOT) matter_add_gn_arg_bool ("chip_inet_config_enable_tcp_endpoint" CONFIG_CHIP_BUILD_TESTS) diff --git a/config/telink/chip-module/Kconfig b/config/telink/chip-module/Kconfig index 93ebc31a0f426e..1148af804eee0b 100644 --- a/config/telink/chip-module/Kconfig +++ b/config/telink/chip-module/Kconfig @@ -31,6 +31,19 @@ config CHIP_APP_LOG_LEVEL option only within the application. To set the logging level for the Matter stack, use the MATTER_LOG_LEVEL configuration option. +config CHIP_NFC_COMMISSIONING + bool "Share onboarding payload in NFC tag" + default n + imply I2C + imply ST25DVXXKC + imply NFC + imply NFC_NDEF + imply NFC_NDEF_MSG + imply NFC_NDEF_RECORD + imply NFC_NDEF_URI_REC + imply NFC_NDEF_URI_MSG + help + Enables sharing the onboarding payload in the NFC tag. # See config/zephyr/Kconfig for full definition config CHIP_OTA_REQUESTOR diff --git a/config/telink/chip-module/Kconfig.defaults b/config/telink/chip-module/Kconfig.defaults index 54137bc281562b..c4ccd625b9cda7 100644 --- a/config/telink/chip-module/Kconfig.defaults +++ b/config/telink/chip-module/Kconfig.defaults @@ -209,6 +209,10 @@ config NVS_LOOKUP_CACHE_SIZE config SETTINGS_NVS_SECTOR_SIZE_MULT default 1 +# Set sector counter of NVS +config SETTINGS_NVS_SECTOR_COUNT + default 10 + # Enable OpenThread config NET_L2_OPENTHREAD diff --git a/data_model/clusters/AccountLogin.xml b/data_model/clusters/AccountLogin.xml index 3cd5c02590ea0a..cc7e74bf2256fd 100644 --- a/data_model/clusters/AccountLogin.xml +++ b/data_model/clusters/AccountLogin.xml @@ -1,4 +1,4 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +--> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data_model/clusters/Channel.xml b/data_model/clusters/Channel.xml index b75540d94a6baf..0f9d546fef27fa 100644 --- a/data_model/clusters/Channel.xml +++ b/data_model/clusters/Channel.xml @@ -1,59 +1,59 @@ - @@ -67,6 +67,12 @@ Davis, CA 95616, USA + + + + + + @@ -85,6 +91,161 @@ Davis, CA 95616, USA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -101,6 +262,12 @@ Davis, CA 95616, USA + + + + + + @@ -190,5 +357,94 @@ Davis, CA 95616, USA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data_model/clusters/ContentControl.xml b/data_model/clusters/ContentControl.xml index 3642777b46a76d..ff38faf1f10909 100644 --- a/data_model/clusters/ContentControl.xml +++ b/data_model/clusters/ContentControl.xml @@ -79,12 +79,12 @@ Davis, CA 95616, USA - + - + @@ -92,60 +92,66 @@ Davis, CA 95616, USA - + + - + + - - + + - + + - - + + - + + - + + - + + - + - + @@ -159,13 +165,13 @@ Davis, CA 95616, USA - + - + @@ -173,20 +179,12 @@ Davis, CA 95616, USA - + - - - - - + - - - - @@ -194,7 +192,7 @@ Davis, CA 95616, USA - + @@ -202,36 +200,44 @@ Davis, CA 95616, USA - + - - - - - + - + - - - - - + - + + + + + + + - + + + + + + + + + + + diff --git a/data_model/clusters/ContentLauncher.xml b/data_model/clusters/ContentLauncher.xml index 32b47a77c233a3..114c2e4d6e10b7 100644 --- a/data_model/clusters/ContentLauncher.xml +++ b/data_model/clusters/ContentLauncher.xml @@ -1,59 +1,59 @@ - @@ -67,6 +67,15 @@ Davis, CA 95616, USA + + + + + + + + + @@ -125,6 +134,15 @@ Davis, CA 95616, USA + + + + + + + + + @@ -136,6 +154,16 @@ Davis, CA 95616, USA + + + + + + + + + + @@ -144,6 +172,9 @@ Davis, CA 95616, USA + + + @@ -182,6 +213,42 @@ Davis, CA 95616, USA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -262,6 +329,12 @@ Davis, CA 95616, USA + + + + + + @@ -277,6 +350,9 @@ Davis, CA 95616, USA + + + diff --git a/data_model/clusters/DiagnosticsGeneral.xml b/data_model/clusters/DiagnosticsGeneral.xml index ea4ce75cd549d9..9200a44cf971c1 100644 --- a/data_model/clusters/DiagnosticsGeneral.xml +++ b/data_model/clusters/DiagnosticsGeneral.xml @@ -258,6 +258,9 @@ Davis, CA 95616, USA + + + diff --git a/data_model/clusters/ICDManagement.xml b/data_model/clusters/ICDManagement.xml new file mode 100644 index 00000000000000..711b98b49b104c --- /dev/null +++ b/data_model/clusters/ICDManagement.xml @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data_model/clusters/KeypadInput.xml b/data_model/clusters/KeypadInput.xml index 30936891c6c71d..7179ae676b65fe 100644 --- a/data_model/clusters/KeypadInput.xml +++ b/data_model/clusters/KeypadInput.xml @@ -72,7 +72,7 @@ Davis, CA 95616, USA - + @@ -348,7 +348,7 @@ Davis, CA 95616, USA - + diff --git a/data_model/clusters/MediaPlayback.xml b/data_model/clusters/MediaPlayback.xml index 21001d287f6120..94987fbcfdb449 100644 --- a/data_model/clusters/MediaPlayback.xml +++ b/data_model/clusters/MediaPlayback.xml @@ -1,59 +1,59 @@ - @@ -61,10 +61,16 @@ Davis, CA 95616, USA - + - + + + + + + + @@ -118,6 +124,86 @@ Davis, CA 95616, USA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -172,6 +258,38 @@ Davis, CA 95616, USA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -203,12 +321,22 @@ Davis, CA 95616, USA + + + + + + + + + + @@ -244,5 +372,88 @@ Davis, CA 95616, USA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data_model/clusters/MicrowaveOvenControl.xml b/data_model/clusters/MicrowaveOvenControl.xml index e97821db771a77..3f127cebd90367 100644 --- a/data_model/clusters/MicrowaveOvenControl.xml +++ b/data_model/clusters/MicrowaveOvenControl.xml @@ -55,7 +55,7 @@ Connectivity Standards Alliance 508 Second Street, Suite 206 Davis, CA 95616, USA --> - + diff --git a/data_model/clusters/PowerSourceCluster.xml b/data_model/clusters/PowerSourceCluster.xml index f7b5da82ce20fc..27caade3c634a3 100644 --- a/data_model/clusters/PowerSourceCluster.xml +++ b/data_model/clusters/PowerSourceCluster.xml @@ -69,24 +69,24 @@ Davis, CA 95616, USA - + - + - + - + - + - + - + - + diff --git a/data_model/clusters/TargetNavigator.xml b/data_model/clusters/TargetNavigator.xml index ffb6955d27bf3c..d93a7de1fc011c 100644 --- a/data_model/clusters/TargetNavigator.xml +++ b/data_model/clusters/TargetNavigator.xml @@ -1,59 +1,59 @@ - @@ -115,4 +115,21 @@ Davis, CA 95616, USA + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data_model/clusters/TimeSync.xml b/data_model/clusters/TimeSync.xml index c7ad7b0032aaf7..4515d44012085e 100644 --- a/data_model/clusters/TimeSync.xml +++ b/data_model/clusters/TimeSync.xml @@ -57,7 +57,7 @@ Connectivity Standards Alliance 508 Second Street, Suite 206 Davis, CA 95616, USA --> - + diff --git a/data_model/spec_sha b/data_model/spec_sha index 03c3b85baa2427..bc073c1d35bf52 100644 --- a/data_model/spec_sha +++ b/data_model/spec_sha @@ -1 +1 @@ -49003c1b2337aa51dad227977981b763667d1f75 +0267d8197ec5c00d0220fdef7950750b63e08c1f diff --git a/docs/ERROR_CODES.md b/docs/ERROR_CODES.md index 38aa66f59f34d0..6719af063f41a5 100644 --- a/docs/ERROR_CODES.md +++ b/docs/ERROR_CODES.md @@ -4,7 +4,6 @@ This file was **AUTOMATICALLY** generated by `python scripts/error_table.py > docs/ERROR_CODES.md`. DO NOT EDIT BY HAND! ## Table of contents - - [SDK Core errors: range `0x000..0x0FF`](#sdk-core-errors) - [SDK Inet Layer errors: range `0x100..0x1FF`](#sdk-inet-layer-errors) - [SDK Device Layer errors: range `0x200..0x2FF`](#sdk-device-layer-errors) @@ -14,242 +13,248 @@ This file was **AUTOMATICALLY** generated by ## SDK Core errors -| Decimal | Hex | Name | -| ------- | ---- | -------------------------------------------------- | -| 0 | 0x00 | `CHIP_NO_ERROR` | -| 1 | 0x01 | `CHIP_ERROR_SENDING_BLOCKED` | -| 2 | 0x02 | `CHIP_ERROR_CONNECTION_ABORTED` | -| 3 | 0x03 | `CHIP_ERROR_INCORRECT_STATE` | -| 4 | 0x04 | `CHIP_ERROR_MESSAGE_TOO_LONG` | -| 5 | 0x05 | `CHIP_ERROR_RECURSION_DEPTH_LIMIT` | -| 6 | 0x06 | `CHIP_ERROR_TOO_MANY_UNSOLICITED_MESSAGE_HANDLERS` | -| 7 | 0x07 | `CHIP_ERROR_NO_UNSOLICITED_MESSAGE_HANDLER` | -| 8 | 0x08 | `CHIP_ERROR_NO_CONNECTION_HANDLER` | -| 9 | 0x09 | `CHIP_ERROR_TOO_MANY_PEER_NODES` | -| 10 | 0x0A | `CHIP_ERROR_SENTINEL` | -| 11 | 0x0B | `CHIP_ERROR_NO_MEMORY` | -| 12 | 0x0C | `CHIP_ERROR_NO_MESSAGE_HANDLER` | -| 13 | 0x0D | `CHIP_ERROR_MESSAGE_INCOMPLETE` | -| 14 | 0x0E | `CHIP_ERROR_DATA_NOT_ALIGNED` | -| 15 | 0x0F | `CHIP_ERROR_UNKNOWN_KEY_TYPE` | -| 16 | 0x10 | `CHIP_ERROR_KEY_NOT_FOUND` | -| 17 | 0x11 | `CHIP_ERROR_WRONG_ENCRYPTION_TYPE` | -| 19 | 0x13 | `CHIP_ERROR_INTEGRITY_CHECK_FAILED` | -| 20 | 0x14 | `CHIP_ERROR_INVALID_SIGNATURE` | -| 23 | 0x17 | `CHIP_ERROR_UNSUPPORTED_SIGNATURE_TYPE` | -| 24 | 0x18 | `CHIP_ERROR_INVALID_MESSAGE_LENGTH` | -| 25 | 0x19 | `CHIP_ERROR_BUFFER_TOO_SMALL` | -| 26 | 0x1A | `CHIP_ERROR_DUPLICATE_KEY_ID` | -| 27 | 0x1B | `CHIP_ERROR_WRONG_KEY_TYPE` | -| 28 | 0x1C | `CHIP_ERROR_WELL_UNINITIALIZED` | -| 29 | 0x1D | `CHIP_ERROR_WELL_EMPTY` | -| 30 | 0x1E | `CHIP_ERROR_INVALID_STRING_LENGTH` | -| 31 | 0x1F | `CHIP_ERROR_INVALID_LIST_LENGTH` | -| 33 | 0x21 | `CHIP_ERROR_END_OF_TLV` | -| 34 | 0x22 | `CHIP_ERROR_TLV_UNDERRUN` | -| 35 | 0x23 | `CHIP_ERROR_INVALID_TLV_ELEMENT` | -| 36 | 0x24 | `CHIP_ERROR_INVALID_TLV_TAG` | -| 37 | 0x25 | `CHIP_ERROR_UNKNOWN_IMPLICIT_TLV_TAG` | -| 38 | 0x26 | `CHIP_ERROR_WRONG_TLV_TYPE` | -| 39 | 0x27 | `CHIP_ERROR_TLV_CONTAINER_OPEN` | -| 42 | 0x2A | `CHIP_ERROR_INVALID_MESSAGE_TYPE` | -| 43 | 0x2B | `CHIP_ERROR_UNEXPECTED_TLV_ELEMENT` | -| 45 | 0x2D | `CHIP_ERROR_NOT_IMPLEMENTED` | -| 46 | 0x2E | `CHIP_ERROR_INVALID_ADDRESS` | -| 47 | 0x2F | `CHIP_ERROR_INVALID_ARGUMENT` | -| 48 | 0x30 | `CHIP_ERROR_INVALID_PATH_LIST` | -| 49 | 0x31 | `CHIP_ERROR_INVALID_DATA_LIST` | -| 50 | 0x32 | `CHIP_ERROR_TIMEOUT` | -| 51 | 0x33 | `CHIP_ERROR_INVALID_DEVICE_DESCRIPTOR` | -| 56 | 0x38 | `CHIP_ERROR_INVALID_PASE_PARAMETER` | -| 59 | 0x3B | `CHIP_ERROR_INVALID_USE_OF_SESSION_KEY` | -| 60 | 0x3C | `CHIP_ERROR_CONNECTION_CLOSED_UNEXPECTEDLY` | -| 61 | 0x3D | `CHIP_ERROR_MISSING_TLV_ELEMENT` | -| 62 | 0x3E | `CHIP_ERROR_RANDOM_DATA_UNAVAILABLE` | -| 65 | 0x41 | `CHIP_ERROR_HOST_PORT_LIST_EMPTY` | -| 69 | 0x45 | `CHIP_ERROR_FORCED_RESET` | -| 70 | 0x46 | `CHIP_ERROR_NO_ENDPOINT` | -| 71 | 0x47 | `CHIP_ERROR_INVALID_DESTINATION_NODE_ID` | -| 72 | 0x48 | `CHIP_ERROR_NOT_CONNECTED` | -| 74 | 0x4A | `CHIP_ERROR_CA_CERT_NOT_FOUND` | -| 75 | 0x4B | `CHIP_ERROR_CERT_PATH_LEN_CONSTRAINT_EXCEEDED` | -| 76 | 0x4C | `CHIP_ERROR_CERT_PATH_TOO_LONG` | -| 77 | 0x4D | `CHIP_ERROR_CERT_USAGE_NOT_ALLOWED` | -| 78 | 0x4E | `CHIP_ERROR_CERT_EXPIRED` | -| 79 | 0x4F | `CHIP_ERROR_CERT_NOT_VALID_YET` | -| 80 | 0x50 | `CHIP_ERROR_UNSUPPORTED_CERT_FORMAT` | -| 81 | 0x51 | `CHIP_ERROR_UNSUPPORTED_ELLIPTIC_CURVE` | -| 83 | 0x53 | `CHIP_ERROR_CERT_NOT_FOUND` | -| 84 | 0x54 | `CHIP_ERROR_INVALID_CASE_PARAMETER` | -| 86 | 0x56 | `CHIP_ERROR_CERT_LOAD_FAILED` | -| 87 | 0x57 | `CHIP_ERROR_CERT_NOT_TRUSTED` | -| 89 | 0x59 | `CHIP_ERROR_WRONG_CERT_DN` | -| 92 | 0x5C | `CHIP_ERROR_WRONG_NODE_ID` | -| 100 | 0x64 | `CHIP_ERROR_RETRANS_TABLE_FULL` | -| 104 | 0x68 | `CHIP_ERROR_TRANSACTION_CANCELED` | -| 107 | 0x6B | `CHIP_ERROR_INVALID_SUBSCRIPTION` | -| 108 | 0x6C | `CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE` | -| 112 | 0x70 | `CHIP_ERROR_UNSOLICITED_MSG_NO_ORIGINATOR` | -| 113 | 0x71 | `CHIP_ERROR_INVALID_FABRIC_INDEX` | -| 114 | 0x72 | `CHIP_ERROR_TOO_MANY_CONNECTIONS` | -| 115 | 0x73 | `CHIP_ERROR_SHUT_DOWN` | -| 116 | 0x74 | `CHIP_ERROR_CANCELLED` | -| 118 | 0x76 | `CHIP_ERROR_TLV_TAG_NOT_FOUND` | -| 119 | 0x77 | `CHIP_ERROR_MISSING_SECURE_SESSION` | -| 120 | 0x78 | `CHIP_ERROR_INVALID_ADMIN_SUBJECT` | -| 121 | 0x79 | `CHIP_ERROR_INSUFFICIENT_PRIVILEGE` | -| 125 | 0x7D | `CHIP_ERROR_MESSAGE_COUNTER_EXHAUSTED` | -| 126 | 0x7E | `CHIP_ERROR_FABRIC_EXISTS` | -| 128 | 0x80 | `CHIP_ERROR_WRONG_ENCRYPTION_TYPE_FROM_PEER` | -| 133 | 0x85 | `CHIP_ERROR_INVALID_KEY_ID` | -| 134 | 0x86 | `CHIP_ERROR_INVALID_TIME` | -| 142 | 0x8E | `CHIP_ERROR_SCHEMA_MISMATCH` | -| 143 | 0x8F | `CHIP_ERROR_INVALID_INTEGER_VALUE` | -| 146 | 0x92 | `CHIP_ERROR_BAD_REQUEST` | -| 157 | 0x9D | `CHIP_ERROR_WRONG_CERT_TYPE` | -| 159 | 0x9F | `CHIP_ERROR_PERSISTED_STORAGE_FAILED` | -| 160 | 0xA0 | `CHIP_ERROR_PERSISTED_STORAGE_VALUE_NOT_FOUND` | -| 161 | 0xA1 | `CHIP_ERROR_IM_FABRIC_DELETED` | -| 164 | 0xA4 | `CHIP_ERROR_IN_PROGRESS` | -| 165 | 0xA5 | `CHIP_ERROR_ACCESS_DENIED` | -| 166 | 0xA6 | `CHIP_ERROR_UNKNOWN_RESOURCE_ID` | -| 167 | 0xA7 | `CHIP_ERROR_VERSION_MISMATCH` | -| 171 | 0xAB | `CHIP_ERROR_EVENT_ID_FOUND` | -| 172 | 0xAC | `CHIP_ERROR_INTERNAL` | -| 173 | 0xAD | `CHIP_ERROR_OPEN_FAILED` | -| 174 | 0xAE | `CHIP_ERROR_READ_FAILED` | -| 175 | 0xAF | `CHIP_ERROR_WRITE_FAILED` | -| 176 | 0xB0 | `CHIP_ERROR_DECODE_FAILED` | -| 180 | 0xB4 | `CHIP_ERROR_MDNS_COLLISION` | -| 181 | 0xB5 | `CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_PATH_IB` | -| 182 | 0xB6 | `CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB` | -| 185 | 0xB9 | `CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_IB` | -| 186 | 0xBA | `CHIP_ERROR_IM_MALFORMED_EVENT_DATA_IB` | -| 188 | 0xBC | `CHIP_ERROR_PEER_NODE_NOT_FOUND` | -| 189 | 0xBD | `CHIP_ERROR_HSM` | -| 191 | 0xBF | `CHIP_ERROR_REAL_TIME_NOT_SYNCED` | -| 192 | 0xC0 | `CHIP_ERROR_UNEXPECTED_EVENT` | -| 193 | 0xC1 | `CHIP_ERROR_ENDPOINT_POOL_FULL` | -| 194 | 0xC2 | `CHIP_ERROR_INBOUND_MESSAGE_TOO_BIG` | -| 195 | 0xC3 | `CHIP_ERROR_OUTBOUND_MESSAGE_TOO_BIG` | -| 196 | 0xC4 | `CHIP_ERROR_DUPLICATE_MESSAGE_RECEIVED` | -| 197 | 0xC5 | `CHIP_ERROR_INVALID_PUBLIC_KEY` | -| 198 | 0xC6 | `CHIP_ERROR_FABRIC_MISMATCH_ON_ICA` | -| 201 | 0xC9 | `CHIP_ERROR_NO_SHARED_TRUSTED_ROOT` | -| 202 | 0xCA | `CHIP_ERROR_IM_STATUS_CODE_RECEIVED` | -| 215 | 0xD7 | `CHIP_ERROR_IM_MALFORMED_DATA_VERSION_FILTER_IB` | -| 216 | 0xD8 | `CHIP_ERROR_NOT_FOUND` | -| 218 | 0xDA | `CHIP_ERROR_INVALID_FILE_IDENTIFIER` | -| 219 | 0xDB | `CHIP_ERROR_BUSY` | -| 220 | 0xDC | `CHIP_ERROR_MAX_RETRY_EXCEEDED` | -| 221 | 0xDD | `CHIP_ERROR_PROVIDER_LIST_EXHAUSTED` | -| 223 | 0xDF | `CHIP_ERROR_INVALID_SCHEME_PREFIX` | -| 224 | 0xE0 | `CHIP_ERROR_MISSING_URI_SEPARATOR` | -| 225 | 0xE1 | `CHIP_ERROR_HANDLER_NOT_SET` | +| Decimal | Hex | Name | +|-----------|-------|----------------------------------------------------| +| 0 | 0x00 | `CHIP_NO_ERROR` | +| 1 | 0x01 | `CHIP_ERROR_SENDING_BLOCKED` | +| 2 | 0x02 | `CHIP_ERROR_CONNECTION_ABORTED` | +| 3 | 0x03 | `CHIP_ERROR_INCORRECT_STATE` | +| 4 | 0x04 | `CHIP_ERROR_MESSAGE_TOO_LONG` | +| 5 | 0x05 | `CHIP_ERROR_RECURSION_DEPTH_LIMIT` | +| 6 | 0x06 | `CHIP_ERROR_TOO_MANY_UNSOLICITED_MESSAGE_HANDLERS` | +| 7 | 0x07 | `CHIP_ERROR_NO_UNSOLICITED_MESSAGE_HANDLER` | +| 8 | 0x08 | `CHIP_ERROR_NO_CONNECTION_HANDLER` | +| 9 | 0x09 | `CHIP_ERROR_TOO_MANY_PEER_NODES` | +| 10 | 0x0A | `CHIP_ERROR_SENTINEL` | +| 11 | 0x0B | `CHIP_ERROR_NO_MEMORY` | +| 12 | 0x0C | `CHIP_ERROR_NO_MESSAGE_HANDLER` | +| 13 | 0x0D | `CHIP_ERROR_MESSAGE_INCOMPLETE` | +| 14 | 0x0E | `CHIP_ERROR_DATA_NOT_ALIGNED` | +| 15 | 0x0F | `CHIP_ERROR_UNKNOWN_KEY_TYPE` | +| 16 | 0x10 | `CHIP_ERROR_KEY_NOT_FOUND` | +| 17 | 0x11 | `CHIP_ERROR_WRONG_ENCRYPTION_TYPE` | +| 18 | 0x12 | `CHIP_ERROR_INVALID_UTF8` | +| 19 | 0x13 | `CHIP_ERROR_INTEGRITY_CHECK_FAILED` | +| 20 | 0x14 | `CHIP_ERROR_INVALID_SIGNATURE` | +| 21 | 0x15 | `CHIP_ERROR_INVALID_TLV_CHAR_STRING` | +| 23 | 0x17 | `CHIP_ERROR_UNSUPPORTED_SIGNATURE_TYPE` | +| 24 | 0x18 | `CHIP_ERROR_INVALID_MESSAGE_LENGTH` | +| 25 | 0x19 | `CHIP_ERROR_BUFFER_TOO_SMALL` | +| 26 | 0x1A | `CHIP_ERROR_DUPLICATE_KEY_ID` | +| 27 | 0x1B | `CHIP_ERROR_WRONG_KEY_TYPE` | +| 28 | 0x1C | `CHIP_ERROR_UNINITIALIZED` | +| 30 | 0x1E | `CHIP_ERROR_INVALID_STRING_LENGTH` | +| 31 | 0x1F | `CHIP_ERROR_INVALID_LIST_LENGTH` | +| 33 | 0x21 | `CHIP_ERROR_END_OF_TLV` | +| 34 | 0x22 | `CHIP_ERROR_TLV_UNDERRUN` | +| 35 | 0x23 | `CHIP_ERROR_INVALID_TLV_ELEMENT` | +| 36 | 0x24 | `CHIP_ERROR_INVALID_TLV_TAG` | +| 37 | 0x25 | `CHIP_ERROR_UNKNOWN_IMPLICIT_TLV_TAG` | +| 38 | 0x26 | `CHIP_ERROR_WRONG_TLV_TYPE` | +| 39 | 0x27 | `CHIP_ERROR_TLV_CONTAINER_OPEN` | +| 42 | 0x2A | `CHIP_ERROR_INVALID_MESSAGE_TYPE` | +| 43 | 0x2B | `CHIP_ERROR_UNEXPECTED_TLV_ELEMENT` | +| 45 | 0x2D | `CHIP_ERROR_NOT_IMPLEMENTED` | +| 46 | 0x2E | `CHIP_ERROR_INVALID_ADDRESS` | +| 47 | 0x2F | `CHIP_ERROR_INVALID_ARGUMENT` | +| 48 | 0x30 | `CHIP_ERROR_INVALID_PATH_LIST` | +| 49 | 0x31 | `CHIP_ERROR_INVALID_DATA_LIST` | +| 50 | 0x32 | `CHIP_ERROR_TIMEOUT` | +| 51 | 0x33 | `CHIP_ERROR_INVALID_DEVICE_DESCRIPTOR` | +| 56 | 0x38 | `CHIP_ERROR_INVALID_PASE_PARAMETER` | +| 59 | 0x3B | `CHIP_ERROR_INVALID_USE_OF_SESSION_KEY` | +| 60 | 0x3C | `CHIP_ERROR_CONNECTION_CLOSED_UNEXPECTEDLY` | +| 61 | 0x3D | `CHIP_ERROR_MISSING_TLV_ELEMENT` | +| 62 | 0x3E | `CHIP_ERROR_RANDOM_DATA_UNAVAILABLE` | +| 65 | 0x41 | `CHIP_ERROR_HOST_PORT_LIST_EMPTY` | +| 69 | 0x45 | `CHIP_ERROR_FORCED_RESET` | +| 70 | 0x46 | `CHIP_ERROR_NO_ENDPOINT` | +| 71 | 0x47 | `CHIP_ERROR_INVALID_DESTINATION_NODE_ID` | +| 72 | 0x48 | `CHIP_ERROR_NOT_CONNECTED` | +| 74 | 0x4A | `CHIP_ERROR_CA_CERT_NOT_FOUND` | +| 75 | 0x4B | `CHIP_ERROR_CERT_PATH_LEN_CONSTRAINT_EXCEEDED` | +| 76 | 0x4C | `CHIP_ERROR_CERT_PATH_TOO_LONG` | +| 77 | 0x4D | `CHIP_ERROR_CERT_USAGE_NOT_ALLOWED` | +| 78 | 0x4E | `CHIP_ERROR_CERT_EXPIRED` | +| 79 | 0x4F | `CHIP_ERROR_CERT_NOT_VALID_YET` | +| 80 | 0x50 | `CHIP_ERROR_UNSUPPORTED_CERT_FORMAT` | +| 81 | 0x51 | `CHIP_ERROR_UNSUPPORTED_ELLIPTIC_CURVE` | +| 83 | 0x53 | `CHIP_ERROR_CERT_NOT_FOUND` | +| 84 | 0x54 | `CHIP_ERROR_INVALID_CASE_PARAMETER` | +| 86 | 0x56 | `CHIP_ERROR_CERT_LOAD_FAILED` | +| 87 | 0x57 | `CHIP_ERROR_CERT_NOT_TRUSTED` | +| 89 | 0x59 | `CHIP_ERROR_WRONG_CERT_DN` | +| 92 | 0x5C | `CHIP_ERROR_WRONG_NODE_ID` | +| 100 | 0x64 | `CHIP_ERROR_RETRANS_TABLE_FULL` | +| 104 | 0x68 | `CHIP_ERROR_TRANSACTION_CANCELED` | +| 107 | 0x6B | `CHIP_ERROR_INVALID_SUBSCRIPTION` | +| 108 | 0x6C | `CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE` | +| 112 | 0x70 | `CHIP_ERROR_UNSOLICITED_MSG_NO_ORIGINATOR` | +| 113 | 0x71 | `CHIP_ERROR_INVALID_FABRIC_INDEX` | +| 114 | 0x72 | `CHIP_ERROR_TOO_MANY_CONNECTIONS` | +| 115 | 0x73 | `CHIP_ERROR_SHUT_DOWN` | +| 116 | 0x74 | `CHIP_ERROR_CANCELLED` | +| 118 | 0x76 | `CHIP_ERROR_TLV_TAG_NOT_FOUND` | +| 119 | 0x77 | `CHIP_ERROR_MISSING_SECURE_SESSION` | +| 120 | 0x78 | `CHIP_ERROR_INVALID_ADMIN_SUBJECT` | +| 121 | 0x79 | `CHIP_ERROR_INSUFFICIENT_PRIVILEGE` | +| 125 | 0x7D | `CHIP_ERROR_MESSAGE_COUNTER_EXHAUSTED` | +| 126 | 0x7E | `CHIP_ERROR_FABRIC_EXISTS` | +| 128 | 0x80 | `CHIP_ERROR_WRONG_ENCRYPTION_TYPE_FROM_PEER` | +| 133 | 0x85 | `CHIP_ERROR_INVALID_KEY_ID` | +| 134 | 0x86 | `CHIP_ERROR_INVALID_TIME` | +| 142 | 0x8E | `CHIP_ERROR_SCHEMA_MISMATCH` | +| 143 | 0x8F | `CHIP_ERROR_INVALID_INTEGER_VALUE` | +| 146 | 0x92 | `CHIP_ERROR_BAD_REQUEST` | +| 157 | 0x9D | `CHIP_ERROR_WRONG_CERT_TYPE` | +| 159 | 0x9F | `CHIP_ERROR_PERSISTED_STORAGE_FAILED` | +| 160 | 0xA0 | `CHIP_ERROR_PERSISTED_STORAGE_VALUE_NOT_FOUND` | +| 161 | 0xA1 | `CHIP_ERROR_IM_FABRIC_DELETED` | +| 164 | 0xA4 | `CHIP_ERROR_IN_PROGRESS` | +| 165 | 0xA5 | `CHIP_ERROR_ACCESS_DENIED` | +| 166 | 0xA6 | `CHIP_ERROR_UNKNOWN_RESOURCE_ID` | +| 167 | 0xA7 | `CHIP_ERROR_VERSION_MISMATCH` | +| 171 | 0xAB | `CHIP_ERROR_EVENT_ID_FOUND` | +| 172 | 0xAC | `CHIP_ERROR_INTERNAL` | +| 173 | 0xAD | `CHIP_ERROR_OPEN_FAILED` | +| 174 | 0xAE | `CHIP_ERROR_READ_FAILED` | +| 175 | 0xAF | `CHIP_ERROR_WRITE_FAILED` | +| 176 | 0xB0 | `CHIP_ERROR_DECODE_FAILED` | +| 179 | 0xB3 | `CHIP_ERROR_DNS_SD_UNAUTHORIZED` | +| 180 | 0xB4 | `CHIP_ERROR_MDNS_COLLISION` | +| 181 | 0xB5 | `CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_PATH_IB` | +| 182 | 0xB6 | `CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB` | +| 185 | 0xB9 | `CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_IB` | +| 186 | 0xBA | `CHIP_ERROR_IM_MALFORMED_EVENT_DATA_IB` | +| 187 | 0xBB | `CHIP_ERROR_MAXIMUM_PATHS_PER_INVOKE_EXCEEDED` | +| 188 | 0xBC | `CHIP_ERROR_PEER_NODE_NOT_FOUND` | +| 189 | 0xBD | `CHIP_ERROR_HSM` | +| 191 | 0xBF | `CHIP_ERROR_REAL_TIME_NOT_SYNCED` | +| 192 | 0xC0 | `CHIP_ERROR_UNEXPECTED_EVENT` | +| 193 | 0xC1 | `CHIP_ERROR_ENDPOINT_POOL_FULL` | +| 194 | 0xC2 | `CHIP_ERROR_INBOUND_MESSAGE_TOO_BIG` | +| 195 | 0xC3 | `CHIP_ERROR_OUTBOUND_MESSAGE_TOO_BIG` | +| 196 | 0xC4 | `CHIP_ERROR_DUPLICATE_MESSAGE_RECEIVED` | +| 197 | 0xC5 | `CHIP_ERROR_INVALID_PUBLIC_KEY` | +| 198 | 0xC6 | `CHIP_ERROR_FABRIC_MISMATCH_ON_ICA` | +| 201 | 0xC9 | `CHIP_ERROR_NO_SHARED_TRUSTED_ROOT` | +| 202 | 0xCA | `CHIP_ERROR_IM_STATUS_CODE_RECEIVED` | +| 215 | 0xD7 | `CHIP_ERROR_IM_MALFORMED_DATA_VERSION_FILTER_IB` | +| 216 | 0xD8 | `CHIP_ERROR_NOT_FOUND` | +| 218 | 0xDA | `CHIP_ERROR_INVALID_FILE_IDENTIFIER` | +| 219 | 0xDB | `CHIP_ERROR_BUSY` | +| 220 | 0xDC | `CHIP_ERROR_MAX_RETRY_EXCEEDED` | +| 221 | 0xDD | `CHIP_ERROR_PROVIDER_LIST_EXHAUSTED` | +| 223 | 0xDF | `CHIP_ERROR_INVALID_SCHEME_PREFIX` | +| 224 | 0xE0 | `CHIP_ERROR_MISSING_URI_SEPARATOR` | +| 225 | 0xE1 | `CHIP_ERROR_HANDLER_NOT_SET` | ## SDK Inet Layer errors -| Decimal | Hex | Name | -| ------- | ----- | ----------------------------------------- | -| 257 | 0x101 | `INET_ERROR_WRONG_ADDRESS_TYPE` | -| 258 | 0x102 | `INET_ERROR_PEER_DISCONNECTED` | -| 265 | 0x109 | `INET_ERROR_HOST_NOT_FOUND` | -| 266 | 0x10A | `INET_ERROR_DNS_TRY_AGAIN` | -| 267 | 0x10B | `INET_ERROR_DNS_NO_RECOVERY` | -| 269 | 0x10D | `INET_ERROR_WRONG_PROTOCOL_TYPE` | -| 270 | 0x10E | `INET_ERROR_UNKNOWN_INTERFACE` | -| 272 | 0x110 | `INET_ERROR_ADDRESS_NOT_FOUND` | -| 273 | 0x111 | `INET_ERROR_HOST_NAME_TOO_LONG` | -| 274 | 0x112 | `INET_ERROR_INVALID_HOST_NAME` | -| 277 | 0x115 | `INET_ERROR_IDLE_TIMEOUT` | -| 279 | 0x117 | `INET_ERROR_INVALID_IPV6_PKT` | -| 280 | 0x118 | `INET_ERROR_INTERFACE_INIT_FAILURE` | -| 281 | 0x119 | `INET_ERROR_TCP_USER_TIMEOUT` | -| 282 | 0x11A | `INET_ERROR_TCP_CONNECT_TIMEOUT` | -| 283 | 0x11B | `INET_ERROR_INCOMPATIBLE_IP_ADDRESS_TYPE` | +| Decimal | Hex | Name | +|-----------|-------|-------------------------------------------| +| 257 | 0x101 | `INET_ERROR_WRONG_ADDRESS_TYPE` | +| 258 | 0x102 | `INET_ERROR_PEER_DISCONNECTED` | +| 265 | 0x109 | `INET_ERROR_HOST_NOT_FOUND` | +| 266 | 0x10A | `INET_ERROR_DNS_TRY_AGAIN` | +| 267 | 0x10B | `INET_ERROR_DNS_NO_RECOVERY` | +| 269 | 0x10D | `INET_ERROR_WRONG_PROTOCOL_TYPE` | +| 270 | 0x10E | `INET_ERROR_UNKNOWN_INTERFACE` | +| 272 | 0x110 | `INET_ERROR_ADDRESS_NOT_FOUND` | +| 273 | 0x111 | `INET_ERROR_HOST_NAME_TOO_LONG` | +| 274 | 0x112 | `INET_ERROR_INVALID_HOST_NAME` | +| 277 | 0x115 | `INET_ERROR_IDLE_TIMEOUT` | +| 279 | 0x117 | `INET_ERROR_INVALID_IPV6_PKT` | +| 280 | 0x118 | `INET_ERROR_INTERFACE_INIT_FAILURE` | +| 281 | 0x119 | `INET_ERROR_TCP_USER_TIMEOUT` | +| 282 | 0x11A | `INET_ERROR_TCP_CONNECT_TIMEOUT` | +| 283 | 0x11B | `INET_ERROR_INCOMPATIBLE_IP_ADDRESS_TYPE` | ## SDK Device Layer errors -| Decimal | Hex | Name | -| ------- | ----- | ------------------------------------------- | -| 513 | 0x201 | `CHIP_DEVICE_ERROR_CONFIG_NOT_FOUND` | -| 514 | 0x202 | `CHIP_DEVICE_ERROR_NOT_SERVICE_PROVISIONED` | -| 515 | 0x203 | `CHIP_DEVICE_ERROR_SOFTWARE_UPDATE_ABORTED` | -| 516 | 0x204 | `CHIP_DEVICE_ERROR_SOFTWARE_UPDATE_IGNORED` | +| Decimal | Hex | Name | +|-----------|-------|---------------------------------------------| +| 513 | 0x201 | `CHIP_DEVICE_ERROR_CONFIG_NOT_FOUND` | +| 514 | 0x202 | `CHIP_DEVICE_ERROR_NOT_SERVICE_PROVISIONED` | +| 515 | 0x203 | `CHIP_DEVICE_ERROR_SOFTWARE_UPDATE_ABORTED` | +| 516 | 0x204 | `CHIP_DEVICE_ERROR_SOFTWARE_UPDATE_IGNORED` | ## ASN1 Layer errors -| Decimal | Hex | Name | -| ------- | ----- | --------------------------------- | -| 768 | 0x300 | `ASN1_END` | -| 769 | 0x301 | `ASN1_ERROR_UNDERRUN` | -| 770 | 0x302 | `ASN1_ERROR_OVERFLOW` | -| 771 | 0x303 | `ASN1_ERROR_INVALID_STATE` | -| 772 | 0x304 | `ASN1_ERROR_MAX_DEPTH_EXCEEDED` | -| 773 | 0x305 | `ASN1_ERROR_INVALID_ENCODING` | -| 774 | 0x306 | `ASN1_ERROR_UNSUPPORTED_ENCODING` | -| 775 | 0x307 | `ASN1_ERROR_TAG_OVERFLOW` | -| 776 | 0x308 | `ASN1_ERROR_LENGTH_OVERFLOW` | -| 777 | 0x309 | `ASN1_ERROR_VALUE_OVERFLOW` | -| 778 | 0x30A | `ASN1_ERROR_UNKNOWN_OBJECT_ID` | +| Decimal | Hex | Name | +|-----------|-------|-----------------------------------| +| 768 | 0x300 | `ASN1_END` | +| 769 | 0x301 | `ASN1_ERROR_UNDERRUN` | +| 770 | 0x302 | `ASN1_ERROR_OVERFLOW` | +| 771 | 0x303 | `ASN1_ERROR_INVALID_STATE` | +| 772 | 0x304 | `ASN1_ERROR_MAX_DEPTH_EXCEEDED` | +| 773 | 0x305 | `ASN1_ERROR_INVALID_ENCODING` | +| 774 | 0x306 | `ASN1_ERROR_UNSUPPORTED_ENCODING` | +| 775 | 0x307 | `ASN1_ERROR_TAG_OVERFLOW` | +| 776 | 0x308 | `ASN1_ERROR_LENGTH_OVERFLOW` | +| 777 | 0x309 | `ASN1_ERROR_VALUE_OVERFLOW` | +| 778 | 0x30A | `ASN1_ERROR_UNKNOWN_OBJECT_ID` | ## BLE Layer errors -| Decimal | Hex | Name | -| ------- | ----- | ------------------------------------------- | -| 1027 | 0x403 | `BLE_ERROR_NO_CONNECTION_RECEIVED_CALLBACK` | -| 1028 | 0x404 | `BLE_ERROR_CENTRAL_UNSUBSCRIBED` | -| 1029 | 0x405 | `BLE_ERROR_GATT_SUBSCRIBE_FAILED` | -| 1030 | 0x406 | `BLE_ERROR_GATT_UNSUBSCRIBE_FAILED` | -| 1031 | 0x407 | `BLE_ERROR_GATT_WRITE_FAILED` | -| 1032 | 0x408 | `BLE_ERROR_GATT_INDICATE_FAILED` | -| 1035 | 0x40B | `BLE_ERROR_CHIPOBLE_PROTOCOL_ABORT` | -| 1036 | 0x40C | `BLE_ERROR_REMOTE_DEVICE_DISCONNECTED` | -| 1037 | 0x40D | `BLE_ERROR_APP_CLOSED_CONNECTION` | -| 1039 | 0x40F | `BLE_ERROR_NOT_CHIP_DEVICE` | -| 1040 | 0x410 | `BLE_ERROR_INCOMPATIBLE_PROTOCOL_VERSIONS` | -| 1043 | 0x413 | `BLE_ERROR_INVALID_FRAGMENT_SIZE` | -| 1044 | 0x414 | `BLE_ERROR_START_TIMER_FAILED` | -| 1045 | 0x415 | `BLE_ERROR_CONNECT_TIMED_OUT` | -| 1046 | 0x416 | `BLE_ERROR_RECEIVE_TIMED_OUT` | -| 1047 | 0x417 | `BLE_ERROR_INVALID_MESSAGE` | -| 1048 | 0x418 | `BLE_ERROR_FRAGMENT_ACK_TIMED_OUT` | -| 1049 | 0x419 | `BLE_ERROR_KEEP_ALIVE_TIMED_OUT` | -| 1050 | 0x41A | `BLE_ERROR_NO_CONNECT_COMPLETE_CALLBACK` | -| 1051 | 0x41B | `BLE_ERROR_INVALID_ACK` | -| 1052 | 0x41C | `BLE_ERROR_REASSEMBLER_MISSING_DATA` | -| 1053 | 0x41D | `BLE_ERROR_INVALID_BTP_HEADER_FLAGS` | -| 1054 | 0x41E | `BLE_ERROR_INVALID_BTP_SEQUENCE_NUMBER` | -| 1055 | 0x41F | `BLE_ERROR_REASSEMBLER_INCORRECT_STATE` | +| Decimal | Hex | Name | +|-----------|-------|---------------------------------------------| +| 1027 | 0x403 | `BLE_ERROR_NO_CONNECTION_RECEIVED_CALLBACK` | +| 1028 | 0x404 | `BLE_ERROR_CENTRAL_UNSUBSCRIBED` | +| 1029 | 0x405 | `BLE_ERROR_GATT_SUBSCRIBE_FAILED` | +| 1030 | 0x406 | `BLE_ERROR_GATT_UNSUBSCRIBE_FAILED` | +| 1031 | 0x407 | `BLE_ERROR_GATT_WRITE_FAILED` | +| 1032 | 0x408 | `BLE_ERROR_GATT_INDICATE_FAILED` | +| 1035 | 0x40B | `BLE_ERROR_CHIPOBLE_PROTOCOL_ABORT` | +| 1036 | 0x40C | `BLE_ERROR_REMOTE_DEVICE_DISCONNECTED` | +| 1037 | 0x40D | `BLE_ERROR_APP_CLOSED_CONNECTION` | +| 1039 | 0x40F | `BLE_ERROR_NOT_CHIP_DEVICE` | +| 1040 | 0x410 | `BLE_ERROR_INCOMPATIBLE_PROTOCOL_VERSIONS` | +| 1043 | 0x413 | `BLE_ERROR_INVALID_FRAGMENT_SIZE` | +| 1044 | 0x414 | `BLE_ERROR_START_TIMER_FAILED` | +| 1045 | 0x415 | `BLE_ERROR_CONNECT_TIMED_OUT` | +| 1046 | 0x416 | `BLE_ERROR_RECEIVE_TIMED_OUT` | +| 1047 | 0x417 | `BLE_ERROR_INVALID_MESSAGE` | +| 1048 | 0x418 | `BLE_ERROR_FRAGMENT_ACK_TIMED_OUT` | +| 1049 | 0x419 | `BLE_ERROR_KEEP_ALIVE_TIMED_OUT` | +| 1050 | 0x41A | `BLE_ERROR_NO_CONNECT_COMPLETE_CALLBACK` | +| 1051 | 0x41B | `BLE_ERROR_INVALID_ACK` | +| 1052 | 0x41C | `BLE_ERROR_REASSEMBLER_MISSING_DATA` | +| 1053 | 0x41D | `BLE_ERROR_INVALID_BTP_HEADER_FLAGS` | +| 1054 | 0x41E | `BLE_ERROR_INVALID_BTP_SEQUENCE_NUMBER` | +| 1055 | 0x41F | `BLE_ERROR_REASSEMBLER_INCORRECT_STATE` | ## IM Global errors errors -| Decimal | Hex | Name | -| ------- | ----- | -------------------------- | -| 1280 | 0x500 | `SUCCESS` | -| 1281 | 0x501 | `FAILURE` | -| 1405 | 0x57D | `INVALID_SUBSCRIPTION` | -| 1406 | 0x57E | `UNSUPPORTED_ACCESS` | -| 1407 | 0x57F | `UNSUPPORTED_ENDPOINT` | -| 1408 | 0x580 | `INVALID_ACTION` | -| 1409 | 0x581 | `UNSUPPORTED_COMMAND` | -| 1413 | 0x585 | `INVALID_COMMAND` | -| 1414 | 0x586 | `UNSUPPORTED_ATTRIBUTE` | -| 1415 | 0x587 | `CONSTRAINT_ERROR` | -| 1416 | 0x588 | `UNSUPPORTED_WRITE` | -| 1417 | 0x589 | `RESOURCE_EXHAUSTED` | -| 1419 | 0x58B | `NOT_FOUND` | -| 1420 | 0x58C | `UNREPORTABLE_ATTRIBUTE` | -| 1421 | 0x58D | `INVALID_DATA_TYPE` | -| 1423 | 0x58F | `UNSUPPORTED_READ` | -| 1426 | 0x592 | `DATA_VERSION_MISMATCH` | -| 1428 | 0x594 | `TIMEOUT` | -| 1436 | 0x59C | `BUSY` | -| 1475 | 0x5C3 | `UNSUPPORTED_CLUSTER` | -| 1477 | 0x5C5 | `NO_UPSTREAM_SUBSCRIPTION` | -| 1478 | 0x5C6 | `NEEDS_TIMED_INTERACTION` | -| 1479 | 0x5C7 | `UNSUPPORTED_EVENT` | -| 1480 | 0x5C8 | `PATHS_EXHAUSTED` | -| 1481 | 0x5C9 | `TIMED_REQUEST_MISMATCH` | -| 1482 | 0x5CA | `FAILSAFE_REQUIRED` | -| 1520 | 0x5F0 | `WRITE_IGNORED` | +| Decimal | Hex | Name | +|-----------|-------|----------------------------| +| 1280 | 0x500 | `SUCCESS` | +| 1281 | 0x501 | `FAILURE` | +| 1405 | 0x57D | `INVALID_SUBSCRIPTION` | +| 1406 | 0x57E | `UNSUPPORTED_ACCESS` | +| 1407 | 0x57F | `UNSUPPORTED_ENDPOINT` | +| 1408 | 0x580 | `INVALID_ACTION` | +| 1409 | 0x581 | `UNSUPPORTED_COMMAND` | +| 1413 | 0x585 | `INVALID_COMMAND` | +| 1414 | 0x586 | `UNSUPPORTED_ATTRIBUTE` | +| 1415 | 0x587 | `CONSTRAINT_ERROR` | +| 1416 | 0x588 | `UNSUPPORTED_WRITE` | +| 1417 | 0x589 | `RESOURCE_EXHAUSTED` | +| 1419 | 0x58B | `NOT_FOUND` | +| 1420 | 0x58C | `UNREPORTABLE_ATTRIBUTE` | +| 1421 | 0x58D | `INVALID_DATA_TYPE` | +| 1423 | 0x58F | `UNSUPPORTED_READ` | +| 1426 | 0x592 | `DATA_VERSION_MISMATCH` | +| 1428 | 0x594 | `TIMEOUT` | +| 1436 | 0x59C | `BUSY` | +| 1475 | 0x5C3 | `UNSUPPORTED_CLUSTER` | +| 1477 | 0x5C5 | `NO_UPSTREAM_SUBSCRIPTION` | +| 1478 | 0x5C6 | `NEEDS_TIMED_INTERACTION` | +| 1479 | 0x5C7 | `UNSUPPORTED_EVENT` | +| 1480 | 0x5C8 | `PATHS_EXHAUSTED` | +| 1481 | 0x5C9 | `TIMED_REQUEST_MISMATCH` | +| 1482 | 0x5CA | `FAILSAFE_REQUIRED` | +| 1483 | 0x5CB | `INVALID_IN_STATE` | +| 1484 | 0x5CC | `NO_COMMAND_RESPONSE` | +| 1520 | 0x5F0 | `WRITE_IGNORED` | + diff --git a/docs/ci-cd/index.md b/docs/ci-cd/index.md index de54e466d8ce94..437120d61f34ca 100644 --- a/docs/ci-cd/index.md +++ b/docs/ci-cd/index.md @@ -6,21 +6,34 @@ tools/* ``` -## Known Issues - -- Python build running out of space - - [Fail example](https://github.com/project-chip/connectedhomeip/actions/runs/6239660536/job/16938053552?pr=29333) - - May need intermediate cleanup steps +## Project Information + +- [Build Guide](../guides/BUILDING.md) +- Sphinx documentation framework + - New directories and individual files must be added to the + [tree](https://github.com/project-chip/connectedhomeip/blob/master/docs/index.md) + - New files under directories must be added to the tree in the index file; + see above. Glob and regular expressions may be used to include all + - The + [documentation page](https://project-chip.github.io/connectedhomeip-doc/) + is the end product + - Links can be relative; links ending in ".md" in the code will be + reflected as ".html" on that page +- Pull Requests + - Built in style and spelling checks must be satisfied + - Larger changes should go through an approval process; reviewers are + automatically added + - Smaller specific changes like ones to this file may be expedited with + the "fast track" label + +Work In Progress + +## Tasks + +- [Issues List](https://github.com/project-chip/connectedhomeip/labels/CI%2FCD%20improvements) ## Tools - [Daily Fail Summary](tools/daily_fail_summary.md) -## To Do - -- Cert image auto build - - [Initial code](https://github.com/woody-apple/connectedhomeip/tree/build-cert-bins) - - Need to change chip-build image builds to cut down time - - Do multi-platform builds for ARM64 - ## General Improvement Ideas diff --git a/docs/clusters.md b/docs/clusters.md new file mode 100644 index 00000000000000..8d1d29a84d2e87 --- /dev/null +++ b/docs/clusters.md @@ -0,0 +1,126 @@ + + +## List of currently defined clusters + +| Code (dec) | Code (hex) | Name | +| ---------- | ---------- | ------------------------------------------------------- | +| 3 | 0x03 | Identify | +| 4 | 0x04 | Groups | +| 5 | 0x05 | Scenes | +| 6 | 0x06 | OnOff | +| 7 | 0x07 | OnOffSwitchConfiguration | +| 8 | 0x08 | LevelControl | +| 15 | 0x0F | BinaryInputBasic | +| 28 | 0x1C | PulseWidthModulation | +| 29 | 0x1D | Descriptor | +| 30 | 0x1E | Binding | +| 31 | 0x1F | AccessControl | +| 37 | 0x25 | Actions | +| 40 | 0x28 | BasicInformation | +| 41 | 0x29 | OtaSoftwareUpdateProvider | +| 42 | 0x2A | OtaSoftwareUpdateRequestor | +| 43 | 0x2B | LocalizationConfiguration | +| 44 | 0x2C | TimeFormatLocalization | +| 45 | 0x2D | UnitLocalization | +| 46 | 0x2E | PowerSourceConfiguration | +| 47 | 0x2F | PowerSource | +| 48 | 0x30 | GeneralCommissioning | +| 49 | 0x31 | NetworkCommissioning | +| 50 | 0x32 | DiagnosticLogs | +| 51 | 0x33 | GeneralDiagnostics | +| 52 | 0x34 | SoftwareDiagnostics | +| 53 | 0x35 | ThreadNetworkDiagnostics | +| 54 | 0x36 | WiFiNetworkDiagnostics | +| 55 | 0x37 | EthernetNetworkDiagnostics | +| 56 | 0x38 | TimeSynchronization | +| 57 | 0x39 | BridgedDeviceBasicInformation | +| 59 | 0x3B | Switch | +| 60 | 0x3C | AdministratorCommissioning | +| 62 | 0x3E | OperationalCredentials | +| 63 | 0x3F | GroupKeyManagement | +| 64 | 0x40 | FixedLabel | +| 65 | 0x41 | UserLabel | +| 66 | 0x42 | ProxyConfiguration | +| 67 | 0x43 | ProxyDiscovery | +| 68 | 0x44 | ProxyValid | +| 69 | 0x45 | BooleanState | +| 70 | 0x46 | IcdManagement | +| 71 | 0x47 | Timer | +| 72 | 0x48 | OvenCavityOperationalState | +| 73 | 0x49 | OvenMode | +| 74 | 0x4A | LaundryDryerControls | +| 80 | 0x50 | ModeSelect | +| 81 | 0x51 | LaundryWasherMode | +| 82 | 0x52 | RefrigeratorAndTemperatureControlledCabinetMode | +| 83 | 0x53 | LaundryWasherControls | +| 84 | 0x54 | RvcRunMode | +| 85 | 0x55 | RvcCleanMode | +| 86 | 0x56 | TemperatureControl | +| 87 | 0x57 | RefrigeratorAlarm | +| 89 | 0x59 | DishwasherMode | +| 91 | 0x5B | AirQuality | +| 92 | 0x5C | SmokeCoAlarm | +| 93 | 0x5D | DishwasherAlarm | +| 94 | 0x5E | MicrowaveOvenMode | +| 95 | 0x5F | MicrowaveOvenControl | +| 96 | 0x60 | OperationalState | +| 97 | 0x61 | RvcOperationalState | +| 113 | 0x71 | HepaFilterMonitoring | +| 114 | 0x72 | ActivatedCarbonFilterMonitoring | +| 128 | 0x80 | BooleanSensorConfiguration | +| 129 | 0x81 | ValveConfigurationAndControl | +| 145 | 0x91 | ElectricalEnergyMeasurement | +| 150 | 0x96 | DemandResponseLoadControl | +| 152 | 0x98 | DeviceEnergyManagement | +| 153 | 0x99 | EnergyEvse | +| 257 | 0x101 | DoorLock | +| 258 | 0x102 | WindowCovering | +| 259 | 0x103 | BarrierControl | +| 512 | 0x200 | PumpConfigurationAndControl | +| 513 | 0x201 | Thermostat | +| 514 | 0x202 | FanControl | +| 516 | 0x204 | ThermostatUserInterfaceConfiguration | +| 768 | 0x300 | ColorControl | +| 769 | 0x301 | BallastConfiguration | +| 1024 | 0x400 | IlluminanceMeasurement | +| 1026 | 0x402 | TemperatureMeasurement | +| 1027 | 0x403 | PressureMeasurement | +| 1028 | 0x404 | FlowMeasurement | +| 1029 | 0x405 | RelativeHumidityMeasurement | +| 1030 | 0x406 | OccupancySensing | +| 1036 | 0x40C | CarbonMonoxideConcentrationMeasurement | +| 1037 | 0x40D | CarbonDioxideConcentrationMeasurement | +| 1043 | 0x413 | NitrogenDioxideConcentrationMeasurement | +| 1045 | 0x415 | OzoneConcentrationMeasurement | +| 1066 | 0x42A | Pm25ConcentrationMeasurement | +| 1067 | 0x42B | FormaldehydeConcentrationMeasurement | +| 1068 | 0x42C | Pm1ConcentrationMeasurement | +| 1069 | 0x42D | Pm10ConcentrationMeasurement | +| 1070 | 0x42E | TotalVolatileOrganicCompoundsConcentrationMeasurement | +| 1071 | 0x42F | RadonConcentrationMeasurement | +| 1283 | 0x503 | WakeOnLan | +| 1284 | 0x504 | Channel | +| 1285 | 0x505 | TargetNavigator | +| 1286 | 0x506 | MediaPlayback | +| 1287 | 0x507 | MediaInput | +| 1288 | 0x508 | LowPower | +| 1289 | 0x509 | KeypadInput | +| 1290 | 0x50A | ContentLauncher | +| 1291 | 0x50B | AudioOutput | +| 1292 | 0x50C | ApplicationLauncher | +| 1293 | 0x50D | ApplicationBasic | +| 1294 | 0x50E | AccountLogin | +| 1295 | 0x50F | ContentControl | +| 1296 | 0x510 | ContentAppObserver | +| 2820 | 0xB04 | ElectricalMeasurement | +| 4294048773 | 0xFFF1FC05 | UnitTesting | +| 4294048774 | 0xFFF1FC06 | FaultInjection | +| 4294048800 | 0xFFF1FC20 | SampleMei | diff --git a/docs/examples/index.md b/docs/examples/index.md index c6d211bcaeee9d..e31b434515f11b 100644 --- a/docs/examples/index.md +++ b/docs/examples/index.md @@ -78,6 +78,15 @@ chip-tool/README darwin-framework-tool/README ``` +## Energy Management example + +```{toctree} +:glob: +:maxdepth: 1 + +energy-management-app/**/README +``` + ## Java matter controller example ```{toctree} @@ -247,6 +256,15 @@ smoke-co-alarm-app/**/README dishwasher-app/**/README ``` +## Microwave oven example + +```{toctree} +:glob: +:maxdepth: 1 + +microwave-oven-app/**/README +``` + ## Temperature measurement example ```{toctree} @@ -294,29 +312,38 @@ tv-casting-app/APIs.md window-app/**/README ``` -## Resource monitoring example +## RVC example ```{toctree} :glob: :maxdepth: 1 -resource-monitoring-app/**/README +rvc-app/README ``` -## RVC example +## Air Purifier Example ```{toctree} :glob: :maxdepth: 1 -rvc-app/README +air-purifier-app/**/README ``` -## Air Purifier Example +## Network Infrastructure Manager example ```{toctree} :glob: :maxdepth: 1 -air-purifier-app/**/README +network-manager-app/README +``` + +## Lit ICD example + +```{toctree} +:glob: +:maxdepth: 1 + +lit-icd-app/**/README ``` diff --git a/docs/guides/nxp_manufacturing_flow.md b/docs/guides/nxp_manufacturing_flow.md index 141f90c8b8b57c..64bafd53c89329 100644 --- a/docs/guides/nxp_manufacturing_flow.md +++ b/docs/guides/nxp_manufacturing_flow.md @@ -11,108 +11,91 @@ using the procedure described below. ## 1. Prerequisites -Build `chip-cert` tool: - -``` -cd src/tools/chip-cert -gn gen out -ninja -C out -``` - -Build `spake2p` tool: +Generate build files from Matter root folder by running: ``` -cd src/tool/spake2p gn gen out -ninja -C out ``` -### Environment variables - -A user can customize the certificate generation by setting some environment -variables that are used within the utility scripts. Please note that the values -below are just an example and should be modified accordingly: +Build `chip-cert` tool: ``` -export FACTORY_DATA_DEST=path/factory/data/dest -export DEVICE_TYPE=100 -export DATE=$(date +"%F") -export TIME=$(date +"%T") -export LIFETIME="7305" -export VID="1037" -export PID="A220" +ninja -C out chip-cert ``` -`FACTORY_DATA_DEST` is the path where all factory related data is generated. - -`DEVICE_TYPE` should be updated according to the application device type (0x0100 -for the provided K32W0 lighting app). - -Additionally, `PAA_CERT` and `PAA_KEY` paths can be specified to use an already -existent **PAA**: +Build `spake2p` tool: ``` -export PAA_CERT=path/certs/Chip-PAA-NXP-Cert.pem -export PAA_KEY=path/certs/Chip-PAA-NXP-Key.pem +ninja -C out spake2p ``` ## 2. Generate ### a. Certificates -``` -./scripts/tools/nxp/generate_cert.sh ./src/tools/chip-cert/out/chip-cert -``` +To generate the different certificates, NXP provides a Python script +`scripts/tools/nxp/generate_certs.py`. This script will always generate the PAI +and DAC certificates/keys. It can also generate the Certification Declaration +and the PAA certificate/key depending on the parameters. -The output of the script is the **DAC**, **PAI** and **PAA** certificates. If -`FACTORY_DATA_DEST` is set, the certificates will be moved there. The **DAC** -and **PAI** certificates will be written in a special section of the internal -flash, while the **PAA** will be used by `chip-tool` as trust anchor. Please -note that for _real production manufacturing_ the "production PAA" is trusted -via the **DCL** rather than through the generated **PAA** certificate. The -**PAI** certificate may also have a different lifecycle. +| Parameter | Description | Type | Required | +| ------------------ | ------------------------------------------------------------------------------------------------- | ---------------------- | -------- | +| `--chip_cert_path` | Path to chip-cert executable | string | Yes | +| `--output` | Output path to store certificates | string | Yes | +| `--vendor_id` | Vendor Identification Number | integer or hex integer | Yes | +| `--product_id` | Product Identification Number | integer or hex integer | Yes | +| `--vendor_name` | Human-readable vendor name | string | Yes | +| `--product_name` | Human-readable product name | string | Yes | +| `--gen_cd` | Use this option to enable Certificate Declaration generation | boolean | No | +| `--cd_type` | Type of generated Certification Declaration: `0` - development, `1` - provisional, `2` - official | integer | No | +| `--device_type` | The primary device type implemented by the node | int | No | +| `--paa_cert` | Path to the Product Attestation Authority (PAA) certificate. Will be generated if not provided. | string | No | +| `--paa_key` | Path to the Product Attestation Authority (PAA) key. Will be generated if not provided. | string | No | +| `--valid_from` | The start date for the certificate's validity period. | string | No | +| `--lifetime` | The lifetime for the certificates, in whole days. | string | No | -### b. Certification declaration (CD) +You can also run the following command to get more details on the parameters and +their default value (if applicable): -``` -./src/tools/chip-cert/out/chip-cert gen-cd --key ./credentials/test/certification-declaration/Chip-Test-CD-Signing-Key.pem --cert ./credentials/test/certification-declaration/Chip-Test-CD-Signing-Cert.pem --out $FACTORY_DATA_DEST/Chip-Test-CD-$VID-$PID.der --format-version 1 --vendor-id "0x$VID" --product-id "0x$PID" --device-type-id "0x$DEVICE_TYPE" --certificate-id "ZIG20142ZB330003-24" --security-level 0 --security-info 0 --version-number 9876 --certification-type 1 +```shell +python scripts/tools/nxp/generate_certs.py --help ``` -The command above is extracted from `./credentials/test/gen-test-cds.sh` script. -The CD generation uses predefined key and certificate found in -`./credentials/test/certification-declaration`. This **CSA** certificate is also -hard-coded as Trust Anchor in the current `chip-tool` version. +Example of a command that will generate CD, PAA, PAI and DAC certificates and +keys in both .pem and .der formats: -By default, the CD is added to the factory data section. In order to have it -integrated in the application binary, set -`CHIP_USE_DEVICE_CONFIG_CERTIFICATION_DECLARATION` to 1 in the application's -CHIPProjectConfig.h file. +```shell +python scripts/tools/nxp/generate_certs.py --gen_cd --cd_type 1 --chip_cert_path ./out/chip-cert --vendor_id 0x1037 --product_id 0xA220 --vendor_name "NXP Semiconductors" --product_name all-clusters-app --device_type 65535 --output . +``` + +> **Note**: the commands provided in this guide are just for the example and +> shall be adapted to your use case accordingly ### c. Provisioning data Generate new provisioning data and convert all the data to a binary (unencrypted data): -``` -python3 ./scripts/tools/nxp/factory_data_generator/generate.py -i 10000 -s UXKLzwHdN3DZZLBaL2iVGhQi/OoQwIwJRQV4rpEalbA= -p 14014 -d 1000 --vid "0x$VID" --pid "0x$PID" --vendor_name "NXP Semiconductors" --product_name "Lighting app" --serial_num "12345678" --date "$DATE" --hw_version 1 --hw_version_str "1.0" --cert_declaration $FACTORY_DATA_DEST/Chip-Test-CD-$VID-$PID.der --dac_cert $FACTORY_DATA_DEST/Chip-DAC-NXP-$VID-$PID-Cert.der --dac_key $FACTORY_DATA_DEST/Chip-DAC-NXP-$VID-$PID-Key.der --pai_cert $FACTORY_DATA_DEST/Chip-PAI-NXP-$VID-$PID-Cert.der --spake2p_path ./src/tools/spake2p/out/spake2p --unique_id "00112233445566778899aabbccddeeff" --out $FACTORY_DATA_DEST/factory_data.bin +```shell +python3 ./scripts/tools/nxp/factory_data_generator/generate.py -i 10000 -s UXKLzwHdN3DZZLBaL2iVGhQi/OoQwIwJRQV4rpEalbA= -p 14014 -d 1000 --vid 0x1037 --pid 0xA220 --vendor_name "NXP Semiconductors" --product_name "Lighting app" --serial_num "12345678" --date "2023-01-01" --hw_version 1 --hw_version_str "1.0" --cert_declaration ./Chip-Test-CD-1037-A220.der --dac_cert ./Chip-DAC-NXP-1037-A220-Cert.der --dac_key ./Chip-DAC-NXP-1037-A220-Key.der --pai_cert ./Chip-PAI-NXP-1037-A220-Cert.der --spake2p_path ./out/spake2p --unique_id "00112233445566778899aabbccddeeff" --out ./factory_data.bin ``` Same example as above, but with an already generated verifier passed as input: -``` -python3 ./scripts/tools/nxp/factory_data_generator/generate.py -i 10000 -s UXKLzwHdN3DZZLBaL2iVGhQi/OoQwIwJRQV4rpEalbA= -p 14014 -d 1000 --vid "0x$VID" --pid "0x$PID" --vendor_name "NXP Semiconductors" --product_name "Lighting app" --serial_num "12345678" --date "$DATE" --hw_version 1 --hw_version_str "1.0" --cert_declaration $FACTORY_DATA_DEST/Chip-Test-CD-$VID-$PID.der --dac_cert $FACTORY_DATA_DEST/Chip-DAC-NXP-$VID-$PID-Cert.der --dac_key $FACTORY_DATA_DEST/Chip-DAC-NXP-$VID-$PID-Key.der --pai_cert $FACTORY_DATA_DEST/Chip-PAI-NXP-$VID-$PID-Cert.der --spake2p_path ./src/tools/spake2p/out/spake2p --spake2p_verifier ivD5n3L2t5+zeFt6SjW7BhHRF30gFXWZVvvXgDxgCNcE+BGuTA5AUaVm3qDZBcMMKn1a6CakI4SxyPUnJr0CpJ4pwpr0DvpTlkQKqaRvkOQfAQ1XDyf55DuavM5KVGdDrg== --unique_id "00112233445566778899aabbccddeeff" --out $FACTORY_DATA_DEST/factory_data.bin +```shell +python3 ./scripts/tools/nxp/factory_data_generator/generate.py -i 10000 -s UXKLzwHdN3DZZLBaL2iVGhQi/OoQwIwJRQV4rpEalbA= -p 14014 -d 1000 --vid "0x1037" --pid "0xA220" --vendor_name "NXP Semiconductors" --product_name "Lighting app" --serial_num "12345678" --date "2023-01-01" --hw_version 1 --hw_version_str "1.0" --cert_declaration ./Chip-Test-CD-1037-A220.der --dac_cert ./Chip-DAC-NXP-1037-A220-Cert.der --dac_key ./Chip-DAC-NXP-1037-A220-Key.der --pai_cert ./Chip-PAI-NXP-1037-A220-Cert.der --spake2p_path ./out/spake2p --spake2p_verifier ivD5n3L2t5+zeFt6SjW7BhHRF30gFXWZVvvXgDxgCNcE+BGuTA5AUaVm3qDZBcMMKn1a6CakI4SxyPUnJr0CpJ4pwpr0DvpTlkQKqaRvkOQfAQ1XDyf55DuavM5KVGdDrg== --unique_id "00112233445566778899aabbccddeeff" --out ./factory_data.bin ``` Generate new provisioning data and convert all the data to a binary (encrypted data with the AES key). Add the following option to one of the above examples: -``` +```shell --aes128_key 2B7E151628AED2A6ABF7158809CF4F3C ``` Here is the interpretation of the **required** parameters: -``` +```shell -i -> SPAKE2+ iteration -s -> SPAKE2+ salt (passed as base64 encoded string) -p -> SPAKE2+ passcode @@ -127,7 +110,7 @@ Here is the interpretation of the **required** parameters: --dac_cert -> path to the DAC (der format) location --dac_key -> path to the DAC key (der format) location --pai_cert -> path to the PAI (der format) location ---spake2p_path -> path to the spake2p tool (compile it from ./src/tools/spake2p) +--spake2p_path -> path to the spake2p tool --out -> name of the binary that will be used for storing all the generated data @@ -135,18 +118,24 @@ Here is the interpretation of the **required** parameters: Here is the interpretation of the **optional** parameters: -``` ---dac_key_password -> Password to decode DAC key ---spake2p_verifier -> SPAKE2+ verifier (passed as base64 encoded string). If this option is set, - all SPAKE2+ inputs will be encoded in the final binary. The spake2p tool - will not be used to generate a new verifier on the fly. ---aes128_key -> 128 bits AES key used to encrypt the whole dataset ---date -> Manufacturing Date (YYYY-MM-DD format) ---part_number -> Part number as string ---product_url -> Product URL as string ---product_label -> Product label as string ---serial_num -> Serial Number ---unique_id -> Unique id used for rotating device id generation +```shell +--dac_key_password -> Password to decode DAC key +--dac_key_use_sss_blob -> Used when --dac_key contains a path to an encrypted blob, instead of the + actual DAC private key. The blob metadata size is 24, so the total length + of the resulting value is private key length (32) + 24 = 56. False by default. +--spake2p_verifier -> SPAKE2+ verifier (passed as base64 encoded string). If this option is set, + all SPAKE2+ inputs will be encoded in the final binary. The spake2p tool + will not be used to generate a new verifier on the fly. +--aes128_key -> 128 bits AES key used to encrypt the whole dataset. Please make sure + that the target application/board supports this feature: it has access to + the private key and implements a mechanism which can be used to decrypt + the factory data information. +--date -> Manufacturing Date (YYYY-MM-DD format) +--part_number -> Part number as string +--product_url -> Product URL as string +--product_label -> Product label as string +--serial_num -> Serial Number +--unique_id -> Unique id used for rotating device id generation ``` ## 3. Write provisioning data @@ -154,10 +143,20 @@ Here is the interpretation of the **optional** parameters: For the **K32W0x1** variants, the binary needs to be written in the internal flash at location **0x9D600** using `DK6Programmer.exe`: -``` +```shell DK6Programmer.exe -Y -V2 -s -P 1000000 -Y -p FLASH@0x9D600="factory_data.bin" ``` +For **K32W1** platform, the binary needs to be written in the internal flash at +location given by `__MATTER_FACTORY_DATA_START`, using `JLink`: + +``` +loadfile factory_data.bin 0xf4000 +``` + +where `0xf4000` is the value of `__MATTER_FACTORY_DATA_START` in the +corresponding .map file (can be different if using a custom linker script). + For the **RT1060**, **RT1170** and **RW61X** platform, the binary needs to be written using `MCUXpresso Flash Tool GUI` at the address value corresponding to `__FACTORY_DATA_START` (the map file of the application should be checked to get @@ -169,13 +168,13 @@ Use `chip_with_factory_data=1` when compiling to enable factory data usage. Run chip-tool with a new PAA: -``` +```shell ./chip-tool pairing ble-thread 2 hex: $hex_value 14014 1000 --paa-trust-store-path /home/ubuntu/certs/paa ``` Here is the interpretation of the parameters: -``` +```shell --paa-trust-store-path -> path to the generated PAA (der format) ``` @@ -195,4 +194,51 @@ certificates generated by `OpenSSL 1.1.1l`. Also, demo **DAC**, **PAI** and **PAA** certificates needed in case `chip_with_factory_data=1` is used can be found in -`./scripts/tools/nxp/demo_generated_certs`. +`./scripts/tools/nxp/demo_generated_certs`. + +## 6. Increased security for DAC private key + +Supported platforms: + +- K32W1 - `src/plaftorm/nxp/k32w/k32w1/FactoryDataProviderImpl.h` + +For platforms that have a secure subsystem (`SSS`), the DAC private key can be +converted to an encrypted blob. This blob will overwrite the DAC private key in +factory data and will be imported in the `SSS` at initialization, by the factory +data provider instance. + +The conversion process shall happen at manufacturing time and should be run one +time only: + +- Write factory data binary. +- Build the application with + `chip_with_factory_data=1 chip_convert_dac_private_key=1` set. +- Write the application to the board and let it run. + +After the conversion process: + +- Make sure the application is built with `chip_with_factory_data=1`, but + without `chip_convert_dac_private_key` arg, since conversion already + happened. +- Write the application to the board. + +If you are using Jlink, you can see a conversion script example in: + +```shell +./scripts/tools/nxp/factory_data_generator/k32w1/example_convert_dac_private_key.jlink +``` + +Factory data should now contain a corresponding encrypted blob instead of the +DAC private key. + +If an encrypted blob of the DAC private key is already available (e.g. obtained +previously, using other methods), then the conversion process shall be skipped. +Instead, option `--dac_key_use_sss_blob` can be used in the factory data +generation command: + +```shell +python3 ./scripts/tools/nxp/factory_data_generator/generate.py -i 10000 -s UXKLzwHdN3DZZLBaL2iVGhQi/OoQwIwJRQV4rpEalbA= -p 14014 -d 1000 --vid "0x1037" --pid "0xA221" --vendor_name "NXP Semiconductors" --product_name "Lighting app" --serial_num "12345678" --date "2023-01-01" --hw_version 1 --hw_version_str "1.0" --cert_declaration ./Chip-Test-CD-1037-A221.der --dac_cert ./Chip-DAC-NXP-1037-A221-Cert.der --dac_key ./Chip-DAC-NXP-1037-A221-Key-encrypted-blob.bin --pai_cert ./Chip-PAI-NXP-1037-A221-Cert.der --spake2p_path ./out/spake2p --unique_id "00112233445566778899aabbccddeeff" --dac_key_use_sss_blob --out ./factory_data_with_blob.bin +``` + +Please note that `--dac_key` now points to a binary file that contains the +encrypted blob. diff --git a/docs/index.md b/docs/index.md index c3200d13835fd4..f6575ed88a5d7c 100644 --- a/docs/index.md +++ b/docs/index.md @@ -17,6 +17,7 @@ examples/index tools/index BUG_REPORT code_generation +clusters ERROR_CODES ``` diff --git a/docs/requirements.txt b/docs/requirements.txt index 9b7779dc3ddf63..87799ce782fe65 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -3,4 +3,4 @@ Sphinx>=4.5 sphinx-book-theme myst-parser breathe>=4.34 -pydata-sphinx-theme==0.14.1 +pydata-sphinx-theme==0.14.4 diff --git a/examples/air-purifier-app/air-purifier-common/air-purifier-app.matter b/examples/air-purifier-app/air-purifier-common/air-purifier-app.matter index f4f930ac93a015..d6f5e88f0f3407 100644 --- a/examples/air-purifier-app/air-purifier-common/air-purifier-app.matter +++ b/examples/air-purifier-app/air-purifier-common/air-purifier-app.matter @@ -2,7 +2,9 @@ // It is for view/code review purposes only. /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ -server cluster Identify = 3 { +cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,12 +45,16 @@ server cluster Identify = 3 { EffectVariantEnum effectVariant = 1; } + /** Command description for Identify */ command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; + /** Command description for TriggerEffect */ command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ -server cluster Descriptor = 29 { +cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -69,6 +75,7 @@ server cluster Descriptor = 29 { readonly attribute cluster_id serverList[] = 1; readonly attribute cluster_id clientList[] = 2; readonly attribute endpoint_no partsList[] = 3; + readonly attribute optional SemanticTagStruct tagList[] = 4; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -81,7 +88,9 @@ server cluster Descriptor = 29 { Node's Access Control List (ACL), which codifies the rules used to manage and enforce Access Control for the Node's endpoints and their associated cluster instances. */ -server cluster AccessControl = 31 { +cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -138,7 +147,7 @@ server cluster AccessControl = 31 { } attribute access(read: administer, write: administer) AccessControlEntryStruct acl[] = 0; - attribute access(read: administer, write: administer) AccessControlExtensionStruct extension[] = 1; + attribute access(read: administer, write: administer) optional AccessControlExtensionStruct extension[] = 1; readonly attribute int16u subjectsPerAccessControlEntry = 2; readonly attribute int16u targetsPerAccessControlEntry = 3; readonly attribute int16u accessControlEntriesPerFabric = 4; @@ -153,7 +162,9 @@ server cluster AccessControl = 31 { /** This cluster provides attributes and events for determining basic information about Nodes, which supports both Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ -server cluster BasicInformation = 40 { +cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -223,14 +234,16 @@ server cluster BasicInformation = 40 { readonly attribute char_string<64> hardwareVersionString = 8; readonly attribute int32u softwareVersion = 9; readonly attribute char_string<64> softwareVersionString = 10; - readonly attribute char_string<16> manufacturingDate = 11; - readonly attribute char_string<32> partNumber = 12; - readonly attribute long_char_string<256> productURL = 13; - readonly attribute char_string<64> productLabel = 14; - readonly attribute char_string<32> serialNumber = 15; - attribute access(write: manage) boolean localConfigDisabled = 16; - readonly attribute char_string<32> uniqueID = 18; + readonly attribute optional char_string<16> manufacturingDate = 11; + readonly attribute optional char_string<32> partNumber = 12; + readonly attribute optional long_char_string<256> productURL = 13; + readonly attribute optional char_string<64> productLabel = 14; + readonly attribute optional char_string<32> serialNumber = 15; + attribute access(write: manage) optional boolean localConfigDisabled = 16; + readonly attribute optional boolean reachable = 17; + readonly attribute optional char_string<32> uniqueID = 18; readonly attribute CapabilityMinimaStruct capabilityMinima = 19; + readonly attribute optional ProductAppearanceStruct productAppearance = 20; readonly attribute int32u specificationVersion = 21; readonly attribute int16u maxPathsPerInvoke = 22; readonly attribute command_id generatedCommandList[] = 65528; @@ -239,10 +252,14 @@ server cluster BasicInformation = 40 { readonly attribute attrib_id attributeList[] = 65531; readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + + command MfgSpecificPing(): DefaultSuccess = 0; } /** Provides an interface for providing OTA software updates */ -client cluster OtaSoftwareUpdateProvider = 41 { +cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -316,7 +333,9 @@ client cluster OtaSoftwareUpdateProvider = 41 { } /** Provides an interface for downloading and applying OTA software updates */ -server cluster OtaSoftwareUpdateRequestor = 42 { +cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -368,7 +387,7 @@ server cluster OtaSoftwareUpdateRequestor = 42 { nullable int64s platformCode = 3; } - attribute ProviderLocation defaultOTAProviders[] = 0; + attribute access(write: administer) ProviderLocation defaultOTAProviders[] = 0; readonly attribute boolean updatePossible = 1; readonly attribute UpdateStateEnum updateState = 2; readonly attribute nullable int8u updateStateProgress = 3; @@ -387,11 +406,14 @@ server cluster OtaSoftwareUpdateRequestor = 42 { endpoint_no endpoint = 4; } + /** Announce the presence of an OTA Provider */ command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } /** This cluster is used to manage global aspects of the Commissioning flow. */ -server cluster GeneralCommissioning = 48 { +cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -428,17 +450,17 @@ server cluster GeneralCommissioning = 48 { int64u breadcrumb = 1; } + response struct ArmFailSafeResponse = 1 { + CommissioningErrorEnum errorCode = 0; + char_string<128> debugText = 1; + } + request struct SetRegulatoryConfigRequest { RegulatoryLocationTypeEnum newRegulatoryConfig = 0; char_string<2> countryCode = 1; int64u breadcrumb = 2; } - response struct ArmFailSafeResponse = 1 { - CommissioningErrorEnum errorCode = 0; - char_string<128> debugText = 1; - } - response struct SetRegulatoryConfigResponse = 3 { CommissioningErrorEnum errorCode = 0; char_string debugText = 1; @@ -449,13 +471,18 @@ server cluster GeneralCommissioning = 48 { char_string debugText = 1; } + /** Arm the persistent fail-safe timer with an expiry time of now + ExpiryLengthSeconds using device clock */ command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; + /** Set the regulatory configuration to be used during commissioning */ command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; + /** Signals the Server that the Client has successfully completed all steps of Commissioning/Recofiguration needed during fail-safe period. */ fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ -server cluster NetworkCommissioning = 49 { +cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -534,12 +561,15 @@ server cluster NetworkCommissioning = 49 { readonly attribute access(read: administer) int8u maxNetworks = 0; readonly attribute access(read: administer) NetworkInfoStruct networks[] = 1; - readonly attribute int8u scanMaxTimeSeconds = 2; - readonly attribute int8u connectMaxTimeSeconds = 3; + readonly attribute optional int8u scanMaxTimeSeconds = 2; + readonly attribute optional int8u connectMaxTimeSeconds = 3; attribute access(write: administer) boolean interfaceEnabled = 4; readonly attribute access(read: administer) nullable NetworkCommissioningStatusEnum lastNetworkingStatus = 5; readonly attribute access(read: administer) nullable octet_string<32> lastNetworkID = 6; readonly attribute access(read: administer) nullable int32s lastConnectErrorValue = 7; + readonly attribute optional WiFiBandEnum supportedWiFiBands[] = 8; + readonly attribute optional ThreadCapabilitiesBitmap supportedThreadFeatures = 9; + readonly attribute optional int16u threadVersion = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -552,6 +582,13 @@ server cluster NetworkCommissioning = 49 { optional int64u breadcrumb = 1; } + response struct ScanNetworksResponse = 1 { + NetworkCommissioningStatusEnum networkingStatus = 0; + optional char_string debugText = 1; + optional WiFiInterfaceScanResultStruct wiFiScanResults[] = 2; + optional ThreadInterfaceScanResultStruct threadScanResults[] = 3; + } + request struct AddOrUpdateWiFiNetworkRequest { octet_string<32> ssid = 0; octet_string<64> credentials = 1; @@ -571,48 +608,61 @@ server cluster NetworkCommissioning = 49 { optional int64u breadcrumb = 1; } + response struct NetworkConfigResponse = 5 { + NetworkCommissioningStatusEnum networkingStatus = 0; + optional char_string<512> debugText = 1; + optional int8u networkIndex = 2; + optional octet_string<140> clientIdentity = 3; + optional octet_string<64> possessionSignature = 4; + } + request struct ConnectNetworkRequest { octet_string<32> networkID = 0; optional int64u breadcrumb = 1; } + response struct ConnectNetworkResponse = 7 { + NetworkCommissioningStatusEnum networkingStatus = 0; + optional char_string debugText = 1; + nullable int32s errorValue = 2; + } + request struct ReorderNetworkRequest { octet_string<32> networkID = 0; int8u networkIndex = 1; optional int64u breadcrumb = 2; } - response struct ScanNetworksResponse = 1 { - NetworkCommissioningStatusEnum networkingStatus = 0; - optional char_string debugText = 1; - optional WiFiInterfaceScanResultStruct wiFiScanResults[] = 2; - optional ThreadInterfaceScanResultStruct threadScanResults[] = 3; + request struct QueryIdentityRequest { + octet_string<20> keyIdentifier = 0; + optional octet_string<32> possessionNonce = 1; } - response struct NetworkConfigResponse = 5 { - NetworkCommissioningStatusEnum networkingStatus = 0; - optional char_string<512> debugText = 1; - optional int8u networkIndex = 2; - optional octet_string<140> clientIdentity = 3; - optional octet_string<64> possessionSignature = 4; - } - - response struct ConnectNetworkResponse = 7 { - NetworkCommissioningStatusEnum networkingStatus = 0; - optional char_string debugText = 1; - nullable int32s errorValue = 2; + response struct QueryIdentityResponse = 10 { + octet_string<140> identity = 0; + optional octet_string<64> possessionSignature = 1; } + /** Detemine the set of networks the device sees as available. */ command access(invoke: administer) ScanNetworks(ScanNetworksRequest): ScanNetworksResponse = 0; + /** Add or update the credentials for a given Wi-Fi network. */ command access(invoke: administer) AddOrUpdateWiFiNetwork(AddOrUpdateWiFiNetworkRequest): NetworkConfigResponse = 2; + /** Add or update the credentials for a given Thread network. */ command access(invoke: administer) AddOrUpdateThreadNetwork(AddOrUpdateThreadNetworkRequest): NetworkConfigResponse = 3; + /** Remove the definition of a given network (including its credentials). */ command access(invoke: administer) RemoveNetwork(RemoveNetworkRequest): NetworkConfigResponse = 4; + /** Connect to the specified network, using previously-defined credentials. */ command access(invoke: administer) ConnectNetwork(ConnectNetworkRequest): ConnectNetworkResponse = 6; + /** Modify the order in which networks will be presented in the Networks attribute. */ command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; + /** Retrieve details about and optionally proof of possession of a network client identity. */ + command access(invoke: administer) QueryIdentity(QueryIdentityRequest): QueryIdentityResponse = 9; } /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ -server cluster DiagnosticLogs = 50 { +cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -645,11 +695,21 @@ server cluster DiagnosticLogs = 50 { optional char_string<32> transferFileDesignator = 2; } + response struct RetrieveLogsResponse = 1 { + StatusEnum status = 0; + long_octet_string logContent = 1; + optional epoch_us UTCTimeStamp = 2; + optional systime_us timeSinceBoot = 3; + } + + /** Retrieving diagnostic logs from a Node */ command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ -server cluster GeneralDiagnostics = 51 { +cluster GeneralDiagnostics = 51 { + revision 2; + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -731,12 +791,12 @@ server cluster GeneralDiagnostics = 51 { readonly attribute NetworkInterface networkInterfaces[] = 0; readonly attribute int16u rebootCount = 1; - readonly attribute int64u upTime = 2; - readonly attribute int32u totalOperationalHours = 3; - readonly attribute BootReasonEnum bootReason = 4; - readonly attribute HardwareFaultEnum activeHardwareFaults[] = 5; - readonly attribute RadioFaultEnum activeRadioFaults[] = 6; - readonly attribute NetworkFaultEnum activeNetworkFaults[] = 7; + readonly attribute optional int64u upTime = 2; + readonly attribute optional int32u totalOperationalHours = 3; + readonly attribute optional BootReasonEnum bootReason = 4; + readonly attribute optional HardwareFaultEnum activeHardwareFaults[] = 5; + readonly attribute optional RadioFaultEnum activeRadioFaults[] = 6; + readonly attribute optional NetworkFaultEnum activeNetworkFaults[] = 7; readonly attribute boolean testEventTriggersEnabled = 8; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; @@ -751,16 +811,20 @@ server cluster GeneralDiagnostics = 51 { } response struct TimeSnapshotResponse = 2 { - systime_us systemTimeUs = 0; - nullable epoch_us UTCTimeUs = 1; + systime_ms systemTimeMs = 0; + nullable posix_ms posixTimeMs = 1; } + /** Provide a means for certification tests to trigger some test-plan-specific events */ command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; + /** Take a snapshot of system time and epoch time. */ command TimeSnapshot(): TimeSnapshotResponse = 1; } /** Commands to trigger a Node to allow a new Administrator to commission it. */ -server cluster AdministratorCommissioning = 60 { +cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -795,12 +859,22 @@ server cluster AdministratorCommissioning = 60 { octet_string<32> salt = 4; } + request struct OpenBasicCommissioningWindowRequest { + int16u commissioningTimeout = 0; + } + + /** This command is used by a current Administrator to instruct a Node to go into commissioning mode using enhanced commissioning method. */ timed command access(invoke: administer) OpenCommissioningWindow(OpenCommissioningWindowRequest): DefaultSuccess = 0; + /** This command is used by a current Administrator to instruct a Node to go into commissioning mode using basic commissioning method, if the node supports it. */ + timed command access(invoke: administer) OpenBasicCommissioningWindow(OpenBasicCommissioningWindowRequest): DefaultSuccess = 1; + /** This command is used by a current Administrator to instruct a Node to revoke any active Open Commissioning Window or Open Basic Commissioning Window command. */ timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ -server cluster OperationalCredentials = 62 { +cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -851,15 +925,29 @@ server cluster OperationalCredentials = 62 { octet_string<32> attestationNonce = 0; } + response struct AttestationResponse = 1 { + octet_string<900> attestationElements = 0; + octet_string<64> attestationSignature = 1; + } + request struct CertificateChainRequestRequest { CertificateChainTypeEnum certificateType = 0; } + response struct CertificateChainResponse = 3 { + octet_string<600> certificate = 0; + } + request struct CSRRequestRequest { octet_string<32> CSRNonce = 0; optional boolean isForUpdateNOC = 1; } + response struct CSRResponse = 5 { + octet_string NOCSRElements = 0; + octet_string attestationSignature = 1; + } + request struct AddNOCRequest { octet_string<400> NOCValue = 0; optional octet_string<400> ICACValue = 1; @@ -873,6 +961,12 @@ server cluster OperationalCredentials = 62 { optional octet_string ICACValue = 1; } + response struct NOCResponse = 8 { + NodeOperationalCertStatusEnum statusCode = 0; + optional fabric_idx fabricIndex = 1; + optional char_string<128> debugText = 2; + } + request struct UpdateFabricLabelRequest { char_string<32> label = 0; } @@ -885,38 +979,28 @@ server cluster OperationalCredentials = 62 { octet_string rootCACertificate = 0; } - response struct AttestationResponse = 1 { - octet_string<900> attestationElements = 0; - octet_string<64> attestationSignature = 1; - } - - response struct CertificateChainResponse = 3 { - octet_string<600> certificate = 0; - } - - response struct CSRResponse = 5 { - octet_string NOCSRElements = 0; - octet_string attestationSignature = 1; - } - - response struct NOCResponse = 8 { - NodeOperationalCertStatusEnum statusCode = 0; - optional fabric_idx fabricIndex = 1; - optional char_string<128> debugText = 2; - } - + /** Sender is requesting attestation information from the receiver. */ command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0; + /** Sender is requesting a device attestation certificate from the receiver. */ command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; + /** Sender is requesting a certificate signing request (CSR) from the receiver. */ command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; + /** Sender is requesting to add the new node operational certificates. */ command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; + /** Sender is requesting to update the node operational certificates. */ fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + /** This command SHALL be used by an Administrative Node to set the user-visible Label field for a given Fabric, as reflected by entries in the Fabrics attribute. */ fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + /** This command is used by Administrative Nodes to remove a given fabric index and delete all associated fabric-scoped data. */ command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; + /** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */ command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ -server cluster GroupKeyManagement = 63 { +cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -969,26 +1053,32 @@ server cluster GroupKeyManagement = 63 { int16u groupKeySetID = 0; } - request struct KeySetRemoveRequest { - int16u groupKeySetID = 0; - } - response struct KeySetReadResponse = 2 { GroupKeySetStruct groupKeySet = 0; } + request struct KeySetRemoveRequest { + int16u groupKeySetID = 0; + } + response struct KeySetReadAllIndicesResponse = 5 { int16u groupKeySetIDs[] = 0; } + /** Write a new set of keys for the given key set id. */ fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + /** Read the keys for a given key set id. */ fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + /** Revoke a Root Key from a Group */ fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + /** Return the list of Group Key Sets associated with the accessing fabric */ fabric command access(invoke: administer) KeySetReadAllIndices(): KeySetReadAllIndicesResponse = 4; } /** Attributes for reporting air quality classification */ -server cluster AirQuality = 91 { +cluster AirQuality = 91 { + revision 1; // NOTE: Default/not specifically set + enum AirQualityEnum : enum8 { kUnknown = 0; kGood = 1; @@ -1016,7 +1106,9 @@ server cluster AirQuality = 91 { } /** Attributes and commands for monitoring HEPA filters in a device */ -server cluster HepaFilterMonitoring = 113 { +cluster HepaFilterMonitoring = 113 { + revision 1; // NOTE: Default/not specifically set + enum ChangeIndicationEnum : enum8 { kOK = 0; kWarning = 1; @@ -1047,12 +1139,12 @@ server cluster HepaFilterMonitoring = 113 { char_string<20> productIdentifierValue = 1; } - readonly attribute percent condition = 0; - readonly attribute DegradationDirectionEnum degradationDirection = 1; + readonly attribute optional percent condition = 0; + readonly attribute optional DegradationDirectionEnum degradationDirection = 1; readonly attribute ChangeIndicationEnum changeIndication = 2; - readonly attribute boolean inPlaceIndicator = 3; - attribute nullable epoch_s lastChangedTime = 4; - readonly attribute ReplacementProductStruct replacementProductList[] = 5; + readonly attribute optional boolean inPlaceIndicator = 3; + attribute optional nullable epoch_s lastChangedTime = 4; + readonly attribute optional ReplacementProductStruct replacementProductList[] = 5; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1060,11 +1152,14 @@ server cluster HepaFilterMonitoring = 113 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + /** Reset the condition of the replaceable to the non degraded state */ command ResetCondition(): DefaultSuccess = 0; } /** Attributes and commands for monitoring activated carbon filters in a device */ -server cluster ActivatedCarbonFilterMonitoring = 114 { +cluster ActivatedCarbonFilterMonitoring = 114 { + revision 1; // NOTE: Default/not specifically set + enum ChangeIndicationEnum : enum8 { kOK = 0; kWarning = 1; @@ -1095,12 +1190,12 @@ server cluster ActivatedCarbonFilterMonitoring = 114 { char_string<20> productIdentifierValue = 1; } - readonly attribute percent condition = 0; - readonly attribute DegradationDirectionEnum degradationDirection = 1; + readonly attribute optional percent condition = 0; + readonly attribute optional DegradationDirectionEnum degradationDirection = 1; readonly attribute ChangeIndicationEnum changeIndication = 2; - readonly attribute boolean inPlaceIndicator = 3; - attribute nullable epoch_s lastChangedTime = 4; - readonly attribute ReplacementProductStruct replacementProductList[] = 5; + readonly attribute optional boolean inPlaceIndicator = 3; + attribute optional nullable epoch_s lastChangedTime = 4; + readonly attribute optional ReplacementProductStruct replacementProductList[] = 5; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1108,11 +1203,14 @@ server cluster ActivatedCarbonFilterMonitoring = 114 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + /** Reset the condition of the replaceable to the non degraded state */ command ResetCondition(): DefaultSuccess = 0; } /** An interface for controlling a fan in a heating/cooling system. */ -provisional server cluster FanControl = 514 { +provisional cluster FanControl = 514 { + revision 4; + enum AirflowDirectionEnum : enum8 { kForward = 0; kReverse = 1; @@ -1166,14 +1264,14 @@ provisional server cluster FanControl = 514 { readonly attribute FanModeSequenceEnum fanModeSequence = 1; attribute nullable percent percentSetting = 2; readonly attribute percent percentCurrent = 3; - readonly attribute int8u speedMax = 4; - attribute nullable int8u speedSetting = 5; - readonly attribute int8u speedCurrent = 6; - readonly attribute RockBitmap rockSupport = 7; - attribute RockBitmap rockSetting = 8; - readonly attribute WindBitmap windSupport = 9; - attribute WindBitmap windSetting = 10; - attribute AirflowDirectionEnum airflowDirection = 11; + readonly attribute optional int8u speedMax = 4; + attribute optional nullable int8u speedSetting = 5; + readonly attribute optional int8u speedCurrent = 6; + readonly attribute optional RockBitmap rockSupport = 7; + attribute optional RockBitmap rockSetting = 8; + readonly attribute optional WindBitmap windSupport = 9; + attribute optional WindBitmap windSetting = 10; + attribute optional AirflowDirectionEnum airflowDirection = 11; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1187,15 +1285,18 @@ provisional server cluster FanControl = 514 { optional boolean lowestOff = 2; } + /** The Step command speeds up or slows down the fan, in steps. */ command Step(StepRequest): DefaultSuccess = 0; } /** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ -server cluster TemperatureMeasurement = 1026 { +cluster TemperatureMeasurement = 1026 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable temperature measuredValue = 0; readonly attribute nullable temperature minMeasuredValue = 1; readonly attribute nullable temperature maxMeasuredValue = 2; - readonly attribute int16u tolerance = 3; + readonly attribute optional int16u tolerance = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1205,11 +1306,13 @@ server cluster TemperatureMeasurement = 1026 { } /** Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements. */ -server cluster RelativeHumidityMeasurement = 1029 { +cluster RelativeHumidityMeasurement = 1029 { + revision 3; + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; - readonly attribute int16u tolerance = 3; + readonly attribute optional int16u tolerance = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1219,7 +1322,9 @@ server cluster RelativeHumidityMeasurement = 1029 { } /** Attributes for reporting carbon monoxide concentration measurements */ -server cluster CarbonMonoxideConcentrationMeasurement = 1036 { +cluster CarbonMonoxideConcentrationMeasurement = 1036 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1254,17 +1359,17 @@ server cluster CarbonMonoxideConcentrationMeasurement = 1036 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; - readonly attribute nullable single peakMeasuredValue = 3; - readonly attribute elapsed_s peakMeasuredValueWindow = 4; - readonly attribute nullable single averageMeasuredValue = 5; - readonly attribute elapsed_s averageMeasuredValueWindow = 6; - readonly attribute single uncertainty = 7; - readonly attribute MeasurementUnitEnum measurementUnit = 8; - readonly attribute MeasurementMediumEnum measurementMedium = 9; - readonly attribute LevelValueEnum levelValue = 10; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1274,7 +1379,9 @@ server cluster CarbonMonoxideConcentrationMeasurement = 1036 { } /** Attributes for reporting carbon dioxide concentration measurements */ -server cluster CarbonDioxideConcentrationMeasurement = 1037 { +cluster CarbonDioxideConcentrationMeasurement = 1037 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1309,17 +1416,17 @@ server cluster CarbonDioxideConcentrationMeasurement = 1037 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; - readonly attribute nullable single peakMeasuredValue = 3; - readonly attribute elapsed_s peakMeasuredValueWindow = 4; - readonly attribute nullable single averageMeasuredValue = 5; - readonly attribute elapsed_s averageMeasuredValueWindow = 6; - readonly attribute single uncertainty = 7; - readonly attribute MeasurementUnitEnum measurementUnit = 8; - readonly attribute MeasurementMediumEnum measurementMedium = 9; - readonly attribute LevelValueEnum levelValue = 10; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1329,7 +1436,9 @@ server cluster CarbonDioxideConcentrationMeasurement = 1037 { } /** Attributes for reporting nitrogen dioxide concentration measurements */ -server cluster NitrogenDioxideConcentrationMeasurement = 1043 { +cluster NitrogenDioxideConcentrationMeasurement = 1043 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1364,17 +1473,17 @@ server cluster NitrogenDioxideConcentrationMeasurement = 1043 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; - readonly attribute nullable single peakMeasuredValue = 3; - readonly attribute elapsed_s peakMeasuredValueWindow = 4; - readonly attribute nullable single averageMeasuredValue = 5; - readonly attribute elapsed_s averageMeasuredValueWindow = 6; - readonly attribute single uncertainty = 7; - readonly attribute MeasurementUnitEnum measurementUnit = 8; - readonly attribute MeasurementMediumEnum measurementMedium = 9; - readonly attribute LevelValueEnum levelValue = 10; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1384,7 +1493,9 @@ server cluster NitrogenDioxideConcentrationMeasurement = 1043 { } /** Attributes for reporting ozone concentration measurements */ -server cluster OzoneConcentrationMeasurement = 1045 { +cluster OzoneConcentrationMeasurement = 1045 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1419,17 +1530,17 @@ server cluster OzoneConcentrationMeasurement = 1045 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; - readonly attribute nullable single peakMeasuredValue = 3; - readonly attribute elapsed_s peakMeasuredValueWindow = 4; - readonly attribute nullable single averageMeasuredValue = 5; - readonly attribute elapsed_s averageMeasuredValueWindow = 6; - readonly attribute single uncertainty = 7; - readonly attribute MeasurementUnitEnum measurementUnit = 8; - readonly attribute MeasurementMediumEnum measurementMedium = 9; - readonly attribute LevelValueEnum levelValue = 10; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1439,7 +1550,9 @@ server cluster OzoneConcentrationMeasurement = 1045 { } /** Attributes for reporting PM2.5 concentration measurements */ -server cluster Pm25ConcentrationMeasurement = 1066 { +cluster Pm25ConcentrationMeasurement = 1066 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1474,17 +1587,17 @@ server cluster Pm25ConcentrationMeasurement = 1066 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; - readonly attribute nullable single peakMeasuredValue = 3; - readonly attribute elapsed_s peakMeasuredValueWindow = 4; - readonly attribute nullable single averageMeasuredValue = 5; - readonly attribute elapsed_s averageMeasuredValueWindow = 6; - readonly attribute single uncertainty = 7; - readonly attribute MeasurementUnitEnum measurementUnit = 8; - readonly attribute MeasurementMediumEnum measurementMedium = 9; - readonly attribute LevelValueEnum levelValue = 10; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1494,7 +1607,9 @@ server cluster Pm25ConcentrationMeasurement = 1066 { } /** Attributes for reporting formaldehyde concentration measurements */ -server cluster FormaldehydeConcentrationMeasurement = 1067 { +cluster FormaldehydeConcentrationMeasurement = 1067 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1529,17 +1644,17 @@ server cluster FormaldehydeConcentrationMeasurement = 1067 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; - readonly attribute nullable single peakMeasuredValue = 3; - readonly attribute elapsed_s peakMeasuredValueWindow = 4; - readonly attribute nullable single averageMeasuredValue = 5; - readonly attribute elapsed_s averageMeasuredValueWindow = 6; - readonly attribute single uncertainty = 7; - readonly attribute MeasurementUnitEnum measurementUnit = 8; - readonly attribute MeasurementMediumEnum measurementMedium = 9; - readonly attribute LevelValueEnum levelValue = 10; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1549,7 +1664,9 @@ server cluster FormaldehydeConcentrationMeasurement = 1067 { } /** Attributes for reporting PM1 concentration measurements */ -server cluster Pm1ConcentrationMeasurement = 1068 { +cluster Pm1ConcentrationMeasurement = 1068 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1584,17 +1701,17 @@ server cluster Pm1ConcentrationMeasurement = 1068 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; - readonly attribute nullable single peakMeasuredValue = 3; - readonly attribute elapsed_s peakMeasuredValueWindow = 4; - readonly attribute nullable single averageMeasuredValue = 5; - readonly attribute elapsed_s averageMeasuredValueWindow = 6; - readonly attribute single uncertainty = 7; - readonly attribute MeasurementUnitEnum measurementUnit = 8; - readonly attribute MeasurementMediumEnum measurementMedium = 9; - readonly attribute LevelValueEnum levelValue = 10; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1604,7 +1721,9 @@ server cluster Pm1ConcentrationMeasurement = 1068 { } /** Attributes for reporting PM10 concentration measurements */ -server cluster Pm10ConcentrationMeasurement = 1069 { +cluster Pm10ConcentrationMeasurement = 1069 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1639,17 +1758,17 @@ server cluster Pm10ConcentrationMeasurement = 1069 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; - readonly attribute nullable single peakMeasuredValue = 3; - readonly attribute elapsed_s peakMeasuredValueWindow = 4; - readonly attribute nullable single averageMeasuredValue = 5; - readonly attribute elapsed_s averageMeasuredValueWindow = 6; - readonly attribute single uncertainty = 7; - readonly attribute MeasurementUnitEnum measurementUnit = 8; - readonly attribute MeasurementMediumEnum measurementMedium = 9; - readonly attribute LevelValueEnum levelValue = 10; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1659,7 +1778,9 @@ server cluster Pm10ConcentrationMeasurement = 1069 { } /** Attributes for reporting total volatile organic compounds concentration measurements */ -server cluster TotalVolatileOrganicCompoundsConcentrationMeasurement = 1070 { +cluster TotalVolatileOrganicCompoundsConcentrationMeasurement = 1070 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1694,17 +1815,17 @@ server cluster TotalVolatileOrganicCompoundsConcentrationMeasurement = 1070 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; - readonly attribute nullable single peakMeasuredValue = 3; - readonly attribute elapsed_s peakMeasuredValueWindow = 4; - readonly attribute nullable single averageMeasuredValue = 5; - readonly attribute elapsed_s averageMeasuredValueWindow = 6; - readonly attribute single uncertainty = 7; - readonly attribute MeasurementUnitEnum measurementUnit = 8; - readonly attribute MeasurementMediumEnum measurementMedium = 9; - readonly attribute LevelValueEnum levelValue = 10; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1714,7 +1835,9 @@ server cluster TotalVolatileOrganicCompoundsConcentrationMeasurement = 1070 { } /** Attributes for reporting radon concentration measurements */ -server cluster RadonConcentrationMeasurement = 1071 { +cluster RadonConcentrationMeasurement = 1071 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1749,17 +1872,17 @@ server cluster RadonConcentrationMeasurement = 1071 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; - readonly attribute nullable single peakMeasuredValue = 3; - readonly attribute elapsed_s peakMeasuredValueWindow = 4; - readonly attribute nullable single averageMeasuredValue = 5; - readonly attribute elapsed_s averageMeasuredValueWindow = 6; - readonly attribute single uncertainty = 7; - readonly attribute MeasurementUnitEnum measurementUnit = 8; - readonly attribute MeasurementMediumEnum measurementMedium = 9; - readonly attribute LevelValueEnum levelValue = 10; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1779,7 +1902,7 @@ endpoint 0 { callback attribute clientList; callback attribute partsList; ram attribute featureMap default = 0; - callback attribute clusterRevision default = 1; + callback attribute clusterRevision; } server cluster AccessControl { @@ -1792,25 +1915,25 @@ endpoint 0 { callback attribute accessControlEntriesPerFabric; callback attribute attributeList; ram attribute featureMap default = 0; - callback attribute clusterRevision default = 1; + callback attribute clusterRevision; } server cluster BasicInformation { emits event StartUp; emits event ShutDown; emits event Leave; - callback attribute dataModelRevision default = 10; + callback attribute dataModelRevision; callback attribute vendorName; callback attribute vendorID; callback attribute productName; callback attribute productID; persist attribute nodeLabel; - callback attribute location default = "XX"; - callback attribute hardwareVersion default = 0; + callback attribute location; + callback attribute hardwareVersion; callback attribute hardwareVersionString; - callback attribute softwareVersion default = 0; + callback attribute softwareVersion; callback attribute softwareVersionString; - callback attribute manufacturingDate default = "20210614123456ZZ"; + callback attribute manufacturingDate; callback attribute partNumber; callback attribute productURL; callback attribute productLabel; @@ -1841,9 +1964,9 @@ endpoint 0 { server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; - callback attribute regulatoryConfig default = 0; - callback attribute locationCapability default = 0; - callback attribute supportsConcurrentConnection default = 1; + callback attribute regulatoryConfig; + callback attribute locationCapability; + callback attribute supportsConcurrentConnection; ram attribute featureMap default = 0; ram attribute clusterRevision default = 0x0001; @@ -1888,9 +2011,9 @@ endpoint 0 { server cluster GeneralDiagnostics { emits event BootReason; callback attribute networkInterfaces; - callback attribute rebootCount default = 0x0000; - callback attribute upTime default = 0x0000000000000000; - callback attribute totalOperationalHours default = 0x00000000; + callback attribute rebootCount; + callback attribute upTime; + callback attribute totalOperationalHours; callback attribute bootReason; callback attribute activeHardwareFaults; callback attribute activeRadioFaults; @@ -1905,9 +2028,9 @@ endpoint 0 { } server cluster AdministratorCommissioning { - callback attribute windowStatus default = 0; - callback attribute adminFabricIndex default = 1; - callback attribute adminVendorId default = 0; + callback attribute windowStatus; + callback attribute adminFabricIndex; + callback attribute adminVendorId; ram attribute featureMap default = 0; ram attribute clusterRevision default = 0x0001; @@ -1944,8 +2067,8 @@ endpoint 0 { callback attribute groupTable; callback attribute maxGroupsPerFabric; callback attribute maxGroupKeysPerFabric; - callback attribute featureMap default = 0; - callback attribute clusterRevision default = 1; + callback attribute featureMap; + callback attribute clusterRevision; handle command KeySetWrite; handle command KeySetRead; @@ -1962,10 +2085,10 @@ endpoint 1 { server cluster Identify { ram attribute identifyTime default = 0x0; ram attribute identifyType default = 0x0; - callback attribute generatedCommandList default = 0; - callback attribute acceptedCommandList default = 0; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; callback attribute eventList; - callback attribute attributeList default = 0; + callback attribute attributeList; ram attribute featureMap default = 0; ram attribute clusterRevision default = 4; @@ -1974,47 +2097,47 @@ endpoint 1 { } server cluster Descriptor { - callback attribute deviceTypeList default = 0; - callback attribute serverList default = 0; - callback attribute clientList default = 0; - callback attribute partsList default = 0; - callback attribute generatedCommandList default = 0; - callback attribute acceptedCommandList default = 0; + callback attribute deviceTypeList; + callback attribute serverList; + callback attribute clientList; + callback attribute partsList; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; callback attribute eventList; - callback attribute attributeList default = 0; + callback attribute attributeList; ram attribute featureMap default = 0; - callback attribute clusterRevision default = 1; + callback attribute clusterRevision; } server cluster HepaFilterMonitoring { - callback attribute condition default = 100; - callback attribute degradationDirection default = 1; - callback attribute changeIndication default = 0; - callback attribute inPlaceIndicator default = 1; + callback attribute condition; + callback attribute degradationDirection; + callback attribute changeIndication; + callback attribute inPlaceIndicator; callback attribute lastChangedTime; callback attribute replacementProductList; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 1; handle command ResetCondition; } server cluster ActivatedCarbonFilterMonitoring { - callback attribute condition default = 100; - callback attribute degradationDirection default = 1; - callback attribute changeIndication default = 0; - callback attribute inPlaceIndicator default = 1; + callback attribute condition; + callback attribute degradationDirection; + callback attribute changeIndication; + callback attribute inPlaceIndicator; callback attribute lastChangedTime; callback attribute replacementProductList; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 1; handle command ResetCondition; @@ -2070,16 +2193,16 @@ endpoint 2 { callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 0; - callback attribute clusterRevision default = 1; + callback attribute clusterRevision; } server cluster AirQuality { - callback attribute airQuality default = 0; + callback attribute airQuality; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 1; } @@ -2088,18 +2211,18 @@ endpoint 2 { callback attribute minMeasuredValue; callback attribute maxMeasuredValue; callback attribute peakMeasuredValue; - callback attribute peakMeasuredValueWindow default = 1; + callback attribute peakMeasuredValueWindow; callback attribute averageMeasuredValue; - callback attribute averageMeasuredValueWindow default = 1; - callback attribute uncertainty default = 0; - callback attribute measurementUnit default = 0; - callback attribute measurementMedium default = 0; - callback attribute levelValue default = 0; + callback attribute averageMeasuredValueWindow; + callback attribute uncertainty; + callback attribute measurementUnit; + callback attribute measurementMedium; + callback attribute levelValue; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } @@ -2108,18 +2231,18 @@ endpoint 2 { callback attribute minMeasuredValue; callback attribute maxMeasuredValue; callback attribute peakMeasuredValue; - callback attribute peakMeasuredValueWindow default = 1; + callback attribute peakMeasuredValueWindow; callback attribute averageMeasuredValue; - callback attribute averageMeasuredValueWindow default = 1; - callback attribute uncertainty default = 0; - callback attribute measurementUnit default = 0; - callback attribute measurementMedium default = 0; - callback attribute levelValue default = 0; + callback attribute averageMeasuredValueWindow; + callback attribute uncertainty; + callback attribute measurementUnit; + callback attribute measurementMedium; + callback attribute levelValue; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } @@ -2128,18 +2251,18 @@ endpoint 2 { callback attribute minMeasuredValue; callback attribute maxMeasuredValue; callback attribute peakMeasuredValue; - callback attribute peakMeasuredValueWindow default = 1; + callback attribute peakMeasuredValueWindow; callback attribute averageMeasuredValue; - callback attribute averageMeasuredValueWindow default = 1; - callback attribute uncertainty default = 0; - callback attribute measurementUnit default = 0; - callback attribute measurementMedium default = 0; - callback attribute levelValue default = 0; + callback attribute averageMeasuredValueWindow; + callback attribute uncertainty; + callback attribute measurementUnit; + callback attribute measurementMedium; + callback attribute levelValue; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } @@ -2148,18 +2271,18 @@ endpoint 2 { callback attribute minMeasuredValue; callback attribute maxMeasuredValue; callback attribute peakMeasuredValue; - callback attribute peakMeasuredValueWindow default = 1; + callback attribute peakMeasuredValueWindow; callback attribute averageMeasuredValue; - callback attribute averageMeasuredValueWindow default = 1; - callback attribute uncertainty default = 0; - callback attribute measurementUnit default = 0; - callback attribute measurementMedium default = 0; - callback attribute levelValue default = 0; + callback attribute averageMeasuredValueWindow; + callback attribute uncertainty; + callback attribute measurementUnit; + callback attribute measurementMedium; + callback attribute levelValue; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } @@ -2168,18 +2291,18 @@ endpoint 2 { callback attribute minMeasuredValue; callback attribute maxMeasuredValue; callback attribute peakMeasuredValue; - callback attribute peakMeasuredValueWindow default = 1; + callback attribute peakMeasuredValueWindow; callback attribute averageMeasuredValue; - callback attribute averageMeasuredValueWindow default = 1; - callback attribute uncertainty default = 0; - callback attribute measurementUnit default = 0; - callback attribute measurementMedium default = 0; - callback attribute levelValue default = 0; + callback attribute averageMeasuredValueWindow; + callback attribute uncertainty; + callback attribute measurementUnit; + callback attribute measurementMedium; + callback attribute levelValue; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } @@ -2188,18 +2311,18 @@ endpoint 2 { callback attribute minMeasuredValue; callback attribute maxMeasuredValue; callback attribute peakMeasuredValue; - callback attribute peakMeasuredValueWindow default = 1; + callback attribute peakMeasuredValueWindow; callback attribute averageMeasuredValue; - callback attribute averageMeasuredValueWindow default = 1; - callback attribute uncertainty default = 0; - callback attribute measurementUnit default = 0; - callback attribute measurementMedium default = 0; - callback attribute levelValue default = 0; + callback attribute averageMeasuredValueWindow; + callback attribute uncertainty; + callback attribute measurementUnit; + callback attribute measurementMedium; + callback attribute levelValue; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } @@ -2208,18 +2331,18 @@ endpoint 2 { callback attribute minMeasuredValue; callback attribute maxMeasuredValue; callback attribute peakMeasuredValue; - callback attribute peakMeasuredValueWindow default = 1; + callback attribute peakMeasuredValueWindow; callback attribute averageMeasuredValue; - callback attribute averageMeasuredValueWindow default = 1; - callback attribute uncertainty default = 0; - callback attribute measurementUnit default = 0; - callback attribute measurementMedium default = 0; - callback attribute levelValue default = 0; + callback attribute averageMeasuredValueWindow; + callback attribute uncertainty; + callback attribute measurementUnit; + callback attribute measurementMedium; + callback attribute levelValue; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } @@ -2228,18 +2351,18 @@ endpoint 2 { callback attribute minMeasuredValue; callback attribute maxMeasuredValue; callback attribute peakMeasuredValue; - callback attribute peakMeasuredValueWindow default = 1; + callback attribute peakMeasuredValueWindow; callback attribute averageMeasuredValue; - callback attribute averageMeasuredValueWindow default = 1; - callback attribute uncertainty default = 0; - callback attribute measurementUnit default = 0; - callback attribute measurementMedium default = 0; - callback attribute levelValue default = 0; + callback attribute averageMeasuredValueWindow; + callback attribute uncertainty; + callback attribute measurementUnit; + callback attribute measurementMedium; + callback attribute levelValue; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } @@ -2248,18 +2371,18 @@ endpoint 2 { callback attribute minMeasuredValue; callback attribute maxMeasuredValue; callback attribute peakMeasuredValue; - callback attribute peakMeasuredValueWindow default = 1; + callback attribute peakMeasuredValueWindow; callback attribute averageMeasuredValue; - callback attribute averageMeasuredValueWindow default = 1; - callback attribute uncertainty default = 0; - callback attribute measurementUnit default = 0; - callback attribute measurementMedium default = 0; - callback attribute levelValue default = 0; + callback attribute averageMeasuredValueWindow; + callback attribute uncertainty; + callback attribute measurementUnit; + callback attribute measurementMedium; + callback attribute levelValue; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } @@ -2268,18 +2391,18 @@ endpoint 2 { callback attribute minMeasuredValue; callback attribute maxMeasuredValue; callback attribute peakMeasuredValue; - callback attribute peakMeasuredValueWindow default = 1; + callback attribute peakMeasuredValueWindow; callback attribute averageMeasuredValue; - callback attribute averageMeasuredValueWindow default = 1; - callback attribute uncertainty default = 0; - callback attribute measurementUnit default = 0; - callback attribute measurementMedium default = 0; - callback attribute levelValue default = 0; + callback attribute averageMeasuredValueWindow; + callback attribute uncertainty; + callback attribute measurementUnit; + callback attribute measurementMedium; + callback attribute levelValue; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } } @@ -2311,7 +2434,7 @@ endpoint 3 { callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 0; - callback attribute clusterRevision default = 1; + callback attribute clusterRevision; } server cluster TemperatureMeasurement { @@ -2355,7 +2478,7 @@ endpoint 4 { callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 0; - callback attribute clusterRevision default = 1; + callback attribute clusterRevision; } server cluster RelativeHumidityMeasurement { diff --git a/examples/air-purifier-app/air-purifier-common/air-purifier-app.zap b/examples/air-purifier-app/air-purifier-common/air-purifier-app.zap index 4daeefb57b7fa6..987813f08a1cee 100644 --- a/examples/air-purifier-app/air-purifier-common/air-purifier-app.zap +++ b/examples/air-purifier-app/air-purifier-common/air-purifier-app.zap @@ -78,7 +78,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -94,7 +94,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -110,7 +110,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -126,7 +126,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -158,7 +158,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -184,7 +184,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -200,7 +200,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -216,7 +216,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -232,7 +232,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -248,7 +248,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -264,7 +264,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -296,7 +296,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -338,7 +338,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "10", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -354,7 +354,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -370,7 +370,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -386,7 +386,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -402,7 +402,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -434,7 +434,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "XX", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -450,7 +450,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -466,7 +466,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -482,7 +482,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -498,7 +498,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -514,7 +514,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "20210614123456ZZ", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -530,7 +530,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -546,7 +546,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -562,7 +562,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -578,7 +578,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -610,7 +610,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -626,7 +626,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -642,7 +642,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -658,7 +658,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -817,7 +817,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1012,7 +1012,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1028,7 +1028,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1044,7 +1044,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1060,7 +1060,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1208,7 +1208,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1440,7 +1440,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1456,7 +1456,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1472,7 +1472,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1488,7 +1488,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1504,7 +1504,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1520,7 +1520,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1536,7 +1536,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1552,7 +1552,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1653,7 +1653,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1669,7 +1669,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1685,7 +1685,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1841,7 +1841,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1857,7 +1857,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1873,7 +1873,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1889,7 +1889,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1905,7 +1905,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1921,7 +1921,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2029,7 +2029,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2045,7 +2045,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2061,7 +2061,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2077,7 +2077,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2093,7 +2093,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2109,7 +2109,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2214,7 +2214,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2230,7 +2230,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2246,7 +2246,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2262,7 +2262,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2320,7 +2320,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2336,7 +2336,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2352,7 +2352,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2368,7 +2368,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2384,7 +2384,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2400,7 +2400,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2416,7 +2416,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2432,7 +2432,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2464,7 +2464,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2500,7 +2500,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "100", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2516,7 +2516,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2532,7 +2532,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2548,7 +2548,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2564,7 +2564,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2580,7 +2580,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2596,7 +2596,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2612,7 +2612,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2628,7 +2628,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2644,7 +2644,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2660,7 +2660,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2712,7 +2712,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "100", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2728,7 +2728,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2744,7 +2744,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2760,7 +2760,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2776,7 +2776,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2792,7 +2792,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2808,7 +2808,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2824,7 +2824,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2840,7 +2840,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2856,7 +2856,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2872,7 +2872,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3117,7 +3117,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3133,7 +3133,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3149,7 +3149,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3165,7 +3165,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3294,7 +3294,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3310,7 +3310,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3326,7 +3326,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3342,7 +3342,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3400,7 +3400,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3416,7 +3416,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3432,7 +3432,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3448,7 +3448,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3464,7 +3464,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3480,7 +3480,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3496,7 +3496,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3512,7 +3512,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3544,7 +3544,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3570,7 +3570,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3586,7 +3586,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3602,7 +3602,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3618,7 +3618,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3634,7 +3634,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3650,7 +3650,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3692,7 +3692,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3708,7 +3708,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3724,7 +3724,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3740,7 +3740,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3756,7 +3756,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3772,7 +3772,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3788,7 +3788,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3804,7 +3804,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3820,7 +3820,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3836,7 +3836,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3852,7 +3852,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3868,7 +3868,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3884,7 +3884,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3900,7 +3900,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3916,7 +3916,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3932,7 +3932,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3974,7 +3974,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3990,7 +3990,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4006,7 +4006,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4022,7 +4022,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4038,7 +4038,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4054,7 +4054,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4070,7 +4070,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4086,7 +4086,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4102,7 +4102,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4118,7 +4118,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4134,7 +4134,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4150,7 +4150,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4166,7 +4166,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4182,7 +4182,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4198,7 +4198,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4214,7 +4214,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4256,7 +4256,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4272,7 +4272,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4288,7 +4288,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4304,7 +4304,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4320,7 +4320,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4336,7 +4336,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4352,7 +4352,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4368,7 +4368,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4384,7 +4384,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4400,7 +4400,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4416,7 +4416,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4432,7 +4432,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4448,7 +4448,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4464,7 +4464,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4480,7 +4480,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4496,7 +4496,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4538,7 +4538,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4554,7 +4554,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4570,7 +4570,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4586,7 +4586,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4602,7 +4602,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4618,7 +4618,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4634,7 +4634,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4650,7 +4650,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4666,7 +4666,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4682,7 +4682,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4698,7 +4698,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4714,7 +4714,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4730,7 +4730,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4746,7 +4746,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4762,7 +4762,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4778,7 +4778,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4820,7 +4820,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4836,7 +4836,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4852,7 +4852,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4868,7 +4868,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4884,7 +4884,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4900,7 +4900,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4916,7 +4916,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4932,7 +4932,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4948,7 +4948,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4964,7 +4964,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4980,7 +4980,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4996,7 +4996,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5012,7 +5012,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5028,7 +5028,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5044,7 +5044,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5060,7 +5060,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5102,7 +5102,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5118,7 +5118,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5134,7 +5134,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5150,7 +5150,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5166,7 +5166,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5182,7 +5182,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5198,7 +5198,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5214,7 +5214,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5230,7 +5230,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5246,7 +5246,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5262,7 +5262,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5278,7 +5278,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5294,7 +5294,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5310,7 +5310,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5326,7 +5326,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5342,7 +5342,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5384,7 +5384,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5400,7 +5400,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5416,7 +5416,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5432,7 +5432,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5448,7 +5448,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5464,7 +5464,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5480,7 +5480,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5496,7 +5496,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5512,7 +5512,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5528,7 +5528,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5544,7 +5544,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5560,7 +5560,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5576,7 +5576,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5592,7 +5592,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5608,7 +5608,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5624,7 +5624,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5666,7 +5666,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5682,7 +5682,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5698,7 +5698,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5714,7 +5714,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5730,7 +5730,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5746,7 +5746,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5762,7 +5762,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5778,7 +5778,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5794,7 +5794,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5810,7 +5810,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5826,7 +5826,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5842,7 +5842,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5858,7 +5858,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5874,7 +5874,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5890,7 +5890,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5906,7 +5906,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5948,7 +5948,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5964,7 +5964,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5980,7 +5980,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5996,7 +5996,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6012,7 +6012,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6028,7 +6028,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6044,7 +6044,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6060,7 +6060,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6076,7 +6076,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6092,7 +6092,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6108,7 +6108,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6124,7 +6124,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6140,7 +6140,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6156,7 +6156,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6172,7 +6172,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6188,7 +6188,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6230,7 +6230,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6246,7 +6246,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6262,7 +6262,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6278,7 +6278,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6294,7 +6294,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6310,7 +6310,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6326,7 +6326,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6342,7 +6342,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6358,7 +6358,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6374,7 +6374,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6390,7 +6390,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6406,7 +6406,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6422,7 +6422,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6438,7 +6438,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6454,7 +6454,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6470,7 +6470,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6591,7 +6591,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6607,7 +6607,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6623,7 +6623,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6639,7 +6639,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6697,7 +6697,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6713,7 +6713,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6729,7 +6729,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6745,7 +6745,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6761,7 +6761,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6777,7 +6777,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6793,7 +6793,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6809,7 +6809,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6841,7 +6841,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6931,7 +6931,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6947,7 +6947,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6963,7 +6963,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6979,7 +6979,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7116,7 +7116,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7132,7 +7132,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7148,7 +7148,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7164,7 +7164,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7222,7 +7222,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7238,7 +7238,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7254,7 +7254,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7270,7 +7270,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7286,7 +7286,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7302,7 +7302,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7318,7 +7318,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7334,7 +7334,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7366,7 +7366,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7456,7 +7456,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7472,7 +7472,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7488,7 +7488,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7504,7 +7504,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, diff --git a/examples/air-purifier-app/ameba/main/DeviceCallbacks.cpp b/examples/air-purifier-app/ameba/main/DeviceCallbacks.cpp index 0a5d9dd2617ce1..42551f7cb40579 100644 --- a/examples/air-purifier-app/ameba/main/DeviceCallbacks.cpp +++ b/examples/air-purifier-app/ameba/main/DeviceCallbacks.cpp @@ -43,7 +43,7 @@ #include #endif -static const char * TAG = "app-devicecallbacks"; +static const char TAG[] = "app-devicecallbacks"; using namespace ::chip; using namespace ::chip::Inet; diff --git a/examples/air-quality-sensor-app/air-quality-sensor-common/air-quality-sensor-app.matter b/examples/air-quality-sensor-app/air-quality-sensor-common/air-quality-sensor-app.matter index c0c1236fa44335..e1c3018f693dfa 100644 --- a/examples/air-quality-sensor-app/air-quality-sensor-common/air-quality-sensor-app.matter +++ b/examples/air-quality-sensor-app/air-quality-sensor-common/air-quality-sensor-app.matter @@ -2,7 +2,9 @@ // It is for view/code review purposes only. /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ -server cluster Identify = 3 { +cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -38,11 +40,21 @@ server cluster Identify = 3 { int16u identifyTime = 0; } + request struct TriggerEffectRequest { + EffectIdentifierEnum effectIdentifier = 0; + EffectVariantEnum effectVariant = 1; + } + + /** Command description for Identify */ command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; + /** Command description for TriggerEffect */ + command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ -server cluster Descriptor = 29 { +cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -63,6 +75,7 @@ server cluster Descriptor = 29 { readonly attribute cluster_id serverList[] = 1; readonly attribute cluster_id clientList[] = 2; readonly attribute endpoint_no partsList[] = 3; + readonly attribute optional SemanticTagStruct tagList[] = 4; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -75,7 +88,9 @@ server cluster Descriptor = 29 { Node's Access Control List (ACL), which codifies the rules used to manage and enforce Access Control for the Node's endpoints and their associated cluster instances. */ -server cluster AccessControl = 31 { +cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -132,7 +147,7 @@ server cluster AccessControl = 31 { } attribute access(read: administer, write: administer) AccessControlEntryStruct acl[] = 0; - attribute access(read: administer, write: administer) AccessControlExtensionStruct extension[] = 1; + attribute access(read: administer, write: administer) optional AccessControlExtensionStruct extension[] = 1; readonly attribute int16u subjectsPerAccessControlEntry = 2; readonly attribute int16u targetsPerAccessControlEntry = 3; readonly attribute int16u accessControlEntriesPerFabric = 4; @@ -147,7 +162,9 @@ server cluster AccessControl = 31 { /** This cluster provides attributes and events for determining basic information about Nodes, which supports both Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ -server cluster BasicInformation = 40 { +cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -217,14 +234,16 @@ server cluster BasicInformation = 40 { readonly attribute char_string<64> hardwareVersionString = 8; readonly attribute int32u softwareVersion = 9; readonly attribute char_string<64> softwareVersionString = 10; - readonly attribute char_string<16> manufacturingDate = 11; - readonly attribute char_string<32> partNumber = 12; - readonly attribute long_char_string<256> productURL = 13; - readonly attribute char_string<64> productLabel = 14; - readonly attribute char_string<32> serialNumber = 15; - attribute access(write: manage) boolean localConfigDisabled = 16; - readonly attribute char_string<32> uniqueID = 18; + readonly attribute optional char_string<16> manufacturingDate = 11; + readonly attribute optional char_string<32> partNumber = 12; + readonly attribute optional long_char_string<256> productURL = 13; + readonly attribute optional char_string<64> productLabel = 14; + readonly attribute optional char_string<32> serialNumber = 15; + attribute access(write: manage) optional boolean localConfigDisabled = 16; + readonly attribute optional boolean reachable = 17; + readonly attribute optional char_string<32> uniqueID = 18; readonly attribute CapabilityMinimaStruct capabilityMinima = 19; + readonly attribute optional ProductAppearanceStruct productAppearance = 20; readonly attribute int32u specificationVersion = 21; readonly attribute int16u maxPathsPerInvoke = 22; readonly attribute command_id generatedCommandList[] = 65528; @@ -233,10 +252,14 @@ server cluster BasicInformation = 40 { readonly attribute attrib_id attributeList[] = 65531; readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + + command MfgSpecificPing(): DefaultSuccess = 0; } /** Provides an interface for providing OTA software updates */ -client cluster OtaSoftwareUpdateProvider = 41 { +cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -310,7 +333,9 @@ client cluster OtaSoftwareUpdateProvider = 41 { } /** Provides an interface for downloading and applying OTA software updates */ -server cluster OtaSoftwareUpdateRequestor = 42 { +cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -362,7 +387,7 @@ server cluster OtaSoftwareUpdateRequestor = 42 { nullable int64s platformCode = 3; } - attribute ProviderLocation defaultOTAProviders[] = 0; + attribute access(write: administer) ProviderLocation defaultOTAProviders[] = 0; readonly attribute boolean updatePossible = 1; readonly attribute UpdateStateEnum updateState = 2; readonly attribute nullable int8u updateStateProgress = 3; @@ -381,11 +406,14 @@ server cluster OtaSoftwareUpdateRequestor = 42 { endpoint_no endpoint = 4; } + /** Announce the presence of an OTA Provider */ command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } /** This cluster is used to manage global aspects of the Commissioning flow. */ -server cluster GeneralCommissioning = 48 { +cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -422,17 +450,17 @@ server cluster GeneralCommissioning = 48 { int64u breadcrumb = 1; } + response struct ArmFailSafeResponse = 1 { + CommissioningErrorEnum errorCode = 0; + char_string<128> debugText = 1; + } + request struct SetRegulatoryConfigRequest { RegulatoryLocationTypeEnum newRegulatoryConfig = 0; char_string<2> countryCode = 1; int64u breadcrumb = 2; } - response struct ArmFailSafeResponse = 1 { - CommissioningErrorEnum errorCode = 0; - char_string<128> debugText = 1; - } - response struct SetRegulatoryConfigResponse = 3 { CommissioningErrorEnum errorCode = 0; char_string debugText = 1; @@ -443,13 +471,18 @@ server cluster GeneralCommissioning = 48 { char_string debugText = 1; } + /** Arm the persistent fail-safe timer with an expiry time of now + ExpiryLengthSeconds using device clock */ command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; + /** Set the regulatory configuration to be used during commissioning */ command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; + /** Signals the Server that the Client has successfully completed all steps of Commissioning/Recofiguration needed during fail-safe period. */ fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ -server cluster NetworkCommissioning = 49 { +cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -528,12 +561,15 @@ server cluster NetworkCommissioning = 49 { readonly attribute access(read: administer) int8u maxNetworks = 0; readonly attribute access(read: administer) NetworkInfoStruct networks[] = 1; - readonly attribute int8u scanMaxTimeSeconds = 2; - readonly attribute int8u connectMaxTimeSeconds = 3; + readonly attribute optional int8u scanMaxTimeSeconds = 2; + readonly attribute optional int8u connectMaxTimeSeconds = 3; attribute access(write: administer) boolean interfaceEnabled = 4; readonly attribute access(read: administer) nullable NetworkCommissioningStatusEnum lastNetworkingStatus = 5; readonly attribute access(read: administer) nullable octet_string<32> lastNetworkID = 6; readonly attribute access(read: administer) nullable int32s lastConnectErrorValue = 7; + readonly attribute optional WiFiBandEnum supportedWiFiBands[] = 8; + readonly attribute optional ThreadCapabilitiesBitmap supportedThreadFeatures = 9; + readonly attribute optional int16u threadVersion = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -546,6 +582,13 @@ server cluster NetworkCommissioning = 49 { optional int64u breadcrumb = 1; } + response struct ScanNetworksResponse = 1 { + NetworkCommissioningStatusEnum networkingStatus = 0; + optional char_string debugText = 1; + optional WiFiInterfaceScanResultStruct wiFiScanResults[] = 2; + optional ThreadInterfaceScanResultStruct threadScanResults[] = 3; + } + request struct AddOrUpdateWiFiNetworkRequest { octet_string<32> ssid = 0; octet_string<64> credentials = 1; @@ -565,48 +608,61 @@ server cluster NetworkCommissioning = 49 { optional int64u breadcrumb = 1; } + response struct NetworkConfigResponse = 5 { + NetworkCommissioningStatusEnum networkingStatus = 0; + optional char_string<512> debugText = 1; + optional int8u networkIndex = 2; + optional octet_string<140> clientIdentity = 3; + optional octet_string<64> possessionSignature = 4; + } + request struct ConnectNetworkRequest { octet_string<32> networkID = 0; optional int64u breadcrumb = 1; } + response struct ConnectNetworkResponse = 7 { + NetworkCommissioningStatusEnum networkingStatus = 0; + optional char_string debugText = 1; + nullable int32s errorValue = 2; + } + request struct ReorderNetworkRequest { octet_string<32> networkID = 0; int8u networkIndex = 1; optional int64u breadcrumb = 2; } - response struct ScanNetworksResponse = 1 { - NetworkCommissioningStatusEnum networkingStatus = 0; - optional char_string debugText = 1; - optional WiFiInterfaceScanResultStruct wiFiScanResults[] = 2; - optional ThreadInterfaceScanResultStruct threadScanResults[] = 3; - } - - response struct NetworkConfigResponse = 5 { - NetworkCommissioningStatusEnum networkingStatus = 0; - optional char_string<512> debugText = 1; - optional int8u networkIndex = 2; - optional octet_string<140> clientIdentity = 3; - optional octet_string<64> possessionSignature = 4; + request struct QueryIdentityRequest { + octet_string<20> keyIdentifier = 0; + optional octet_string<32> possessionNonce = 1; } - response struct ConnectNetworkResponse = 7 { - NetworkCommissioningStatusEnum networkingStatus = 0; - optional char_string debugText = 1; - nullable int32s errorValue = 2; + response struct QueryIdentityResponse = 10 { + octet_string<140> identity = 0; + optional octet_string<64> possessionSignature = 1; } + /** Detemine the set of networks the device sees as available. */ command access(invoke: administer) ScanNetworks(ScanNetworksRequest): ScanNetworksResponse = 0; + /** Add or update the credentials for a given Wi-Fi network. */ command access(invoke: administer) AddOrUpdateWiFiNetwork(AddOrUpdateWiFiNetworkRequest): NetworkConfigResponse = 2; + /** Add or update the credentials for a given Thread network. */ command access(invoke: administer) AddOrUpdateThreadNetwork(AddOrUpdateThreadNetworkRequest): NetworkConfigResponse = 3; + /** Remove the definition of a given network (including its credentials). */ command access(invoke: administer) RemoveNetwork(RemoveNetworkRequest): NetworkConfigResponse = 4; + /** Connect to the specified network, using previously-defined credentials. */ command access(invoke: administer) ConnectNetwork(ConnectNetworkRequest): ConnectNetworkResponse = 6; + /** Modify the order in which networks will be presented in the Networks attribute. */ command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; + /** Retrieve details about and optionally proof of possession of a network client identity. */ + command access(invoke: administer) QueryIdentity(QueryIdentityRequest): QueryIdentityResponse = 9; } /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ -server cluster GeneralDiagnostics = 51 { +cluster GeneralDiagnostics = 51 { + revision 2; + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -688,12 +744,12 @@ server cluster GeneralDiagnostics = 51 { readonly attribute NetworkInterface networkInterfaces[] = 0; readonly attribute int16u rebootCount = 1; - readonly attribute int64u upTime = 2; - readonly attribute int32u totalOperationalHours = 3; - readonly attribute BootReasonEnum bootReason = 4; - readonly attribute HardwareFaultEnum activeHardwareFaults[] = 5; - readonly attribute RadioFaultEnum activeRadioFaults[] = 6; - readonly attribute NetworkFaultEnum activeNetworkFaults[] = 7; + readonly attribute optional int64u upTime = 2; + readonly attribute optional int32u totalOperationalHours = 3; + readonly attribute optional BootReasonEnum bootReason = 4; + readonly attribute optional HardwareFaultEnum activeHardwareFaults[] = 5; + readonly attribute optional RadioFaultEnum activeRadioFaults[] = 6; + readonly attribute optional NetworkFaultEnum activeNetworkFaults[] = 7; readonly attribute boolean testEventTriggersEnabled = 8; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; @@ -708,16 +764,20 @@ server cluster GeneralDiagnostics = 51 { } response struct TimeSnapshotResponse = 2 { - systime_us systemTimeUs = 0; - nullable epoch_us UTCTimeUs = 1; + systime_ms systemTimeMs = 0; + nullable posix_ms posixTimeMs = 1; } + /** Provide a means for certification tests to trigger some test-plan-specific events */ command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; + /** Take a snapshot of system time and epoch time. */ command TimeSnapshot(): TimeSnapshotResponse = 1; } /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ -server cluster SoftwareDiagnostics = 52 { +cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -736,10 +796,10 @@ server cluster SoftwareDiagnostics = 52 { optional octet_string faultRecording = 2; } - readonly attribute ThreadMetricsStruct threadMetrics[] = 0; - readonly attribute int64u currentHeapFree = 1; - readonly attribute int64u currentHeapUsed = 2; - readonly attribute int64u currentHeapHighWatermark = 3; + readonly attribute optional ThreadMetricsStruct threadMetrics[] = 0; + readonly attribute optional int64u currentHeapFree = 1; + readonly attribute optional int64u currentHeapUsed = 2; + readonly attribute optional int64u currentHeapHighWatermark = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -747,11 +807,14 @@ server cluster SoftwareDiagnostics = 52 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + /** Reception of this command SHALL reset the values: The StackFreeMinimum field of the ThreadMetrics attribute, CurrentHeapHighWaterMark attribute. */ command access(invoke: manage) ResetWatermarks(): DefaultSuccess = 0; } /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ -server cluster ThreadNetworkDiagnostics = 53 { +cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -846,7 +909,7 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute nullable int16u panId = 3; readonly attribute nullable int64u extendedPanId = 4; readonly attribute nullable octet_string<17> meshLocalPrefix = 5; - readonly attribute int64u overrunCount = 6; + readonly attribute optional int64u overrunCount = 6; readonly attribute NeighborTableStruct neighborTable[] = 7; readonly attribute RouteTableStruct routeTable[] = 8; readonly attribute nullable int32u partitionId = 9; @@ -854,51 +917,51 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute nullable int16u dataVersion = 11; readonly attribute nullable int16u stableDataVersion = 12; readonly attribute nullable int8u leaderRouterId = 13; - readonly attribute int16u detachedRoleCount = 14; - readonly attribute int16u childRoleCount = 15; - readonly attribute int16u routerRoleCount = 16; - readonly attribute int16u leaderRoleCount = 17; - readonly attribute int16u attachAttemptCount = 18; - readonly attribute int16u partitionIdChangeCount = 19; - readonly attribute int16u betterPartitionAttachAttemptCount = 20; - readonly attribute int16u parentChangeCount = 21; - readonly attribute int32u txTotalCount = 22; - readonly attribute int32u txUnicastCount = 23; - readonly attribute int32u txBroadcastCount = 24; - readonly attribute int32u txAckRequestedCount = 25; - readonly attribute int32u txAckedCount = 26; - readonly attribute int32u txNoAckRequestedCount = 27; - readonly attribute int32u txDataCount = 28; - readonly attribute int32u txDataPollCount = 29; - readonly attribute int32u txBeaconCount = 30; - readonly attribute int32u txBeaconRequestCount = 31; - readonly attribute int32u txOtherCount = 32; - readonly attribute int32u txRetryCount = 33; - readonly attribute int32u txDirectMaxRetryExpiryCount = 34; - readonly attribute int32u txIndirectMaxRetryExpiryCount = 35; - readonly attribute int32u txErrCcaCount = 36; - readonly attribute int32u txErrAbortCount = 37; - readonly attribute int32u txErrBusyChannelCount = 38; - readonly attribute int32u rxTotalCount = 39; - readonly attribute int32u rxUnicastCount = 40; - readonly attribute int32u rxBroadcastCount = 41; - readonly attribute int32u rxDataCount = 42; - readonly attribute int32u rxDataPollCount = 43; - readonly attribute int32u rxBeaconCount = 44; - readonly attribute int32u rxBeaconRequestCount = 45; - readonly attribute int32u rxOtherCount = 46; - readonly attribute int32u rxAddressFilteredCount = 47; - readonly attribute int32u rxDestAddrFilteredCount = 48; - readonly attribute int32u rxDuplicatedCount = 49; - readonly attribute int32u rxErrNoFrameCount = 50; - readonly attribute int32u rxErrUnknownNeighborCount = 51; - readonly attribute int32u rxErrInvalidSrcAddrCount = 52; - readonly attribute int32u rxErrSecCount = 53; - readonly attribute int32u rxErrFcsCount = 54; - readonly attribute int32u rxErrOtherCount = 55; - readonly attribute nullable int64u activeTimestamp = 56; - readonly attribute nullable int64u pendingTimestamp = 57; - readonly attribute nullable int32u delay = 58; + readonly attribute optional int16u detachedRoleCount = 14; + readonly attribute optional int16u childRoleCount = 15; + readonly attribute optional int16u routerRoleCount = 16; + readonly attribute optional int16u leaderRoleCount = 17; + readonly attribute optional int16u attachAttemptCount = 18; + readonly attribute optional int16u partitionIdChangeCount = 19; + readonly attribute optional int16u betterPartitionAttachAttemptCount = 20; + readonly attribute optional int16u parentChangeCount = 21; + readonly attribute optional int32u txTotalCount = 22; + readonly attribute optional int32u txUnicastCount = 23; + readonly attribute optional int32u txBroadcastCount = 24; + readonly attribute optional int32u txAckRequestedCount = 25; + readonly attribute optional int32u txAckedCount = 26; + readonly attribute optional int32u txNoAckRequestedCount = 27; + readonly attribute optional int32u txDataCount = 28; + readonly attribute optional int32u txDataPollCount = 29; + readonly attribute optional int32u txBeaconCount = 30; + readonly attribute optional int32u txBeaconRequestCount = 31; + readonly attribute optional int32u txOtherCount = 32; + readonly attribute optional int32u txRetryCount = 33; + readonly attribute optional int32u txDirectMaxRetryExpiryCount = 34; + readonly attribute optional int32u txIndirectMaxRetryExpiryCount = 35; + readonly attribute optional int32u txErrCcaCount = 36; + readonly attribute optional int32u txErrAbortCount = 37; + readonly attribute optional int32u txErrBusyChannelCount = 38; + readonly attribute optional int32u rxTotalCount = 39; + readonly attribute optional int32u rxUnicastCount = 40; + readonly attribute optional int32u rxBroadcastCount = 41; + readonly attribute optional int32u rxDataCount = 42; + readonly attribute optional int32u rxDataPollCount = 43; + readonly attribute optional int32u rxBeaconCount = 44; + readonly attribute optional int32u rxBeaconRequestCount = 45; + readonly attribute optional int32u rxOtherCount = 46; + readonly attribute optional int32u rxAddressFilteredCount = 47; + readonly attribute optional int32u rxDestAddrFilteredCount = 48; + readonly attribute optional int32u rxDuplicatedCount = 49; + readonly attribute optional int32u rxErrNoFrameCount = 50; + readonly attribute optional int32u rxErrUnknownNeighborCount = 51; + readonly attribute optional int32u rxErrInvalidSrcAddrCount = 52; + readonly attribute optional int32u rxErrSecCount = 53; + readonly attribute optional int32u rxErrFcsCount = 54; + readonly attribute optional int32u rxErrOtherCount = 55; + readonly attribute optional nullable int64u activeTimestamp = 56; + readonly attribute optional nullable int64u pendingTimestamp = 57; + readonly attribute optional nullable int32u delay = 58; readonly attribute nullable SecurityPolicy securityPolicy = 59; readonly attribute nullable octet_string<4> channelPage0Mask = 60; readonly attribute nullable OperationalDatasetComponents operationalDatasetComponents = 61; @@ -910,11 +973,14 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + /** Reception of this command SHALL reset the OverrunCount attributes to 0 */ command access(invoke: manage) ResetCounts(): DefaultSuccess = 0; } /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ -server cluster WiFiNetworkDiagnostics = 54 { +cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -969,14 +1035,14 @@ server cluster WiFiNetworkDiagnostics = 54 { readonly attribute nullable WiFiVersionEnum wiFiVersion = 2; readonly attribute nullable int16u channelNumber = 3; readonly attribute nullable int8s rssi = 4; - readonly attribute nullable int32u beaconLostCount = 5; - readonly attribute nullable int32u beaconRxCount = 6; - readonly attribute nullable int32u packetMulticastRxCount = 7; - readonly attribute nullable int32u packetMulticastTxCount = 8; - readonly attribute nullable int32u packetUnicastRxCount = 9; - readonly attribute nullable int32u packetUnicastTxCount = 10; - readonly attribute nullable int64u currentMaxRate = 11; - readonly attribute nullable int64u overrunCount = 12; + readonly attribute optional nullable int32u beaconLostCount = 5; + readonly attribute optional nullable int32u beaconRxCount = 6; + readonly attribute optional nullable int32u packetMulticastRxCount = 7; + readonly attribute optional nullable int32u packetMulticastTxCount = 8; + readonly attribute optional nullable int32u packetUnicastRxCount = 9; + readonly attribute optional nullable int32u packetUnicastTxCount = 10; + readonly attribute optional nullable int64u currentMaxRate = 11; + readonly attribute optional nullable int64u overrunCount = 12; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -984,11 +1050,14 @@ server cluster WiFiNetworkDiagnostics = 54 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + /** Reception of this command SHALL reset the Breacon and Packet related count attributes to 0 */ command ResetCounts(): DefaultSuccess = 0; } /** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ -server cluster EthernetNetworkDiagnostics = 55 { +cluster EthernetNetworkDiagnostics = 55 { + revision 1; // NOTE: Default/not specifically set + enum PHYRateEnum : enum8 { kRate10M = 0; kRate100M = 1; @@ -1007,15 +1076,15 @@ server cluster EthernetNetworkDiagnostics = 55 { kErrorCounts = 0x2; } - readonly attribute nullable PHYRateEnum PHYRate = 0; - readonly attribute nullable boolean fullDuplex = 1; - readonly attribute int64u packetRxCount = 2; - readonly attribute int64u packetTxCount = 3; - readonly attribute int64u txErrCount = 4; - readonly attribute int64u collisionCount = 5; - readonly attribute int64u overrunCount = 6; - readonly attribute nullable boolean carrierDetect = 7; - readonly attribute int64u timeSinceReset = 8; + readonly attribute optional nullable PHYRateEnum PHYRate = 0; + readonly attribute optional nullable boolean fullDuplex = 1; + readonly attribute optional int64u packetRxCount = 2; + readonly attribute optional int64u packetTxCount = 3; + readonly attribute optional int64u txErrCount = 4; + readonly attribute optional int64u collisionCount = 5; + readonly attribute optional int64u overrunCount = 6; + readonly attribute optional nullable boolean carrierDetect = 7; + readonly attribute optional int64u timeSinceReset = 8; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1023,11 +1092,14 @@ server cluster EthernetNetworkDiagnostics = 55 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + /** Reception of this command SHALL reset the attributes: PacketRxCount, PacketTxCount, TxErrCount, CollisionCount, OverrunCount to 0 */ command access(invoke: manage) ResetCounts(): DefaultSuccess = 0; } /** Commands to trigger a Node to allow a new Administrator to commission it. */ -server cluster AdministratorCommissioning = 60 { +cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1066,13 +1138,18 @@ server cluster AdministratorCommissioning = 60 { int16u commissioningTimeout = 0; } + /** This command is used by a current Administrator to instruct a Node to go into commissioning mode using enhanced commissioning method. */ timed command access(invoke: administer) OpenCommissioningWindow(OpenCommissioningWindowRequest): DefaultSuccess = 0; + /** This command is used by a current Administrator to instruct a Node to go into commissioning mode using basic commissioning method, if the node supports it. */ timed command access(invoke: administer) OpenBasicCommissioningWindow(OpenBasicCommissioningWindowRequest): DefaultSuccess = 1; + /** This command is used by a current Administrator to instruct a Node to revoke any active Open Commissioning Window or Open Basic Commissioning Window command. */ timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ -server cluster OperationalCredentials = 62 { +cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1123,15 +1200,29 @@ server cluster OperationalCredentials = 62 { octet_string<32> attestationNonce = 0; } + response struct AttestationResponse = 1 { + octet_string<900> attestationElements = 0; + octet_string<64> attestationSignature = 1; + } + request struct CertificateChainRequestRequest { CertificateChainTypeEnum certificateType = 0; } + response struct CertificateChainResponse = 3 { + octet_string<600> certificate = 0; + } + request struct CSRRequestRequest { octet_string<32> CSRNonce = 0; optional boolean isForUpdateNOC = 1; } + response struct CSRResponse = 5 { + octet_string NOCSRElements = 0; + octet_string attestationSignature = 1; + } + request struct AddNOCRequest { octet_string<400> NOCValue = 0; optional octet_string<400> ICACValue = 1; @@ -1145,6 +1236,12 @@ server cluster OperationalCredentials = 62 { optional octet_string ICACValue = 1; } + response struct NOCResponse = 8 { + NodeOperationalCertStatusEnum statusCode = 0; + optional fabric_idx fabricIndex = 1; + optional char_string<128> debugText = 2; + } + request struct UpdateFabricLabelRequest { char_string<32> label = 0; } @@ -1157,38 +1254,28 @@ server cluster OperationalCredentials = 62 { octet_string rootCACertificate = 0; } - response struct AttestationResponse = 1 { - octet_string<900> attestationElements = 0; - octet_string<64> attestationSignature = 1; - } - - response struct CertificateChainResponse = 3 { - octet_string<600> certificate = 0; - } - - response struct CSRResponse = 5 { - octet_string NOCSRElements = 0; - octet_string attestationSignature = 1; - } - - response struct NOCResponse = 8 { - NodeOperationalCertStatusEnum statusCode = 0; - optional fabric_idx fabricIndex = 1; - optional char_string<128> debugText = 2; - } - + /** Sender is requesting attestation information from the receiver. */ command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0; + /** Sender is requesting a device attestation certificate from the receiver. */ command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; + /** Sender is requesting a certificate signing request (CSR) from the receiver. */ command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; + /** Sender is requesting to add the new node operational certificates. */ command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; + /** Sender is requesting to update the node operational certificates. */ fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + /** This command SHALL be used by an Administrative Node to set the user-visible Label field for a given Fabric, as reflected by entries in the Fabrics attribute. */ fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + /** This command is used by Administrative Nodes to remove a given fabric index and delete all associated fabric-scoped data. */ command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; + /** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */ command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ -server cluster GroupKeyManagement = 63 { +cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -1241,26 +1328,32 @@ server cluster GroupKeyManagement = 63 { int16u groupKeySetID = 0; } - request struct KeySetRemoveRequest { - int16u groupKeySetID = 0; - } - response struct KeySetReadResponse = 2 { GroupKeySetStruct groupKeySet = 0; } + request struct KeySetRemoveRequest { + int16u groupKeySetID = 0; + } + response struct KeySetReadAllIndicesResponse = 5 { int16u groupKeySetIDs[] = 0; } + /** Write a new set of keys for the given key set id. */ fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + /** Read the keys for a given key set id. */ fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + /** Revoke a Root Key from a Group */ fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + /** Return the list of Group Key Sets associated with the accessing fabric */ fabric command access(invoke: administer) KeySetReadAllIndices(): KeySetReadAllIndicesResponse = 4; } /** Attributes for reporting air quality classification */ -server cluster AirQuality = 91 { +cluster AirQuality = 91 { + revision 1; // NOTE: Default/not specifically set + enum AirQualityEnum : enum8 { kUnknown = 0; kGood = 1; @@ -1288,10 +1381,13 @@ server cluster AirQuality = 91 { } /** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ -server cluster TemperatureMeasurement = 1026 { +cluster TemperatureMeasurement = 1026 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable temperature measuredValue = 0; readonly attribute nullable temperature minMeasuredValue = 1; readonly attribute nullable temperature maxMeasuredValue = 2; + readonly attribute optional int16u tolerance = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1301,10 +1397,13 @@ server cluster TemperatureMeasurement = 1026 { } /** Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements. */ -server cluster RelativeHumidityMeasurement = 1029 { +cluster RelativeHumidityMeasurement = 1029 { + revision 3; + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; + readonly attribute optional int16u tolerance = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1314,7 +1413,9 @@ server cluster RelativeHumidityMeasurement = 1029 { } /** Attributes for reporting carbon monoxide concentration measurements */ -server cluster CarbonMonoxideConcentrationMeasurement = 1036 { +cluster CarbonMonoxideConcentrationMeasurement = 1036 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1349,9 +1450,17 @@ server cluster CarbonMonoxideConcentrationMeasurement = 1036 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1361,7 +1470,9 @@ server cluster CarbonMonoxideConcentrationMeasurement = 1036 { } /** Attributes for reporting carbon dioxide concentration measurements */ -server cluster CarbonDioxideConcentrationMeasurement = 1037 { +cluster CarbonDioxideConcentrationMeasurement = 1037 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1396,9 +1507,17 @@ server cluster CarbonDioxideConcentrationMeasurement = 1037 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1408,7 +1527,9 @@ server cluster CarbonDioxideConcentrationMeasurement = 1037 { } /** Attributes for reporting nitrogen dioxide concentration measurements */ -server cluster NitrogenDioxideConcentrationMeasurement = 1043 { +cluster NitrogenDioxideConcentrationMeasurement = 1043 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1443,9 +1564,17 @@ server cluster NitrogenDioxideConcentrationMeasurement = 1043 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1455,7 +1584,9 @@ server cluster NitrogenDioxideConcentrationMeasurement = 1043 { } /** Attributes for reporting ozone concentration measurements */ -server cluster OzoneConcentrationMeasurement = 1045 { +cluster OzoneConcentrationMeasurement = 1045 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1490,9 +1621,17 @@ server cluster OzoneConcentrationMeasurement = 1045 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1502,7 +1641,9 @@ server cluster OzoneConcentrationMeasurement = 1045 { } /** Attributes for reporting PM2.5 concentration measurements */ -server cluster Pm25ConcentrationMeasurement = 1066 { +cluster Pm25ConcentrationMeasurement = 1066 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1537,9 +1678,17 @@ server cluster Pm25ConcentrationMeasurement = 1066 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1549,7 +1698,9 @@ server cluster Pm25ConcentrationMeasurement = 1066 { } /** Attributes for reporting formaldehyde concentration measurements */ -server cluster FormaldehydeConcentrationMeasurement = 1067 { +cluster FormaldehydeConcentrationMeasurement = 1067 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1584,9 +1735,17 @@ server cluster FormaldehydeConcentrationMeasurement = 1067 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1596,7 +1755,9 @@ server cluster FormaldehydeConcentrationMeasurement = 1067 { } /** Attributes for reporting PM1 concentration measurements */ -server cluster Pm1ConcentrationMeasurement = 1068 { +cluster Pm1ConcentrationMeasurement = 1068 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1631,9 +1792,17 @@ server cluster Pm1ConcentrationMeasurement = 1068 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1643,7 +1812,9 @@ server cluster Pm1ConcentrationMeasurement = 1068 { } /** Attributes for reporting PM10 concentration measurements */ -server cluster Pm10ConcentrationMeasurement = 1069 { +cluster Pm10ConcentrationMeasurement = 1069 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1678,9 +1849,17 @@ server cluster Pm10ConcentrationMeasurement = 1069 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1690,7 +1869,9 @@ server cluster Pm10ConcentrationMeasurement = 1069 { } /** Attributes for reporting total volatile organic compounds concentration measurements */ -server cluster TotalVolatileOrganicCompoundsConcentrationMeasurement = 1070 { +cluster TotalVolatileOrganicCompoundsConcentrationMeasurement = 1070 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1725,9 +1906,17 @@ server cluster TotalVolatileOrganicCompoundsConcentrationMeasurement = 1070 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1737,7 +1926,9 @@ server cluster TotalVolatileOrganicCompoundsConcentrationMeasurement = 1070 { } /** Attributes for reporting radon concentration measurements */ -server cluster RadonConcentrationMeasurement = 1071 { +cluster RadonConcentrationMeasurement = 1071 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -1772,9 +1963,17 @@ server cluster RadonConcentrationMeasurement = 1071 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1794,7 +1993,7 @@ endpoint 0 { callback attribute clientList; callback attribute partsList; ram attribute featureMap default = 0; - callback attribute clusterRevision default = 1; + callback attribute clusterRevision; } server cluster AccessControl { @@ -1802,30 +2001,30 @@ endpoint 0 { emits event AccessControlExtensionChanged; callback attribute acl; callback attribute extension; - callback attribute subjectsPerAccessControlEntry default = 4; - callback attribute targetsPerAccessControlEntry default = 3; - callback attribute accessControlEntriesPerFabric default = 4; + callback attribute subjectsPerAccessControlEntry; + callback attribute targetsPerAccessControlEntry; + callback attribute accessControlEntriesPerFabric; callback attribute attributeList; ram attribute featureMap default = 0; - callback attribute clusterRevision default = 1; + callback attribute clusterRevision; } server cluster BasicInformation { emits event StartUp; emits event ShutDown; emits event Leave; - callback attribute dataModelRevision default = 10; + callback attribute dataModelRevision; callback attribute vendorName; callback attribute vendorID; callback attribute productName; callback attribute productID; persist attribute nodeLabel; - callback attribute location default = "XX"; - callback attribute hardwareVersion default = 0; + callback attribute location; + callback attribute hardwareVersion; callback attribute hardwareVersionString; - callback attribute softwareVersion default = 0; + callback attribute softwareVersion; callback attribute softwareVersionString; - callback attribute manufacturingDate default = "20210614123456ZZ"; + callback attribute manufacturingDate; callback attribute partNumber; callback attribute productURL; callback attribute productLabel; @@ -1843,7 +2042,7 @@ endpoint 0 { emits event StateTransition; emits event VersionApplied; emits event DownloadError; - callback attribute defaultOTAProviders default = 0; + callback attribute defaultOTAProviders; ram attribute updatePossible default = 1; ram attribute updateState default = 0; ram attribute updateStateProgress default = 0; @@ -1856,9 +2055,9 @@ endpoint 0 { server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; - callback attribute regulatoryConfig default = 0; - callback attribute locationCapability default = 0; - callback attribute supportsConcurrentConnection default = 1; + callback attribute regulatoryConfig; + callback attribute locationCapability; + callback attribute supportsConcurrentConnection; ram attribute featureMap default = 6; ram attribute clusterRevision default = 1; @@ -1896,9 +2095,9 @@ endpoint 0 { server cluster GeneralDiagnostics { emits event BootReason; callback attribute networkInterfaces; - callback attribute rebootCount default = 0x0000; - callback attribute upTime default = 0x0000000000000000; - callback attribute totalOperationalHours default = 0x00000000; + callback attribute rebootCount; + callback attribute upTime; + callback attribute totalOperationalHours; callback attribute bootReason; callback attribute activeHardwareFaults; callback attribute activeRadioFaults; @@ -1914,10 +2113,10 @@ endpoint 0 { server cluster SoftwareDiagnostics { callback attribute threadMetrics; - callback attribute currentHeapFree default = 0x0000000000000000; - callback attribute currentHeapUsed default = 0x0000000000000000; - callback attribute currentHeapHighWatermark default = 0x0000000000000000; - callback attribute featureMap default = 1; + callback attribute currentHeapFree; + callback attribute currentHeapUsed; + callback attribute currentHeapHighWatermark; + callback attribute featureMap; ram attribute clusterRevision default = 1; handle command ResetWatermarks; @@ -1926,11 +2125,11 @@ endpoint 0 { server cluster ThreadNetworkDiagnostics { callback attribute channel; callback attribute routingRole; - callback attribute networkName default = "0"; - callback attribute panId default = 0x0000; - callback attribute extendedPanId default = 0x0000000000000000; + callback attribute networkName; + callback attribute panId; + callback attribute extendedPanId; callback attribute meshLocalPrefix; - callback attribute overrunCount default = 0x0000000000000000; + callback attribute overrunCount; callback attribute neighborTable; callback attribute routeTable; callback attribute partitionId; @@ -1938,53 +2137,53 @@ endpoint 0 { callback attribute dataVersion; callback attribute stableDataVersion; callback attribute leaderRouterId; - callback attribute detachedRoleCount default = 0x0000; - callback attribute childRoleCount default = 0x0000; - callback attribute routerRoleCount default = 0x0000; - callback attribute leaderRoleCount default = 0x0000; - callback attribute attachAttemptCount default = 0x0000; - callback attribute partitionIdChangeCount default = 0x0000; - callback attribute betterPartitionAttachAttemptCount default = 0x0000; - callback attribute parentChangeCount default = 0x0000; - callback attribute txTotalCount default = 0x0000; - callback attribute txUnicastCount default = 0x0000; - callback attribute txBroadcastCount default = 0x0000; - callback attribute txAckRequestedCount default = 0x0000; - callback attribute txAckedCount default = 0x0000; - callback attribute txNoAckRequestedCount default = 0x0000; - callback attribute txDataCount default = 0x0000; - callback attribute txDataPollCount default = 0x0000; - callback attribute txBeaconCount default = 0x0000; - callback attribute txBeaconRequestCount default = 0x0000; - callback attribute txOtherCount default = 0x0000; - callback attribute txRetryCount default = 0x0000; - callback attribute txDirectMaxRetryExpiryCount default = 0x0000; - callback attribute txIndirectMaxRetryExpiryCount default = 0x0000; - callback attribute txErrCcaCount default = 0x0000; - callback attribute txErrAbortCount default = 0x0000; - callback attribute txErrBusyChannelCount default = 0x0000; - callback attribute rxTotalCount default = 0x0000; - callback attribute rxUnicastCount default = 0x0000; - callback attribute rxBroadcastCount default = 0x0000; - callback attribute rxDataCount default = 0x0000; - callback attribute rxDataPollCount default = 0x0000; - callback attribute rxBeaconCount default = 0x0000; - callback attribute rxBeaconRequestCount default = 0x0000; - callback attribute rxOtherCount default = 0x0000; - callback attribute rxAddressFilteredCount default = 0x0000; - callback attribute rxDestAddrFilteredCount default = 0x0000; - callback attribute rxDuplicatedCount default = 0x0000; - callback attribute rxErrNoFrameCount default = 0x0000; - callback attribute rxErrUnknownNeighborCount default = 0x0000; - callback attribute rxErrInvalidSrcAddrCount default = 0x0000; - callback attribute rxErrSecCount default = 0x0000; - callback attribute rxErrFcsCount default = 0x0000; - callback attribute rxErrOtherCount default = 0x0000; - callback attribute activeTimestamp default = 0x0000000000000000; - callback attribute pendingTimestamp default = 0x0000000000000000; - callback attribute delay default = 0x0000; + callback attribute detachedRoleCount; + callback attribute childRoleCount; + callback attribute routerRoleCount; + callback attribute leaderRoleCount; + callback attribute attachAttemptCount; + callback attribute partitionIdChangeCount; + callback attribute betterPartitionAttachAttemptCount; + callback attribute parentChangeCount; + callback attribute txTotalCount; + callback attribute txUnicastCount; + callback attribute txBroadcastCount; + callback attribute txAckRequestedCount; + callback attribute txAckedCount; + callback attribute txNoAckRequestedCount; + callback attribute txDataCount; + callback attribute txDataPollCount; + callback attribute txBeaconCount; + callback attribute txBeaconRequestCount; + callback attribute txOtherCount; + callback attribute txRetryCount; + callback attribute txDirectMaxRetryExpiryCount; + callback attribute txIndirectMaxRetryExpiryCount; + callback attribute txErrCcaCount; + callback attribute txErrAbortCount; + callback attribute txErrBusyChannelCount; + callback attribute rxTotalCount; + callback attribute rxUnicastCount; + callback attribute rxBroadcastCount; + callback attribute rxDataCount; + callback attribute rxDataPollCount; + callback attribute rxBeaconCount; + callback attribute rxBeaconRequestCount; + callback attribute rxOtherCount; + callback attribute rxAddressFilteredCount; + callback attribute rxDestAddrFilteredCount; + callback attribute rxDuplicatedCount; + callback attribute rxErrNoFrameCount; + callback attribute rxErrUnknownNeighborCount; + callback attribute rxErrInvalidSrcAddrCount; + callback attribute rxErrSecCount; + callback attribute rxErrFcsCount; + callback attribute rxErrOtherCount; + callback attribute activeTimestamp; + callback attribute pendingTimestamp; + callback attribute delay; callback attribute securityPolicy; - callback attribute channelPage0Mask default = "0x0000"; + callback attribute channelPage0Mask; callback attribute operationalDatasetComponents; callback attribute activeNetworkFaultsList; ram attribute featureMap default = 0x000F; @@ -2000,16 +2199,16 @@ endpoint 0 { callback attribute bssid; callback attribute securityType; callback attribute wiFiVersion; - callback attribute channelNumber default = 0x0000; - callback attribute rssi default = 0x00; - callback attribute beaconLostCount default = 0x00000000; - callback attribute beaconRxCount default = 0x00000000; - callback attribute packetMulticastRxCount default = 0x00000000; - callback attribute packetMulticastTxCount default = 0x00000000; - callback attribute packetUnicastRxCount default = 0x00000000; - callback attribute packetUnicastTxCount default = 0x00000000; - callback attribute currentMaxRate default = 0x0000000000000000; - callback attribute overrunCount default = 0x0000000000000000; + callback attribute channelNumber; + callback attribute rssi; + callback attribute beaconLostCount; + callback attribute beaconRxCount; + callback attribute packetMulticastRxCount; + callback attribute packetMulticastTxCount; + callback attribute packetUnicastRxCount; + callback attribute packetUnicastTxCount; + callback attribute currentMaxRate; + callback attribute overrunCount; ram attribute featureMap default = 3; ram attribute clusterRevision default = 1; @@ -2018,14 +2217,14 @@ endpoint 0 { server cluster EthernetNetworkDiagnostics { callback attribute PHYRate; - callback attribute fullDuplex default = 0x00; - callback attribute packetRxCount default = 0x0000000000000000; - callback attribute packetTxCount default = 0x0000000000000000; - callback attribute txErrCount default = 0x0000000000000000; - callback attribute collisionCount default = 0x0000000000000000; - callback attribute overrunCount default = 0x0000000000000000; - callback attribute carrierDetect default = 0x00; - callback attribute timeSinceReset default = 0x0000000000000000; + callback attribute fullDuplex; + callback attribute packetRxCount; + callback attribute packetTxCount; + callback attribute txErrCount; + callback attribute collisionCount; + callback attribute overrunCount; + callback attribute carrierDetect; + callback attribute timeSinceReset; ram attribute featureMap default = 3; ram attribute clusterRevision default = 1; @@ -2033,9 +2232,9 @@ endpoint 0 { } server cluster AdministratorCommissioning { - callback attribute windowStatus default = 0; - callback attribute adminFabricIndex default = 1; - callback attribute adminVendorId default = 0; + callback attribute windowStatus; + callback attribute adminFabricIndex; + callback attribute adminVendorId; ram attribute featureMap default = 0; ram attribute clusterRevision default = 1; @@ -2073,8 +2272,8 @@ endpoint 0 { callback attribute groupTable; callback attribute maxGroupsPerFabric; callback attribute maxGroupKeysPerFabric; - callback attribute featureMap default = 0; - callback attribute clusterRevision default = 1; + callback attribute featureMap; + callback attribute clusterRevision; handle command KeySetWrite; handle command KeySetRead; @@ -2111,16 +2310,16 @@ endpoint 1 { callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 0; - callback attribute clusterRevision default = 2; + callback attribute clusterRevision; } server cluster AirQuality { - callback attribute airQuality default = 0; + callback attribute airQuality; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 1; } @@ -2156,7 +2355,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } @@ -2168,7 +2367,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } @@ -2180,7 +2379,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } @@ -2192,7 +2391,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } @@ -2204,7 +2403,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } @@ -2216,7 +2415,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } @@ -2228,7 +2427,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } @@ -2240,7 +2439,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } @@ -2252,7 +2451,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } @@ -2264,7 +2463,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } } diff --git a/examples/air-quality-sensor-app/air-quality-sensor-common/air-quality-sensor-app.zap b/examples/air-quality-sensor-app/air-quality-sensor-common/air-quality-sensor-app.zap index 1e8c4ca9bcc558..383705d04183cf 100644 --- a/examples/air-quality-sensor-app/air-quality-sensor-common/air-quality-sensor-app.zap +++ b/examples/air-quality-sensor-app/air-quality-sensor-common/air-quality-sensor-app.zap @@ -78,7 +78,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -94,7 +94,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -110,7 +110,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -126,7 +126,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -158,7 +158,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -184,7 +184,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -200,7 +200,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -216,7 +216,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "4", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -232,7 +232,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "3", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -248,7 +248,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "4", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -264,7 +264,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -296,7 +296,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -338,7 +338,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "10", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -354,7 +354,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -370,7 +370,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -386,7 +386,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -402,7 +402,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -434,7 +434,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "XX", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -450,7 +450,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -466,7 +466,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -482,7 +482,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -498,7 +498,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -514,7 +514,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "20210614123456ZZ", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -530,7 +530,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -546,7 +546,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -562,7 +562,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -578,7 +578,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -610,7 +610,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -626,7 +626,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -642,7 +642,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -658,7 +658,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -817,7 +817,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1012,7 +1012,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1028,7 +1028,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1044,7 +1044,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1060,7 +1060,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1208,7 +1208,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1388,7 +1388,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1404,7 +1404,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1420,7 +1420,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1436,7 +1436,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1452,7 +1452,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1468,7 +1468,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1484,7 +1484,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1500,7 +1500,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1593,7 +1593,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1609,7 +1609,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1625,7 +1625,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1641,7 +1641,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1657,7 +1657,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1709,7 +1709,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1725,7 +1725,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1741,7 +1741,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1757,7 +1757,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1773,7 +1773,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1789,7 +1789,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1805,7 +1805,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1821,7 +1821,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1837,7 +1837,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1853,7 +1853,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1869,7 +1869,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1885,7 +1885,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1901,7 +1901,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1917,7 +1917,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1933,7 +1933,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1949,7 +1949,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1965,7 +1965,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1981,7 +1981,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1997,7 +1997,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2013,7 +2013,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2029,7 +2029,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2045,7 +2045,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2061,7 +2061,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2077,7 +2077,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2093,7 +2093,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2109,7 +2109,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2125,7 +2125,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2141,7 +2141,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2157,7 +2157,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2173,7 +2173,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2189,7 +2189,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2205,7 +2205,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2221,7 +2221,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2237,7 +2237,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2253,7 +2253,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2269,7 +2269,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2285,7 +2285,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2301,7 +2301,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2317,7 +2317,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2333,7 +2333,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2349,7 +2349,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2365,7 +2365,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2381,7 +2381,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2397,7 +2397,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2413,7 +2413,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2429,7 +2429,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2445,7 +2445,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2461,7 +2461,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2477,7 +2477,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2493,7 +2493,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2509,7 +2509,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2525,7 +2525,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2541,7 +2541,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2557,7 +2557,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2573,7 +2573,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2589,7 +2589,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2605,7 +2605,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2621,7 +2621,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2637,7 +2637,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2653,7 +2653,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2669,7 +2669,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2685,7 +2685,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2701,7 +2701,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2769,7 +2769,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2785,7 +2785,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2801,7 +2801,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2817,7 +2817,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2833,7 +2833,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2849,7 +2849,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2865,7 +2865,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2881,7 +2881,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2897,7 +2897,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2913,7 +2913,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2929,7 +2929,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2945,7 +2945,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2961,7 +2961,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3052,7 +3052,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3068,7 +3068,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3084,7 +3084,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3100,7 +3100,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3116,7 +3116,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3132,7 +3132,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3148,7 +3148,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3164,7 +3164,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3180,7 +3180,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3264,7 +3264,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3280,7 +3280,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3296,7 +3296,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3452,7 +3452,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3468,7 +3468,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3484,7 +3484,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3500,7 +3500,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3516,7 +3516,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3532,7 +3532,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3640,7 +3640,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3656,7 +3656,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3672,7 +3672,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3688,7 +3688,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3704,7 +3704,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3720,7 +3720,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3817,7 +3817,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3833,7 +3833,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3849,7 +3849,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3865,7 +3865,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3923,7 +3923,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3939,7 +3939,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3955,7 +3955,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3971,7 +3971,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3987,7 +3987,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4003,7 +4003,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4019,7 +4019,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4035,7 +4035,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4067,7 +4067,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4093,7 +4093,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4109,7 +4109,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4125,7 +4125,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4141,7 +4141,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4157,7 +4157,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4173,7 +4173,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4263,7 +4263,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4279,7 +4279,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4295,7 +4295,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4311,7 +4311,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4417,7 +4417,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4433,7 +4433,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4449,7 +4449,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4465,7 +4465,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4571,7 +4571,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4587,7 +4587,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4603,7 +4603,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4619,7 +4619,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4635,7 +4635,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4725,7 +4725,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4741,7 +4741,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4757,7 +4757,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4773,7 +4773,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4789,7 +4789,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4879,7 +4879,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4895,7 +4895,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4911,7 +4911,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4927,7 +4927,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4943,7 +4943,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5033,7 +5033,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5049,7 +5049,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5065,7 +5065,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5081,7 +5081,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5097,7 +5097,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5187,7 +5187,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5203,7 +5203,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5219,7 +5219,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5235,7 +5235,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5251,7 +5251,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5341,7 +5341,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5357,7 +5357,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5373,7 +5373,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5389,7 +5389,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5405,7 +5405,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5495,7 +5495,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5511,7 +5511,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5527,7 +5527,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5543,7 +5543,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5559,7 +5559,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5649,7 +5649,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5665,7 +5665,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5681,7 +5681,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5697,7 +5697,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5713,7 +5713,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5803,7 +5803,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5819,7 +5819,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5835,7 +5835,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5851,7 +5851,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5867,7 +5867,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5957,7 +5957,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5973,7 +5973,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5989,7 +5989,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6005,7 +6005,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6021,7 +6021,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, diff --git a/examples/air-quality-sensor-app/linux/README.md b/examples/air-quality-sensor-app/linux/README.md index 110c1fed58cd01..6641a3e2f07de5 100644 --- a/examples/air-quality-sensor-app/linux/README.md +++ b/examples/air-quality-sensor-app/linux/README.md @@ -1,8 +1,8 @@ -# CHIP Linux Air Quality Example +# Matter Linux Air Quality Example -An example showing the use of CHIP on the Linux. The document will describe how -to build and run CHIP Linux Air Quality Example on Raspberry Pi. This doc is -tested on **Ubuntu for Raspberry Pi Server 20.04 LTS (aarch64)** and **Ubuntu +An example showing the use of Matter on the Linux. The document will describe +how to build and run Matter Linux Air Quality Example on Raspberry Pi. This doc +is tested on **Ubuntu for Raspberry Pi Server 20.04 LTS (aarch64)** and **Ubuntu for Raspberry Pi Desktop 20.10 (aarch64)** To cross-compile this example on x64 host and run on **NXP i.MX 8M Mini** @@ -11,7 +11,7 @@ To cross-compile this example on x64 host and run on **NXP i.MX 8M Mini**
-- [CHIP Linux Air Quality Example](#chip-linux-air-quality-example) +- [Matter Linux Air Quality Example](#matter-linux-air-quality-example) - [Building](#building) - [Commandline Arguments](#commandline-arguments) - [Running the Complete Example on Raspberry Pi 4](#running-the-complete-example-on-raspberry-pi-4) @@ -74,8 +74,8 @@ To cross-compile this example on x64 host and run on **NXP i.MX 8M Mini** 1. A Raspberry Pi 4 board 2. A USB Bluetooth Dongle, Ubuntu desktop will send Bluetooth advertisement, - which will block CHIP from connecting via BLE. On Ubuntu server, you need - to install `pi-bluetooth` via APT. + which will block Matter from connecting via BLE. On Ubuntu server, you + need to install `pi-bluetooth` via APT. 3. Ubuntu 20.04 or newer image for ARM64 platform. - Building diff --git a/examples/air-quality-sensor-app/linux/main.cpp b/examples/air-quality-sensor-app/linux/main.cpp index fddb23fb7b38a6..9dee0c20982f0a 100644 --- a/examples/air-quality-sensor-app/linux/main.cpp +++ b/examples/air-quality-sensor-app/linux/main.cpp @@ -35,7 +35,7 @@ using namespace chip::app; using namespace chip::app::Clusters; namespace { -constexpr const char kChipEventFifoPathPrefix[] = "/tmp/chip_air_quality_fifo_"; +constexpr char kChipEventFifoPathPrefix[] = "/tmp/chip_air_quality_fifo_"; NamedPipeCommands sChipNamedPipeCommands; AirQualitySensorAppAttrUpdateDelegate sAirQualitySensorAppCommandDelegate; } // namespace diff --git a/examples/air-quality-sensor-app/telink/include/AppConfig.h b/examples/air-quality-sensor-app/telink/include/AppConfig.h index ec5c54343cf852..7513ed3771b961 100644 --- a/examples/air-quality-sensor-app/telink/include/AppConfig.h +++ b/examples/air-quality-sensor-app/telink/include/AppConfig.h @@ -25,4 +25,6 @@ #define APP_USE_THREAD_START_BUTTON 0 #define APP_SET_DEVICE_INFO_PROVIDER 1 #define APP_SET_NETWORK_COMM_ENDPOINT_SEC 0 +#if defined(CONFIG_BOARD_TLSR9518ADK80D) || defined(CONFIG_BOARD_TLSR9528A) #define APP_USE_IDENTIFY_PWM 1 +#endif diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter index 1161b93c5119ee..45be7ed614d227 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 @@ -2,7 +2,9 @@ // It is for view/code review purposes only. /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ -server cluster Identify = 3 { +cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,12 +45,16 @@ server cluster Identify = 3 { EffectVariantEnum effectVariant = 1; } + /** Command description for Identify */ command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; + /** Command description for TriggerEffect */ command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } /** Attributes and commands for group configuration and manipulation. */ -server cluster Groups = 4 { +cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -70,54 +76,62 @@ server cluster Groups = 4 { char_string<16> groupName = 1; } - request struct ViewGroupRequest { - group_id groupID = 0; - } - - request struct GetGroupMembershipRequest { - group_id groupList[] = 0; - } - - request struct RemoveGroupRequest { - group_id groupID = 0; - } - - request struct AddGroupIfIdentifyingRequest { - group_id groupID = 0; - char_string<16> groupName = 1; - } - response struct AddGroupResponse = 0 { enum8 status = 0; group_id groupID = 1; } + request struct ViewGroupRequest { + group_id groupID = 0; + } + response struct ViewGroupResponse = 1 { enum8 status = 0; group_id groupID = 1; char_string<16> groupName = 2; } + request struct GetGroupMembershipRequest { + group_id groupList[] = 0; + } + response struct GetGroupMembershipResponse = 2 { nullable int8u capacity = 0; group_id groupList[] = 1; } + request struct RemoveGroupRequest { + group_id groupID = 0; + } + response struct RemoveGroupResponse = 3 { enum8 status = 0; group_id groupID = 1; } + request struct AddGroupIfIdentifyingRequest { + group_id groupID = 0; + char_string<16> groupName = 1; + } + + /** Command description for AddGroup */ fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + /** Command description for ViewGroup */ fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + /** Command description for GetGroupMembership */ fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + /** Command description for RemoveGroup */ fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + /** Command description for RemoveAllGroups */ fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + /** Command description for AddGroupIfIdentifying */ fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } /** Attributes and commands for scene configuration and manipulation. */ -provisional server cluster Scenes = 5 { +provisional cluster Scenes = 5 { + revision 5; + bitmap CopyModeBitmap : bitmap8 { kCopyAllScenes = 0x1; } @@ -152,8 +166,12 @@ provisional server cluster Scenes = 5 { fabric_idx fabricIndex = 254; } + readonly attribute optional int8u sceneCount = 0; + readonly attribute optional int8u currentScene = 1; + readonly attribute optional group_id currentGroup = 2; + readonly attribute optional boolean sceneValid = 3; readonly attribute NameSupportBitmap nameSupport = 4; - readonly attribute nullable node_id lastConfiguredBy = 5; + readonly attribute optional nullable node_id lastConfiguredBy = 5; readonly attribute int16u sceneTableSize = 6; readonly attribute SceneInfoStruct fabricSceneInfo[] = 7; readonly attribute command_id generatedCommandList[] = 65528; @@ -171,62 +189,17 @@ provisional server cluster Scenes = 5 { ExtensionFieldSet extensionFieldSets[] = 4; } - request struct ViewSceneRequest { - group_id groupID = 0; - int8u sceneID = 1; - } - - request struct RemoveSceneRequest { - group_id groupID = 0; - int8u sceneID = 1; - } - - request struct RemoveAllScenesRequest { - group_id groupID = 0; - } - - request struct StoreSceneRequest { - group_id groupID = 0; - int8u sceneID = 1; - } - - request struct RecallSceneRequest { - group_id groupID = 0; - int8u sceneID = 1; - optional nullable int16u transitionTime = 2; - } - - request struct GetSceneMembershipRequest { - group_id groupID = 0; - } - - request struct EnhancedAddSceneRequest { - group_id groupID = 0; - int8u sceneID = 1; - int16u transitionTime = 2; - char_string sceneName = 3; - ExtensionFieldSet extensionFieldSets[] = 4; - } - - request struct EnhancedViewSceneRequest { - group_id groupID = 0; - int8u sceneID = 1; - } - - request struct CopySceneRequest { - CopyModeBitmap mode = 0; - group_id groupIdentifierFrom = 1; - int8u sceneIdentifierFrom = 2; - group_id groupIdentifierTo = 3; - int8u sceneIdentifierTo = 4; - } - response struct AddSceneResponse = 0 { status status = 0; group_id groupID = 1; int8u sceneID = 2; } + request struct ViewSceneRequest { + group_id groupID = 0; + int8u sceneID = 1; + } + response struct ViewSceneResponse = 1 { status status = 0; group_id groupID = 1; @@ -236,23 +209,47 @@ provisional server cluster Scenes = 5 { optional ExtensionFieldSet extensionFieldSets[] = 5; } + request struct RemoveSceneRequest { + group_id groupID = 0; + int8u sceneID = 1; + } + response struct RemoveSceneResponse = 2 { status status = 0; group_id groupID = 1; int8u sceneID = 2; } + request struct RemoveAllScenesRequest { + group_id groupID = 0; + } + response struct RemoveAllScenesResponse = 3 { status status = 0; group_id groupID = 1; } + request struct StoreSceneRequest { + group_id groupID = 0; + int8u sceneID = 1; + } + response struct StoreSceneResponse = 4 { status status = 0; group_id groupID = 1; int8u sceneID = 2; } + request struct RecallSceneRequest { + group_id groupID = 0; + int8u sceneID = 1; + optional nullable int16u transitionTime = 2; + } + + request struct GetSceneMembershipRequest { + group_id groupID = 0; + } + response struct GetSceneMembershipResponse = 6 { status status = 0; nullable int8u capacity = 1; @@ -260,12 +257,25 @@ provisional server cluster Scenes = 5 { optional int8u sceneList[] = 3; } + request struct EnhancedAddSceneRequest { + group_id groupID = 0; + int8u sceneID = 1; + int16u transitionTime = 2; + char_string sceneName = 3; + ExtensionFieldSet extensionFieldSets[] = 4; + } + response struct EnhancedAddSceneResponse = 64 { status status = 0; group_id groupID = 1; int8u sceneID = 2; } + request struct EnhancedViewSceneRequest { + group_id groupID = 0; + int8u sceneID = 1; + } + response struct EnhancedViewSceneResponse = 65 { status status = 0; group_id groupID = 1; @@ -275,26 +285,46 @@ provisional server cluster Scenes = 5 { optional ExtensionFieldSet extensionFieldSets[] = 5; } + request struct CopySceneRequest { + CopyModeBitmap mode = 0; + group_id groupIdentifierFrom = 1; + int8u sceneIdentifierFrom = 2; + group_id groupIdentifierTo = 3; + int8u sceneIdentifierTo = 4; + } + response struct CopySceneResponse = 66 { status status = 0; group_id groupIdentifierFrom = 1; int8u sceneIdentifierFrom = 2; } + /** Add a scene to the scene table. Extension field sets are supported, and are inputed as '{"ClusterID": VALUE, "AttributeValueList":[{"AttributeId": VALUE, "AttributeValue": VALUE}]}' */ fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; + /** Retrieves the requested scene entry from its Scene table. */ fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; + /** Removes the requested scene entry, corresponding to the value of the GroupID field, from its Scene Table */ fabric command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; + /** Remove all scenes, corresponding to the value of the GroupID field, from its Scene Table */ fabric command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; + /** Adds the scene entry into its Scene Table along with all extension field sets corresponding to the current state of other clusters on the same endpoint */ fabric command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; + /** Set the attributes and corresponding state for each other cluster implemented on the endpoint accordingly to the resquested scene entry in the Scene Table */ fabric command RecallScene(RecallSceneRequest): DefaultSuccess = 5; + /** Get an unused scene identifier when no commissioning tool is in the network, or for a commissioning tool to get the used scene identifiers within a certain group */ fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; + /** Allows a scene to be added using a finer scene transition time than the AddScene command. */ fabric command EnhancedAddScene(EnhancedAddSceneRequest): EnhancedAddSceneResponse = 64; + /** Allows a scene to be retrieved using a finer scene transition time than the ViewScene command */ fabric command EnhancedViewScene(EnhancedViewSceneRequest): EnhancedViewSceneResponse = 65; + /** Allows a client to efficiently copy scenes from one group/scene identifier pair to another group/scene identifier pair. */ fabric command CopyScene(CopySceneRequest): CopySceneResponse = 66; } /** Attributes and commands for switching devices between 'On' and 'Off' states. */ -client cluster OnOff = 6 { +cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -364,7 +394,9 @@ client cluster OnOff = 6 { } /** Attributes and commands for switching devices between 'On' and 'Off' states. */ -server cluster OnOff = 6 { +cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -397,10 +429,10 @@ server cluster OnOff = 6 { } readonly attribute boolean onOff = 0; - readonly attribute boolean globalSceneControl = 16384; - attribute int16u onTime = 16385; - attribute int16u offWaitTime = 16386; - attribute access(write: manage) nullable StartUpOnOffEnum startUpOnOff = 16387; + readonly attribute optional boolean globalSceneControl = 16384; + attribute optional int16u onTime = 16385; + attribute optional int16u offWaitTime = 16386; + attribute access(write: manage) optional nullable StartUpOnOffEnum startUpOnOff = 16387; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -419,16 +451,24 @@ server cluster OnOff = 6 { int16u offWaitTime = 2; } + /** On receipt of this command, a device SHALL enter its ‘Off’ state. This state is device dependent, but it is recommended that it is used for power off or similar functions. On receipt of the Off command, the OnTime attribute SHALL be set to 0. */ command Off(): DefaultSuccess = 0; + /** On receipt of this command, a device SHALL enter its ‘On’ state. This state is device dependent, but it is recommended that it is used for power on or similar functions. On receipt of the On command, if the value of the OnTime attribute is equal to 0, the device SHALL set the OffWaitTime attribute to 0. */ command On(): DefaultSuccess = 1; + /** On receipt of this command, if a device is in its ‘Off’ state it SHALL enter its ‘On’ state. Otherwise, if it is in its ‘On’ state it SHALL enter its ‘Off’ state. On receipt of the Toggle command, if the value of the OnOff attribute is equal to FALSE and if the value of the OnTime attribute is equal to 0, the device SHALL set the OffWaitTime attribute to 0. If the value of the OnOff attribute is equal to TRUE, the OnTime attribute SHALL be set to 0. */ command Toggle(): DefaultSuccess = 2; + /** The OffWithEffect command allows devices to be turned off using enhanced ways of fading. */ command OffWithEffect(OffWithEffectRequest): DefaultSuccess = 64; + /** The OnWithRecallGlobalScene command allows the recall of the settings when the device was turned off. */ command OnWithRecallGlobalScene(): DefaultSuccess = 65; + /** The OnWithTimedOff command allows devices to be turned on for a specific duration with a guarded off duration so that SHOULD the device be subsequently switched off, further OnWithTimedOff commands, received during this time, are prevented from turning the devices back on. */ command OnWithTimedOff(OnWithTimedOffRequest): DefaultSuccess = 66; } /** Attributes and commands for configuring On/Off switching devices. */ -server cluster OnOffSwitchConfiguration = 7 { +deprecated cluster OnOffSwitchConfiguration = 7 { + revision 1; // NOTE: Default/not specifically set + readonly attribute enum8 switchType = 0; attribute enum8 switchActions = 16; readonly attribute command_id generatedCommandList[] = 65528; @@ -440,7 +480,9 @@ server cluster OnOffSwitchConfiguration = 7 { } /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ -server cluster LevelControl = 8 { +cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -463,19 +505,19 @@ server cluster LevelControl = 8 { } readonly attribute nullable int8u currentLevel = 0; - readonly attribute int16u remainingTime = 1; - readonly attribute int8u minLevel = 2; - readonly attribute int8u maxLevel = 3; - readonly attribute int16u currentFrequency = 4; - readonly attribute int16u minFrequency = 5; - readonly attribute int16u maxFrequency = 6; + readonly attribute optional int16u remainingTime = 1; + readonly attribute optional int8u minLevel = 2; + readonly attribute optional int8u maxLevel = 3; + readonly attribute optional int16u currentFrequency = 4; + readonly attribute optional int16u minFrequency = 5; + readonly attribute optional int16u maxFrequency = 6; attribute OptionsBitmap options = 15; - attribute int16u onOffTransitionTime = 16; + attribute optional int16u onOffTransitionTime = 16; attribute nullable int8u onLevel = 17; - attribute nullable int16u onTransitionTime = 18; - attribute nullable int16u offTransitionTime = 19; - attribute nullable int8u defaultMoveRate = 20; - attribute access(write: manage) nullable int8u startUpCurrentLevel = 16384; + attribute optional nullable int16u onTransitionTime = 18; + attribute optional nullable int16u offTransitionTime = 19; + attribute optional nullable int8u defaultMoveRate = 20; + attribute access(write: manage) optional nullable int8u startUpCurrentLevel = 16384; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -537,21 +579,44 @@ server cluster LevelControl = 8 { OptionsBitmap optionsOverride = 1; } + request struct MoveToClosestFrequencyRequest { + int16u frequency = 0; + } + + /** Command description for MoveToLevel */ command MoveToLevel(MoveToLevelRequest): DefaultSuccess = 0; + /** Command description for Move */ command Move(MoveRequest): DefaultSuccess = 1; + /** Command description for Step */ command Step(StepRequest): DefaultSuccess = 2; + /** Command description for Stop */ command Stop(StopRequest): DefaultSuccess = 3; + /** Command description for MoveToLevelWithOnOff */ command MoveToLevelWithOnOff(MoveToLevelWithOnOffRequest): DefaultSuccess = 4; + /** Command description for MoveWithOnOff */ command MoveWithOnOff(MoveWithOnOffRequest): DefaultSuccess = 5; + /** Command description for StepWithOnOff */ command StepWithOnOff(StepWithOnOffRequest): DefaultSuccess = 6; + /** Command description for StopWithOnOff */ command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7; + /** Change the currrent frequency to the provided one, or a close + approximation if the exact provided one is not possible. */ + command MoveToClosestFrequency(MoveToClosestFrequencyRequest): DefaultSuccess = 8; } /** An interface for reading the value of a binary measurement and accessing various characteristics of that measurement. */ -server cluster BinaryInputBasic = 15 { +deprecated cluster BinaryInputBasic = 15 { + revision 1; // NOTE: Default/not specifically set + + attribute optional char_string<16> activeText = 4; + attribute optional char_string<16> description = 28; + attribute optional char_string<16> inactiveText = 46; attribute boolean outOfService = 81; + readonly attribute optional enum8 polarity = 84; attribute boolean presentValue = 85; + attribute optional enum8 reliability = 103; readonly attribute bitmap8 statusFlags = 111; + readonly attribute optional int32u applicationType = 256; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -561,7 +626,9 @@ server cluster BinaryInputBasic = 15 { } /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ -server cluster Descriptor = 29 { +cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -582,7 +649,7 @@ server cluster Descriptor = 29 { readonly attribute cluster_id serverList[] = 1; readonly attribute cluster_id clientList[] = 2; readonly attribute endpoint_no partsList[] = 3; - readonly attribute SemanticTagStruct tagList[] = 4; + readonly attribute optional SemanticTagStruct tagList[] = 4; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -592,7 +659,9 @@ server cluster Descriptor = 29 { } /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ -server cluster Binding = 30 { +cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -614,7 +683,9 @@ server cluster Binding = 30 { Node's Access Control List (ACL), which codifies the rules used to manage and enforce Access Control for the Node's endpoints and their associated cluster instances. */ -server cluster AccessControl = 31 { +cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -671,7 +742,7 @@ server cluster AccessControl = 31 { } attribute access(read: administer, write: administer) AccessControlEntryStruct acl[] = 0; - attribute access(read: administer, write: administer) AccessControlExtensionStruct extension[] = 1; + attribute access(read: administer, write: administer) optional AccessControlExtensionStruct extension[] = 1; readonly attribute int16u subjectsPerAccessControlEntry = 2; readonly attribute int16u targetsPerAccessControlEntry = 3; readonly attribute int16u accessControlEntriesPerFabric = 4; @@ -684,7 +755,9 @@ server cluster AccessControl = 31 { } /** This cluster provides a standardized way for a Node (typically a Bridge, but could be any Node) to expose action information. */ -server cluster Actions = 37 { +cluster Actions = 37 { + revision 1; // NOTE: Default/not specifically set + enum ActionErrorEnum : enum8 { kUnknown = 0; kInterrupted = 1; @@ -759,19 +832,111 @@ server cluster Actions = 37 { readonly attribute ActionStruct actionList[] = 0; readonly attribute EndpointListStruct endpointLists[] = 1; - readonly attribute long_char_string<512> setupURL = 2; + readonly attribute optional long_char_string<512> setupURL = 2; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; readonly attribute attrib_id attributeList[] = 65531; readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + + request struct InstantActionRequest { + int16u actionID = 0; + optional int32u invokeID = 1; + } + + request struct InstantActionWithTransitionRequest { + int16u actionID = 0; + optional int32u invokeID = 1; + int16u transitionTime = 2; + } + + request struct StartActionRequest { + int16u actionID = 0; + optional int32u invokeID = 1; + } + + request struct StartActionWithDurationRequest { + int16u actionID = 0; + optional int32u invokeID = 1; + int32u duration = 2; + } + + request struct StopActionRequest { + int16u actionID = 0; + optional int32u invokeID = 1; + } + + request struct PauseActionRequest { + int16u actionID = 0; + optional int32u invokeID = 1; + } + + request struct PauseActionWithDurationRequest { + int16u actionID = 0; + optional int32u invokeID = 1; + int32u duration = 2; + } + + request struct ResumeActionRequest { + int16u actionID = 0; + optional int32u invokeID = 1; + } + + request struct EnableActionRequest { + int16u actionID = 0; + optional int32u invokeID = 1; + } + + request struct EnableActionWithDurationRequest { + int16u actionID = 0; + optional int32u invokeID = 1; + int32u duration = 2; + } + + request struct DisableActionRequest { + int16u actionID = 0; + optional int32u invokeID = 1; + } + + request struct DisableActionWithDurationRequest { + int16u actionID = 0; + optional int32u invokeID = 1; + int32u duration = 2; + } + + /** This command triggers an action (state change) on the involved endpoints. */ + command InstantAction(InstantActionRequest): DefaultSuccess = 0; + /** This command triggers an action (state change) on the involved endpoints, with a specified time to transition from the current state to the new state. */ + command InstantActionWithTransition(InstantActionWithTransitionRequest): DefaultSuccess = 1; + /** This command triggers the commencement of an action on the involved endpoints. */ + command StartAction(StartActionRequest): DefaultSuccess = 2; + /** This command triggers the commencement of an action (with a duration) on the involved endpoints. */ + command StartActionWithDuration(StartActionWithDurationRequest): DefaultSuccess = 3; + /** This command stops the ongoing action on the involved endpoints. */ + command StopAction(StopActionRequest): DefaultSuccess = 4; + /** This command pauses an ongoing action. */ + command PauseAction(PauseActionRequest): DefaultSuccess = 5; + /** This command pauses an ongoing action with a duration. */ + command PauseActionWithDuration(PauseActionWithDurationRequest): DefaultSuccess = 6; + /** This command resumes a previously paused action. */ + command ResumeAction(ResumeActionRequest): DefaultSuccess = 7; + /** This command enables a certain action or automation. */ + command EnableAction(EnableActionRequest): DefaultSuccess = 8; + /** This command enables a certain action or automation with a duration. */ + command EnableActionWithDuration(EnableActionWithDurationRequest): DefaultSuccess = 9; + /** This command disables a certain action or automation. */ + command DisableAction(DisableActionRequest): DefaultSuccess = 10; + /** This command disables a certain action or automation with a duration. */ + command DisableActionWithDuration(DisableActionWithDurationRequest): DefaultSuccess = 11; } /** This cluster provides attributes and events for determining basic information about Nodes, which supports both Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ -server cluster BasicInformation = 40 { +cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -841,15 +1006,16 @@ server cluster BasicInformation = 40 { readonly attribute char_string<64> hardwareVersionString = 8; readonly attribute int32u softwareVersion = 9; readonly attribute char_string<64> softwareVersionString = 10; - readonly attribute char_string<16> manufacturingDate = 11; - readonly attribute char_string<32> partNumber = 12; - readonly attribute long_char_string<256> productURL = 13; - readonly attribute char_string<64> productLabel = 14; - readonly attribute char_string<32> serialNumber = 15; - attribute access(write: manage) boolean localConfigDisabled = 16; - readonly attribute char_string<32> uniqueID = 18; + readonly attribute optional char_string<16> manufacturingDate = 11; + readonly attribute optional char_string<32> partNumber = 12; + readonly attribute optional long_char_string<256> productURL = 13; + readonly attribute optional char_string<64> productLabel = 14; + readonly attribute optional char_string<32> serialNumber = 15; + attribute access(write: manage) optional boolean localConfigDisabled = 16; + readonly attribute optional boolean reachable = 17; + readonly attribute optional char_string<32> uniqueID = 18; readonly attribute CapabilityMinimaStruct capabilityMinima = 19; - readonly attribute ProductAppearanceStruct productAppearance = 20; + readonly attribute optional ProductAppearanceStruct productAppearance = 20; readonly attribute int32u specificationVersion = 21; readonly attribute int16u maxPathsPerInvoke = 22; readonly attribute command_id generatedCommandList[] = 65528; @@ -858,10 +1024,14 @@ server cluster BasicInformation = 40 { readonly attribute attrib_id attributeList[] = 65531; readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + + command MfgSpecificPing(): DefaultSuccess = 0; } /** Provides an interface for providing OTA software updates */ -client cluster OtaSoftwareUpdateProvider = 41 { +cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -935,7 +1105,9 @@ client cluster OtaSoftwareUpdateProvider = 41 { } /** Provides an interface for downloading and applying OTA software updates */ -server cluster OtaSoftwareUpdateRequestor = 42 { +cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -987,7 +1159,7 @@ server cluster OtaSoftwareUpdateRequestor = 42 { nullable int64s platformCode = 3; } - attribute ProviderLocation defaultOTAProviders[] = 0; + attribute access(write: administer) ProviderLocation defaultOTAProviders[] = 0; readonly attribute boolean updatePossible = 1; readonly attribute UpdateStateEnum updateState = 2; readonly attribute nullable int8u updateStateProgress = 3; @@ -1006,6 +1178,7 @@ server cluster OtaSoftwareUpdateRequestor = 42 { endpoint_no endpoint = 4; } + /** Announce the presence of an OTA Provider */ command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } @@ -1013,7 +1186,9 @@ server cluster OtaSoftwareUpdateRequestor = 42 { may have differing common languages, units of measurements, and numerical formatting standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ -server cluster LocalizationConfiguration = 43 { +cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -1028,7 +1203,9 @@ server cluster LocalizationConfiguration = 43 { may have differing preferences for how dates and times are conveyed. As such, Nodes that visually or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ -server cluster TimeFormatLocalization = 44 { +cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -1042,11 +1219,13 @@ server cluster TimeFormatLocalization = 44 { kKorean = 9; kPersian = 10; kTaiwanese = 11; + kUseActiveLocale = 255; } enum HourFormatEnum : enum8 { k12hr = 0; k24hr = 1; + kUseActiveLocale = 255; } bitmap Feature : bitmap32 { @@ -1054,8 +1233,8 @@ server cluster TimeFormatLocalization = 44 { } attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) CalendarTypeEnum activeCalendarType = 1; - readonly attribute CalendarTypeEnum supportedCalendarTypes[] = 2; + attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; + readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1068,7 +1247,9 @@ server cluster TimeFormatLocalization = 44 { may have differing preferences for the units in which values are conveyed in communication to a user. As such, Nodes that visually or audibly convey measurable values to the user need a mechanism by which they can be configured to use a user’s preferred unit. */ -server cluster UnitLocalization = 45 { +cluster UnitLocalization = 45 { + revision 1; + enum TempUnitEnum : enum8 { kFahrenheit = 0; kCelsius = 1; @@ -1079,7 +1260,7 @@ server cluster UnitLocalization = 45 { kTemperatureUnit = 0x1; } - attribute access(write: manage) TempUnitEnum temperatureUnit = 0; + attribute access(write: manage) optional TempUnitEnum temperatureUnit = 0; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1089,7 +1270,9 @@ server cluster UnitLocalization = 45 { } /** This cluster is used to describe the configuration and capabilities of a Device's power system. */ -server cluster PowerSourceConfiguration = 46 { +cluster PowerSourceConfiguration = 46 { + revision 1; + readonly attribute endpoint_no sources[] = 0; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; @@ -1100,7 +1283,9 @@ server cluster PowerSourceConfiguration = 46 { } /** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ -server cluster PowerSource = 47 { +cluster PowerSource = 47 { + revision 1; // NOTE: Default/not specifically set + enum BatApprovedChemistryEnum : enum16 { kUnspecified = 0; kAlkaline = 1; @@ -1319,9 +1504,34 @@ server cluster PowerSource = 47 { readonly attribute PowerSourceStatusEnum status = 0; readonly attribute int8u order = 1; readonly attribute char_string<60> description = 2; - readonly attribute BatChargeLevelEnum batChargeLevel = 14; - readonly attribute boolean batReplacementNeeded = 15; - readonly attribute BatReplaceabilityEnum batReplaceability = 16; + readonly attribute optional nullable int32u wiredAssessedInputVoltage = 3; + readonly attribute optional nullable int16u wiredAssessedInputFrequency = 4; + readonly attribute optional WiredCurrentTypeEnum wiredCurrentType = 5; + readonly attribute optional nullable int32u wiredAssessedCurrent = 6; + readonly attribute optional int32u wiredNominalVoltage = 7; + readonly attribute optional int32u wiredMaximumCurrent = 8; + readonly attribute optional boolean wiredPresent = 9; + readonly attribute optional WiredFaultEnum activeWiredFaults[] = 10; + readonly attribute optional nullable int32u batVoltage = 11; + readonly attribute optional nullable int8u batPercentRemaining = 12; + readonly attribute optional nullable int32u batTimeRemaining = 13; + readonly attribute optional BatChargeLevelEnum batChargeLevel = 14; + readonly attribute optional boolean batReplacementNeeded = 15; + readonly attribute optional BatReplaceabilityEnum batReplaceability = 16; + readonly attribute optional boolean batPresent = 17; + readonly attribute optional BatFaultEnum activeBatFaults[] = 18; + readonly attribute optional char_string<60> batReplacementDescription = 19; + readonly attribute optional BatCommonDesignationEnum batCommonDesignation = 20; + readonly attribute optional char_string<20> batANSIDesignation = 21; + readonly attribute optional char_string<20> batIECDesignation = 22; + readonly attribute optional BatApprovedChemistryEnum batApprovedChemistry = 23; + readonly attribute optional int32u batCapacity = 24; + readonly attribute optional int8u batQuantity = 25; + readonly attribute optional BatChargeStateEnum batChargeState = 26; + readonly attribute optional nullable int32u batTimeToFullCharge = 27; + readonly attribute optional boolean batFunctionalWhileCharging = 28; + readonly attribute optional nullable int32u batChargingCurrent = 29; + readonly attribute optional BatChargeFaultEnum activeBatChargeFaults[] = 30; readonly attribute endpoint_no endpointList[] = 31; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; @@ -1332,7 +1542,9 @@ server cluster PowerSource = 47 { } /** This cluster is used to manage global aspects of the Commissioning flow. */ -server cluster GeneralCommissioning = 48 { +cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -1369,17 +1581,17 @@ server cluster GeneralCommissioning = 48 { int64u breadcrumb = 1; } + response struct ArmFailSafeResponse = 1 { + CommissioningErrorEnum errorCode = 0; + char_string<128> debugText = 1; + } + request struct SetRegulatoryConfigRequest { RegulatoryLocationTypeEnum newRegulatoryConfig = 0; char_string<2> countryCode = 1; int64u breadcrumb = 2; } - response struct ArmFailSafeResponse = 1 { - CommissioningErrorEnum errorCode = 0; - char_string<128> debugText = 1; - } - response struct SetRegulatoryConfigResponse = 3 { CommissioningErrorEnum errorCode = 0; char_string debugText = 1; @@ -1390,13 +1602,18 @@ server cluster GeneralCommissioning = 48 { char_string debugText = 1; } + /** Arm the persistent fail-safe timer with an expiry time of now + ExpiryLengthSeconds using device clock */ command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; + /** Set the regulatory configuration to be used during commissioning */ command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; + /** Signals the Server that the Client has successfully completed all steps of Commissioning/Recofiguration needed during fail-safe period. */ fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ -server cluster NetworkCommissioning = 49 { +cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -1475,12 +1692,15 @@ server cluster NetworkCommissioning = 49 { readonly attribute access(read: administer) int8u maxNetworks = 0; readonly attribute access(read: administer) NetworkInfoStruct networks[] = 1; - readonly attribute int8u scanMaxTimeSeconds = 2; - readonly attribute int8u connectMaxTimeSeconds = 3; + readonly attribute optional int8u scanMaxTimeSeconds = 2; + readonly attribute optional int8u connectMaxTimeSeconds = 3; attribute access(write: administer) boolean interfaceEnabled = 4; readonly attribute access(read: administer) nullable NetworkCommissioningStatusEnum lastNetworkingStatus = 5; readonly attribute access(read: administer) nullable octet_string<32> lastNetworkID = 6; readonly attribute access(read: administer) nullable int32s lastConnectErrorValue = 7; + readonly attribute optional WiFiBandEnum supportedWiFiBands[] = 8; + readonly attribute optional ThreadCapabilitiesBitmap supportedThreadFeatures = 9; + readonly attribute optional int16u threadVersion = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1493,6 +1713,13 @@ server cluster NetworkCommissioning = 49 { optional int64u breadcrumb = 1; } + response struct ScanNetworksResponse = 1 { + NetworkCommissioningStatusEnum networkingStatus = 0; + optional char_string debugText = 1; + optional WiFiInterfaceScanResultStruct wiFiScanResults[] = 2; + optional ThreadInterfaceScanResultStruct threadScanResults[] = 3; + } + request struct AddOrUpdateWiFiNetworkRequest { octet_string<32> ssid = 0; octet_string<64> credentials = 1; @@ -1512,48 +1739,61 @@ server cluster NetworkCommissioning = 49 { optional int64u breadcrumb = 1; } + response struct NetworkConfigResponse = 5 { + NetworkCommissioningStatusEnum networkingStatus = 0; + optional char_string<512> debugText = 1; + optional int8u networkIndex = 2; + optional octet_string<140> clientIdentity = 3; + optional octet_string<64> possessionSignature = 4; + } + request struct ConnectNetworkRequest { octet_string<32> networkID = 0; optional int64u breadcrumb = 1; } + response struct ConnectNetworkResponse = 7 { + NetworkCommissioningStatusEnum networkingStatus = 0; + optional char_string debugText = 1; + nullable int32s errorValue = 2; + } + request struct ReorderNetworkRequest { octet_string<32> networkID = 0; int8u networkIndex = 1; optional int64u breadcrumb = 2; } - response struct ScanNetworksResponse = 1 { - NetworkCommissioningStatusEnum networkingStatus = 0; - optional char_string debugText = 1; - optional WiFiInterfaceScanResultStruct wiFiScanResults[] = 2; - optional ThreadInterfaceScanResultStruct threadScanResults[] = 3; + request struct QueryIdentityRequest { + octet_string<20> keyIdentifier = 0; + optional octet_string<32> possessionNonce = 1; } - response struct NetworkConfigResponse = 5 { - NetworkCommissioningStatusEnum networkingStatus = 0; - optional char_string<512> debugText = 1; - optional int8u networkIndex = 2; - optional octet_string<140> clientIdentity = 3; - optional octet_string<64> possessionSignature = 4; - } - - response struct ConnectNetworkResponse = 7 { - NetworkCommissioningStatusEnum networkingStatus = 0; - optional char_string debugText = 1; - nullable int32s errorValue = 2; + response struct QueryIdentityResponse = 10 { + octet_string<140> identity = 0; + optional octet_string<64> possessionSignature = 1; } + /** Detemine the set of networks the device sees as available. */ command access(invoke: administer) ScanNetworks(ScanNetworksRequest): ScanNetworksResponse = 0; + /** Add or update the credentials for a given Wi-Fi network. */ command access(invoke: administer) AddOrUpdateWiFiNetwork(AddOrUpdateWiFiNetworkRequest): NetworkConfigResponse = 2; + /** Add or update the credentials for a given Thread network. */ command access(invoke: administer) AddOrUpdateThreadNetwork(AddOrUpdateThreadNetworkRequest): NetworkConfigResponse = 3; + /** Remove the definition of a given network (including its credentials). */ command access(invoke: administer) RemoveNetwork(RemoveNetworkRequest): NetworkConfigResponse = 4; + /** Connect to the specified network, using previously-defined credentials. */ command access(invoke: administer) ConnectNetwork(ConnectNetworkRequest): ConnectNetworkResponse = 6; + /** Modify the order in which networks will be presented in the Networks attribute. */ command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; + /** Retrieve details about and optionally proof of possession of a network client identity. */ + command access(invoke: administer) QueryIdentity(QueryIdentityRequest): QueryIdentityResponse = 9; } /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ -server cluster DiagnosticLogs = 50 { +cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -1586,11 +1826,21 @@ server cluster DiagnosticLogs = 50 { optional char_string<32> transferFileDesignator = 2; } + response struct RetrieveLogsResponse = 1 { + StatusEnum status = 0; + long_octet_string logContent = 1; + optional epoch_us UTCTimeStamp = 2; + optional systime_us timeSinceBoot = 3; + } + + /** Retrieving diagnostic logs from a Node */ command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ -server cluster GeneralDiagnostics = 51 { +cluster GeneralDiagnostics = 51 { + revision 2; + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -1672,12 +1922,12 @@ server cluster GeneralDiagnostics = 51 { readonly attribute NetworkInterface networkInterfaces[] = 0; readonly attribute int16u rebootCount = 1; - readonly attribute int64u upTime = 2; - readonly attribute int32u totalOperationalHours = 3; - readonly attribute BootReasonEnum bootReason = 4; - readonly attribute HardwareFaultEnum activeHardwareFaults[] = 5; - readonly attribute RadioFaultEnum activeRadioFaults[] = 6; - readonly attribute NetworkFaultEnum activeNetworkFaults[] = 7; + readonly attribute optional int64u upTime = 2; + readonly attribute optional int32u totalOperationalHours = 3; + readonly attribute optional BootReasonEnum bootReason = 4; + readonly attribute optional HardwareFaultEnum activeHardwareFaults[] = 5; + readonly attribute optional RadioFaultEnum activeRadioFaults[] = 6; + readonly attribute optional NetworkFaultEnum activeNetworkFaults[] = 7; readonly attribute boolean testEventTriggersEnabled = 8; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; @@ -1692,16 +1942,20 @@ server cluster GeneralDiagnostics = 51 { } response struct TimeSnapshotResponse = 2 { - systime_us systemTimeUs = 0; - nullable epoch_us UTCTimeUs = 1; + systime_ms systemTimeMs = 0; + nullable posix_ms posixTimeMs = 1; } + /** Provide a means for certification tests to trigger some test-plan-specific events */ command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; + /** Take a snapshot of system time and epoch time. */ command TimeSnapshot(): TimeSnapshotResponse = 1; } /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ -server cluster SoftwareDiagnostics = 52 { +cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1720,10 +1974,10 @@ server cluster SoftwareDiagnostics = 52 { optional octet_string faultRecording = 2; } - readonly attribute ThreadMetricsStruct threadMetrics[] = 0; - readonly attribute int64u currentHeapFree = 1; - readonly attribute int64u currentHeapUsed = 2; - readonly attribute int64u currentHeapHighWatermark = 3; + readonly attribute optional ThreadMetricsStruct threadMetrics[] = 0; + readonly attribute optional int64u currentHeapFree = 1; + readonly attribute optional int64u currentHeapUsed = 2; + readonly attribute optional int64u currentHeapHighWatermark = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1731,11 +1985,14 @@ server cluster SoftwareDiagnostics = 52 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + /** Reception of this command SHALL reset the values: The StackFreeMinimum field of the ThreadMetrics attribute, CurrentHeapHighWaterMark attribute. */ command access(invoke: manage) ResetWatermarks(): DefaultSuccess = 0; } /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ -server cluster ThreadNetworkDiagnostics = 53 { +cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -1830,7 +2087,7 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute nullable int16u panId = 3; readonly attribute nullable int64u extendedPanId = 4; readonly attribute nullable octet_string<17> meshLocalPrefix = 5; - readonly attribute int64u overrunCount = 6; + readonly attribute optional int64u overrunCount = 6; readonly attribute NeighborTableStruct neighborTable[] = 7; readonly attribute RouteTableStruct routeTable[] = 8; readonly attribute nullable int32u partitionId = 9; @@ -1838,51 +2095,51 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute nullable int16u dataVersion = 11; readonly attribute nullable int16u stableDataVersion = 12; readonly attribute nullable int8u leaderRouterId = 13; - readonly attribute int16u detachedRoleCount = 14; - readonly attribute int16u childRoleCount = 15; - readonly attribute int16u routerRoleCount = 16; - readonly attribute int16u leaderRoleCount = 17; - readonly attribute int16u attachAttemptCount = 18; - readonly attribute int16u partitionIdChangeCount = 19; - readonly attribute int16u betterPartitionAttachAttemptCount = 20; - readonly attribute int16u parentChangeCount = 21; - readonly attribute int32u txTotalCount = 22; - readonly attribute int32u txUnicastCount = 23; - readonly attribute int32u txBroadcastCount = 24; - readonly attribute int32u txAckRequestedCount = 25; - readonly attribute int32u txAckedCount = 26; - readonly attribute int32u txNoAckRequestedCount = 27; - readonly attribute int32u txDataCount = 28; - readonly attribute int32u txDataPollCount = 29; - readonly attribute int32u txBeaconCount = 30; - readonly attribute int32u txBeaconRequestCount = 31; - readonly attribute int32u txOtherCount = 32; - readonly attribute int32u txRetryCount = 33; - readonly attribute int32u txDirectMaxRetryExpiryCount = 34; - readonly attribute int32u txIndirectMaxRetryExpiryCount = 35; - readonly attribute int32u txErrCcaCount = 36; - readonly attribute int32u txErrAbortCount = 37; - readonly attribute int32u txErrBusyChannelCount = 38; - readonly attribute int32u rxTotalCount = 39; - readonly attribute int32u rxUnicastCount = 40; - readonly attribute int32u rxBroadcastCount = 41; - readonly attribute int32u rxDataCount = 42; - readonly attribute int32u rxDataPollCount = 43; - readonly attribute int32u rxBeaconCount = 44; - readonly attribute int32u rxBeaconRequestCount = 45; - readonly attribute int32u rxOtherCount = 46; - readonly attribute int32u rxAddressFilteredCount = 47; - readonly attribute int32u rxDestAddrFilteredCount = 48; - readonly attribute int32u rxDuplicatedCount = 49; - readonly attribute int32u rxErrNoFrameCount = 50; - readonly attribute int32u rxErrUnknownNeighborCount = 51; - readonly attribute int32u rxErrInvalidSrcAddrCount = 52; - readonly attribute int32u rxErrSecCount = 53; - readonly attribute int32u rxErrFcsCount = 54; - readonly attribute int32u rxErrOtherCount = 55; - readonly attribute nullable int64u activeTimestamp = 56; - readonly attribute nullable int64u pendingTimestamp = 57; - readonly attribute nullable int32u delay = 58; + readonly attribute optional int16u detachedRoleCount = 14; + readonly attribute optional int16u childRoleCount = 15; + readonly attribute optional int16u routerRoleCount = 16; + readonly attribute optional int16u leaderRoleCount = 17; + readonly attribute optional int16u attachAttemptCount = 18; + readonly attribute optional int16u partitionIdChangeCount = 19; + readonly attribute optional int16u betterPartitionAttachAttemptCount = 20; + readonly attribute optional int16u parentChangeCount = 21; + readonly attribute optional int32u txTotalCount = 22; + readonly attribute optional int32u txUnicastCount = 23; + readonly attribute optional int32u txBroadcastCount = 24; + readonly attribute optional int32u txAckRequestedCount = 25; + readonly attribute optional int32u txAckedCount = 26; + readonly attribute optional int32u txNoAckRequestedCount = 27; + readonly attribute optional int32u txDataCount = 28; + readonly attribute optional int32u txDataPollCount = 29; + readonly attribute optional int32u txBeaconCount = 30; + readonly attribute optional int32u txBeaconRequestCount = 31; + readonly attribute optional int32u txOtherCount = 32; + readonly attribute optional int32u txRetryCount = 33; + readonly attribute optional int32u txDirectMaxRetryExpiryCount = 34; + readonly attribute optional int32u txIndirectMaxRetryExpiryCount = 35; + readonly attribute optional int32u txErrCcaCount = 36; + readonly attribute optional int32u txErrAbortCount = 37; + readonly attribute optional int32u txErrBusyChannelCount = 38; + readonly attribute optional int32u rxTotalCount = 39; + readonly attribute optional int32u rxUnicastCount = 40; + readonly attribute optional int32u rxBroadcastCount = 41; + readonly attribute optional int32u rxDataCount = 42; + readonly attribute optional int32u rxDataPollCount = 43; + readonly attribute optional int32u rxBeaconCount = 44; + readonly attribute optional int32u rxBeaconRequestCount = 45; + readonly attribute optional int32u rxOtherCount = 46; + readonly attribute optional int32u rxAddressFilteredCount = 47; + readonly attribute optional int32u rxDestAddrFilteredCount = 48; + readonly attribute optional int32u rxDuplicatedCount = 49; + readonly attribute optional int32u rxErrNoFrameCount = 50; + readonly attribute optional int32u rxErrUnknownNeighborCount = 51; + readonly attribute optional int32u rxErrInvalidSrcAddrCount = 52; + readonly attribute optional int32u rxErrSecCount = 53; + readonly attribute optional int32u rxErrFcsCount = 54; + readonly attribute optional int32u rxErrOtherCount = 55; + readonly attribute optional nullable int64u activeTimestamp = 56; + readonly attribute optional nullable int64u pendingTimestamp = 57; + readonly attribute optional nullable int32u delay = 58; readonly attribute nullable SecurityPolicy securityPolicy = 59; readonly attribute nullable octet_string<4> channelPage0Mask = 60; readonly attribute nullable OperationalDatasetComponents operationalDatasetComponents = 61; @@ -1894,11 +2151,14 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + /** Reception of this command SHALL reset the OverrunCount attributes to 0 */ command access(invoke: manage) ResetCounts(): DefaultSuccess = 0; } /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ -server cluster WiFiNetworkDiagnostics = 54 { +cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -1953,14 +2213,14 @@ server cluster WiFiNetworkDiagnostics = 54 { readonly attribute nullable WiFiVersionEnum wiFiVersion = 2; readonly attribute nullable int16u channelNumber = 3; readonly attribute nullable int8s rssi = 4; - readonly attribute nullable int32u beaconLostCount = 5; - readonly attribute nullable int32u beaconRxCount = 6; - readonly attribute nullable int32u packetMulticastRxCount = 7; - readonly attribute nullable int32u packetMulticastTxCount = 8; - readonly attribute nullable int32u packetUnicastRxCount = 9; - readonly attribute nullable int32u packetUnicastTxCount = 10; - readonly attribute nullable int64u currentMaxRate = 11; - readonly attribute nullable int64u overrunCount = 12; + readonly attribute optional nullable int32u beaconLostCount = 5; + readonly attribute optional nullable int32u beaconRxCount = 6; + readonly attribute optional nullable int32u packetMulticastRxCount = 7; + readonly attribute optional nullable int32u packetMulticastTxCount = 8; + readonly attribute optional nullable int32u packetUnicastRxCount = 9; + readonly attribute optional nullable int32u packetUnicastTxCount = 10; + readonly attribute optional nullable int64u currentMaxRate = 11; + readonly attribute optional nullable int64u overrunCount = 12; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1968,11 +2228,14 @@ server cluster WiFiNetworkDiagnostics = 54 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + /** Reception of this command SHALL reset the Breacon and Packet related count attributes to 0 */ command ResetCounts(): DefaultSuccess = 0; } /** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ -server cluster EthernetNetworkDiagnostics = 55 { +cluster EthernetNetworkDiagnostics = 55 { + revision 1; // NOTE: Default/not specifically set + enum PHYRateEnum : enum8 { kRate10M = 0; kRate100M = 1; @@ -1991,15 +2254,15 @@ server cluster EthernetNetworkDiagnostics = 55 { kErrorCounts = 0x2; } - readonly attribute nullable PHYRateEnum PHYRate = 0; - readonly attribute nullable boolean fullDuplex = 1; - readonly attribute int64u packetRxCount = 2; - readonly attribute int64u packetTxCount = 3; - readonly attribute int64u txErrCount = 4; - readonly attribute int64u collisionCount = 5; - readonly attribute int64u overrunCount = 6; - readonly attribute nullable boolean carrierDetect = 7; - readonly attribute int64u timeSinceReset = 8; + readonly attribute optional nullable PHYRateEnum PHYRate = 0; + readonly attribute optional nullable boolean fullDuplex = 1; + readonly attribute optional int64u packetRxCount = 2; + readonly attribute optional int64u packetTxCount = 3; + readonly attribute optional int64u txErrCount = 4; + readonly attribute optional int64u collisionCount = 5; + readonly attribute optional int64u overrunCount = 6; + readonly attribute optional nullable boolean carrierDetect = 7; + readonly attribute optional int64u timeSinceReset = 8; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2007,11 +2270,14 @@ server cluster EthernetNetworkDiagnostics = 55 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + /** Reception of this command SHALL reset the attributes: PacketRxCount, PacketTxCount, TxErrCount, CollisionCount, OverrunCount to 0 */ command access(invoke: manage) ResetCounts(): DefaultSuccess = 0; } /** Accurate time is required for a number of reasons, including scheduling, display and validating security materials. */ -server cluster TimeSynchronization = 56 { +cluster TimeSynchronization = 56 { + revision 2; + enum GranularityEnum : enum8 { kNoTimeGranularity = 0; kMinutesGranularity = 1; @@ -2100,16 +2366,17 @@ server cluster TimeSynchronization = 56 { readonly attribute nullable epoch_us UTCTime = 0; readonly attribute GranularityEnum granularity = 1; - readonly attribute TimeSourceEnum timeSource = 2; - readonly attribute nullable TrustedTimeSourceStruct trustedTimeSource = 3; - readonly attribute nullable char_string<128> defaultNTP = 4; - readonly attribute TimeZoneStruct timeZone[] = 5; - readonly attribute DSTOffsetStruct DSTOffset[] = 6; - readonly attribute nullable epoch_us localTime = 7; - readonly attribute TimeZoneDatabaseEnum timeZoneDatabase = 8; - readonly attribute int8u timeZoneListMaxSize = 10; - readonly attribute int8u DSTOffsetListMaxSize = 11; - readonly attribute boolean supportsDNSResolve = 12; + readonly attribute optional TimeSourceEnum timeSource = 2; + readonly attribute optional nullable TrustedTimeSourceStruct trustedTimeSource = 3; + readonly attribute optional nullable char_string<128> defaultNTP = 4; + readonly attribute optional TimeZoneStruct timeZone[] = 5; + readonly attribute optional DSTOffsetStruct DSTOffset[] = 6; + readonly attribute optional nullable epoch_us localTime = 7; + readonly attribute optional TimeZoneDatabaseEnum timeZoneDatabase = 8; + readonly attribute optional boolean NTPServerAvailable = 9; + readonly attribute optional int8u timeZoneListMaxSize = 10; + readonly attribute optional int8u DSTOffsetListMaxSize = 11; + readonly attribute optional boolean supportsDNSResolve = 12; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2131,6 +2398,10 @@ server cluster TimeSynchronization = 56 { TimeZoneStruct timeZone[] = 0; } + response struct SetTimeZoneResponse = 3 { + boolean DSTOffsetRequired = 0; + } + request struct SetDSTOffsetRequest { DSTOffsetStruct DSTOffset[] = 0; } @@ -2139,21 +2410,24 @@ server cluster TimeSynchronization = 56 { nullable char_string<128> defaultNTP = 0; } - response struct SetTimeZoneResponse = 3 { - boolean DSTOffsetRequired = 0; - } - + /** This command MAY be issued by Administrator to set the time. */ command access(invoke: administer) SetUTCTime(SetUTCTimeRequest): DefaultSuccess = 0; + /** This command SHALL set TrustedTimeSource. */ fabric command access(invoke: administer) SetTrustedTimeSource(SetTrustedTimeSourceRequest): DefaultSuccess = 1; + /** This command SHALL set TimeZone. */ command access(invoke: manage) SetTimeZone(SetTimeZoneRequest): SetTimeZoneResponse = 2; + /** This command SHALL set DSTOffset. */ command access(invoke: manage) SetDSTOffset(SetDSTOffsetRequest): DefaultSuccess = 4; + /** This command is used to set DefaultNTP. */ command access(invoke: administer) SetDefaultNTP(SetDefaultNTPRequest): DefaultSuccess = 5; } /** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ -server cluster Switch = 59 { +cluster Switch = 59 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kLatchingSwitch = 0x1; kMomentarySwitch = 0x2; @@ -2194,6 +2468,7 @@ server cluster Switch = 59 { readonly attribute int8u numberOfPositions = 0; readonly attribute int8u currentPosition = 1; + readonly attribute optional int8u multiPressMax = 2; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2203,7 +2478,9 @@ server cluster Switch = 59 { } /** Commands to trigger a Node to allow a new Administrator to commission it. */ -server cluster AdministratorCommissioning = 60 { +cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -2242,13 +2519,18 @@ server cluster AdministratorCommissioning = 60 { int16u commissioningTimeout = 0; } + /** This command is used by a current Administrator to instruct a Node to go into commissioning mode using enhanced commissioning method. */ timed command access(invoke: administer) OpenCommissioningWindow(OpenCommissioningWindowRequest): DefaultSuccess = 0; + /** This command is used by a current Administrator to instruct a Node to go into commissioning mode using basic commissioning method, if the node supports it. */ timed command access(invoke: administer) OpenBasicCommissioningWindow(OpenBasicCommissioningWindowRequest): DefaultSuccess = 1; + /** This command is used by a current Administrator to instruct a Node to revoke any active Open Commissioning Window or Open Basic Commissioning Window command. */ timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ -server cluster OperationalCredentials = 62 { +cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -2299,15 +2581,29 @@ server cluster OperationalCredentials = 62 { octet_string<32> attestationNonce = 0; } + response struct AttestationResponse = 1 { + octet_string<900> attestationElements = 0; + octet_string<64> attestationSignature = 1; + } + request struct CertificateChainRequestRequest { CertificateChainTypeEnum certificateType = 0; } + response struct CertificateChainResponse = 3 { + octet_string<600> certificate = 0; + } + request struct CSRRequestRequest { octet_string<32> CSRNonce = 0; optional boolean isForUpdateNOC = 1; } + response struct CSRResponse = 5 { + octet_string NOCSRElements = 0; + octet_string attestationSignature = 1; + } + request struct AddNOCRequest { octet_string<400> NOCValue = 0; optional octet_string<400> ICACValue = 1; @@ -2321,6 +2617,12 @@ server cluster OperationalCredentials = 62 { optional octet_string ICACValue = 1; } + response struct NOCResponse = 8 { + NodeOperationalCertStatusEnum statusCode = 0; + optional fabric_idx fabricIndex = 1; + optional char_string<128> debugText = 2; + } + request struct UpdateFabricLabelRequest { char_string<32> label = 0; } @@ -2333,38 +2635,28 @@ server cluster OperationalCredentials = 62 { octet_string rootCACertificate = 0; } - response struct AttestationResponse = 1 { - octet_string<900> attestationElements = 0; - octet_string<64> attestationSignature = 1; - } - - response struct CertificateChainResponse = 3 { - octet_string<600> certificate = 0; - } - - response struct CSRResponse = 5 { - octet_string NOCSRElements = 0; - octet_string attestationSignature = 1; - } - - response struct NOCResponse = 8 { - NodeOperationalCertStatusEnum statusCode = 0; - optional fabric_idx fabricIndex = 1; - optional char_string<128> debugText = 2; - } - + /** Sender is requesting attestation information from the receiver. */ command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0; + /** Sender is requesting a device attestation certificate from the receiver. */ command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; + /** Sender is requesting a certificate signing request (CSR) from the receiver. */ command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; + /** Sender is requesting to add the new node operational certificates. */ command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; + /** Sender is requesting to update the node operational certificates. */ fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + /** This command SHALL be used by an Administrative Node to set the user-visible Label field for a given Fabric, as reflected by entries in the Fabrics attribute. */ fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + /** This command is used by Administrative Nodes to remove a given fabric index and delete all associated fabric-scoped data. */ command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; + /** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */ command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ -server cluster GroupKeyManagement = 63 { +cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -2417,27 +2709,33 @@ server cluster GroupKeyManagement = 63 { int16u groupKeySetID = 0; } - request struct KeySetRemoveRequest { - int16u groupKeySetID = 0; - } - response struct KeySetReadResponse = 2 { GroupKeySetStruct groupKeySet = 0; } + request struct KeySetRemoveRequest { + int16u groupKeySetID = 0; + } + response struct KeySetReadAllIndicesResponse = 5 { int16u groupKeySetIDs[] = 0; } + /** Write a new set of keys for the given key set id. */ fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + /** Read the keys for a given key set id. */ fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + /** Revoke a Root Key from a Group */ fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + /** Return the list of Group Key Sets associated with the accessing fabric */ fabric command access(invoke: administer) KeySetReadAllIndices(): KeySetReadAllIndicesResponse = 4; } /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ -server cluster FixedLabel = 64 { +cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -2453,7 +2751,9 @@ server cluster FixedLabel = 64 { } /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ -server cluster UserLabel = 65 { +cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -2469,7 +2769,9 @@ server cluster UserLabel = 65 { } /** This cluster provides an interface to a boolean state called StateValue. */ -server cluster BooleanState = 69 { +cluster BooleanState = 69 { + revision 1; + info event StateChange = 0 { boolean stateValue = 0; } @@ -2484,7 +2786,9 @@ server cluster BooleanState = 69 { } /** Attributes and commands for selecting a mode from a list of supported options. */ -server cluster ModeSelect = 80 { +cluster ModeSelect = 80 { + revision 2; + bitmap Feature : bitmap32 { kOnOff = 0x1; } @@ -2504,9 +2808,9 @@ server cluster ModeSelect = 80 { readonly attribute nullable enum16 standardNamespace = 1; readonly attribute ModeOptionStruct supportedModes[] = 2; readonly attribute int8u currentMode = 3; - attribute nullable int8u startUpMode = 4; - attribute nullable int8u onMode = 5; - readonly attribute int8u manufacturerExtension = 4293984257; + attribute optional nullable int8u startUpMode = 4; + attribute optional nullable int8u onMode = 5; + readonly attribute optional int8u manufacturerExtension = 4293984257; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2518,11 +2822,16 @@ server cluster ModeSelect = 80 { int8u newMode = 0; } + /** On receipt of this command, if the NewMode field matches the Mode field in an entry of the SupportedModes list, the server SHALL set the CurrentMode attribute to the NewMode value, otherwise, the server SHALL respond with an INVALID_COMMAND status response. */ command ChangeToMode(ChangeToModeRequest): DefaultSuccess = 0; + /** Sample manufacturer specific extension command */ + command SampleMfgExtensionCommand(): DefaultSuccess = 4293984257; } /** Attributes and commands for selecting a mode from a list of supported options. */ -server cluster LaundryWasherMode = 81 { +cluster LaundryWasherMode = 81 { + revision 2; + enum ModeTag : enum16 { kNormal = 16384; kDelicate = 16385; @@ -2547,8 +2856,8 @@ server cluster LaundryWasherMode = 81 { readonly attribute ModeOptionStruct supportedModes[] = 0; readonly attribute int8u currentMode = 1; - attribute nullable int8u startUpMode = 2; - attribute nullable int8u onMode = 3; + attribute optional nullable int8u startUpMode = 2; + attribute optional nullable int8u onMode = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2565,11 +2874,15 @@ server cluster LaundryWasherMode = 81 { optional char_string statusText = 1; } + /** This command is used to change device modes. + On receipt of this command the device SHALL respond with a ChangeToModeResponse command. */ command ChangeToMode(ChangeToModeRequest): ChangeToModeResponse = 0; } /** Attributes and commands for selecting a mode from a list of supported options. */ -server cluster RefrigeratorAndTemperatureControlledCabinetMode = 82 { +cluster RefrigeratorAndTemperatureControlledCabinetMode = 82 { + revision 2; + enum ModeTag : enum16 { kRapidCool = 16384; kRapidFreeze = 16385; @@ -2592,8 +2905,8 @@ server cluster RefrigeratorAndTemperatureControlledCabinetMode = 82 { readonly attribute ModeOptionStruct supportedModes[] = 0; readonly attribute int8u currentMode = 1; - attribute nullable int8u startUpMode = 2; - attribute nullable int8u onMode = 3; + attribute optional nullable int8u startUpMode = 2; + attribute optional nullable int8u onMode = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2610,11 +2923,15 @@ server cluster RefrigeratorAndTemperatureControlledCabinetMode = 82 { optional char_string statusText = 1; } + /** This command is used to change device modes. + On receipt of this command the device SHALL respond with a ChangeToModeResponse command. */ command ChangeToMode(ChangeToModeRequest): ChangeToModeResponse = 0; } /** This cluster supports remotely monitoring and controling the different typs of functionality available to a washing device, such as a washing machine. */ -server cluster LaundryWasherControls = 83 { +cluster LaundryWasherControls = 83 { + revision 1; // NOTE: Default/not specifically set + enum NumberOfRinsesEnum : enum8 { kNone = 0; kNormal = 1; @@ -2627,10 +2944,10 @@ server cluster LaundryWasherControls = 83 { kRinse = 0x2; } - readonly attribute char_string spinSpeeds[] = 0; - attribute nullable int8u spinSpeedCurrent = 1; - attribute NumberOfRinsesEnum numberOfRinses = 2; - readonly attribute NumberOfRinsesEnum supportedRinses[] = 3; + readonly attribute optional char_string spinSpeeds[] = 0; + attribute optional nullable int8u spinSpeedCurrent = 1; + attribute optional NumberOfRinsesEnum numberOfRinses = 2; + readonly attribute optional NumberOfRinsesEnum supportedRinses[] = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2640,7 +2957,9 @@ server cluster LaundryWasherControls = 83 { } /** Attributes and commands for selecting a mode from a list of supported options. */ -server cluster RvcRunMode = 84 { +cluster RvcRunMode = 84 { + revision 2; + enum ModeTag : enum16 { kIdle = 16384; kCleaning = 16385; @@ -2674,7 +2993,7 @@ server cluster RvcRunMode = 84 { readonly attribute ModeOptionStruct supportedModes[] = 0; readonly attribute int8u currentMode = 1; - attribute nullable int8u onMode = 3; + attribute optional nullable int8u onMode = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2691,11 +3010,15 @@ server cluster RvcRunMode = 84 { optional char_string statusText = 1; } + /** This command is used to change device modes. + On receipt of this command the device SHALL respond with a ChangeToModeResponse command. */ command ChangeToMode(ChangeToModeRequest): ChangeToModeResponse = 0; } /** Attributes and commands for selecting a mode from a list of supported options. */ -server cluster RvcCleanMode = 85 { +cluster RvcCleanMode = 85 { + revision 2; + enum ModeTag : enum16 { kDeepClean = 16384; kVacuum = 16385; @@ -2723,7 +3046,7 @@ server cluster RvcCleanMode = 85 { readonly attribute ModeOptionStruct supportedModes[] = 0; readonly attribute int8u currentMode = 1; - attribute nullable int8u onMode = 3; + attribute optional nullable int8u onMode = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2740,19 +3063,27 @@ server cluster RvcCleanMode = 85 { optional char_string statusText = 1; } + /** This command is used to change device modes. + On receipt of this command the device SHALL respond with a ChangeToModeResponse command. */ command ChangeToMode(ChangeToModeRequest): ChangeToModeResponse = 0; } /** Attributes and commands for configuring the temperature control, and reporting temperature. */ -server cluster TemperatureControl = 86 { +cluster TemperatureControl = 86 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kTemperatureNumber = 0x1; kTemperatureLevel = 0x2; kTemperatureStep = 0x4; } - readonly attribute int8u selectedTemperatureLevel = 4; - readonly attribute char_string supportedTemperatureLevels[] = 5; + readonly attribute optional temperature temperatureSetpoint = 0; + readonly attribute optional temperature minTemperature = 1; + readonly attribute optional temperature maxTemperature = 2; + readonly attribute optional temperature step = 3; + readonly attribute optional int8u selectedTemperatureLevel = 4; + readonly attribute optional char_string supportedTemperatureLevels[] = 5; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2765,11 +3096,14 @@ server cluster TemperatureControl = 86 { optional int8u targetTemperatureLevel = 1; } + /** Set Temperature */ command SetTemperature(SetTemperatureRequest): DefaultSuccess = 0; } /** Attributes and commands for configuring the Refrigerator alarm. */ -server cluster RefrigeratorAlarm = 87 { +cluster RefrigeratorAlarm = 87 { + revision 1; // NOTE: Default/not specifically set + bitmap AlarmMap : bitmap32 { kDoorOpen = 0x1; } @@ -2793,7 +3127,9 @@ server cluster RefrigeratorAlarm = 87 { } /** Attributes and commands for selecting a mode from a list of supported options. */ -server cluster DishwasherMode = 89 { +cluster DishwasherMode = 89 { + revision 2; + enum ModeTag : enum16 { kNormal = 16384; kHeavy = 16385; @@ -2817,8 +3153,8 @@ server cluster DishwasherMode = 89 { readonly attribute ModeOptionStruct supportedModes[] = 0; readonly attribute int8u currentMode = 1; - attribute nullable int8u startUpMode = 2; - attribute nullable int8u onMode = 3; + attribute optional nullable int8u startUpMode = 2; + attribute optional nullable int8u onMode = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2835,11 +3171,15 @@ server cluster DishwasherMode = 89 { optional char_string statusText = 1; } + /** This command is used to change device modes. + On receipt of this command the device SHALL respond with a ChangeToModeResponse command. */ command ChangeToMode(ChangeToModeRequest): ChangeToModeResponse = 0; } /** Attributes for reporting air quality classification */ -server cluster AirQuality = 91 { +cluster AirQuality = 91 { + revision 1; // NOTE: Default/not specifically set + enum AirQualityEnum : enum8 { kUnknown = 0; kGood = 1; @@ -2867,7 +3207,9 @@ server cluster AirQuality = 91 { } /** This cluster provides an interface for observing and managing the state of smoke and CO alarms. */ -server cluster SmokeCoAlarm = 92 { +cluster SmokeCoAlarm = 92 { + revision 1; + enum AlarmStateEnum : enum8 { kNormal = 0; kWarning = 1; @@ -2953,18 +3295,18 @@ server cluster SmokeCoAlarm = 92 { } readonly attribute ExpressedStateEnum expressedState = 0; - readonly attribute AlarmStateEnum smokeState = 1; - readonly attribute AlarmStateEnum COState = 2; + readonly attribute optional AlarmStateEnum smokeState = 1; + readonly attribute optional AlarmStateEnum COState = 2; readonly attribute AlarmStateEnum batteryAlert = 3; - readonly attribute MuteStateEnum deviceMuted = 4; + readonly attribute optional MuteStateEnum deviceMuted = 4; readonly attribute boolean testInProgress = 5; readonly attribute boolean hardwareFaultAlert = 6; readonly attribute EndOfServiceEnum endOfServiceAlert = 7; - readonly attribute AlarmStateEnum interconnectSmokeAlarm = 8; - readonly attribute AlarmStateEnum interconnectCOAlarm = 9; - readonly attribute ContaminationStateEnum contaminationState = 10; - attribute access(write: manage) SensitivityEnum smokeSensitivityLevel = 11; - readonly attribute epoch_s expiryDate = 12; + readonly attribute optional AlarmStateEnum interconnectSmokeAlarm = 8; + readonly attribute optional AlarmStateEnum interconnectCOAlarm = 9; + readonly attribute optional ContaminationStateEnum contaminationState = 10; + attribute access(write: manage) optional SensitivityEnum smokeSensitivityLevel = 11; + readonly attribute optional epoch_s expiryDate = 12; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2972,11 +3314,14 @@ server cluster SmokeCoAlarm = 92 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + /** This command SHALL initiate a device self-test. */ command SelfTestRequest(): DefaultSuccess = 0; } /** Attributes and commands for configuring the Dishwasher alarm. */ -server cluster DishwasherAlarm = 93 { +cluster DishwasherAlarm = 93 { + revision 1; // NOTE: Default/not specifically set + bitmap AlarmMap : bitmap32 { kInflowError = 0x1; kDrainError = 0x2; @@ -2998,7 +3343,7 @@ server cluster DishwasherAlarm = 93 { } readonly attribute AlarmMap mask = 0; - readonly attribute AlarmMap latch = 1; + readonly attribute optional AlarmMap latch = 1; readonly attribute AlarmMap state = 2; readonly attribute AlarmMap supported = 3; readonly attribute command_id generatedCommandList[] = 65528; @@ -3016,12 +3361,50 @@ server cluster DishwasherAlarm = 93 { AlarmMap mask = 0; } + /** Reset alarm */ command Reset(ResetRequest): DefaultSuccess = 0; + /** Modify enabled alarms */ command ModifyEnabledAlarms(ModifyEnabledAlarmsRequest): DefaultSuccess = 1; } +/** Attributes and commands for selecting a mode from a list of supported options. */ +provisional cluster MicrowaveOvenMode = 94 { + revision 1; + + enum ModeTag : enum16 { + kNormal = 16384; + kDefrost = 16385; + } + + bitmap Feature : bitmap32 { + kOnOff = 0x1; + } + + struct ModeTagStruct { + optional vendor_id mfgCode = 0; + enum16 value = 1; + } + + struct ModeOptionStruct { + char_string<64> label = 0; + int8u mode = 1; + ModeTagStruct modeTags[] = 2; + } + + readonly attribute ModeOptionStruct supportedModes[] = 0; + readonly attribute int8u currentMode = 1; + readonly attribute command_id generatedCommandList[] = 65528; + readonly attribute command_id acceptedCommandList[] = 65529; + readonly attribute event_id eventList[] = 65530; + readonly attribute attrib_id attributeList[] = 65531; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; +} + /** This cluster supports remotely monitoring and, where supported, changing the operational state of any device where a state machine is a part of the operation. */ -server cluster OperationalState = 96 { +cluster OperationalState = 96 { + revision 1; // NOTE: Default/not specifically set + enum ErrorStateEnum : enum8 { kNoError = 0; kUnableToStartOrResume = 1; @@ -3059,7 +3442,7 @@ server cluster OperationalState = 96 { readonly attribute nullable char_string phaseList[] = 0; readonly attribute nullable int8u currentPhase = 1; - readonly attribute nullable elapsed_s countdownTime = 2; + readonly attribute optional nullable elapsed_s countdownTime = 2; readonly attribute OperationalStateStruct operationalStateList[] = 3; readonly attribute OperationalStateEnum operationalState = 4; readonly attribute ErrorStateStruct operationalError = 5; @@ -3074,14 +3457,20 @@ server cluster OperationalState = 96 { ErrorStateStruct commandResponseState = 0; } + /** Upon receipt, the device SHALL pause its operation if it is possible based on the current function of the server. */ command Pause(): OperationalCommandResponse = 0; + /** Upon receipt, the device SHALL stop its operation if it is at a position where it is safe to do so and/or permitted. */ command Stop(): OperationalCommandResponse = 1; + /** Upon receipt, the device SHALL start its operation if it is safe to do so and the device is in an operational state from which it can be started. */ command Start(): OperationalCommandResponse = 2; + /** Upon receipt, the device SHALL resume its operation from the point it was at when it received the Pause command, or from the point when it was paused by means outside of this cluster (for example by manual button press). */ command Resume(): OperationalCommandResponse = 3; } /** This cluster supports remotely monitoring and, where supported, changing the operational state of a Robotic Vacuum. */ -server cluster RvcOperationalState = 97 { +cluster RvcOperationalState = 97 { + revision 1; // NOTE: Default/not specifically set + enum ErrorStateEnum : enum8 { kFailedToFindChargingDock = 64; kStuck = 65; @@ -3122,7 +3511,7 @@ server cluster RvcOperationalState = 97 { readonly attribute nullable char_string phaseList[] = 0; readonly attribute nullable int8u currentPhase = 1; - readonly attribute nullable elapsed_s countdownTime = 2; + readonly attribute optional nullable elapsed_s countdownTime = 2; readonly attribute OperationalStateStruct operationalStateList[] = 3; readonly attribute enum8 operationalState = 4; readonly attribute ErrorStateStruct operationalError = 5; @@ -3137,12 +3526,20 @@ server cluster RvcOperationalState = 97 { ErrorStateStruct commandResponseState = 0; } + /** Upon receipt, the device SHALL pause its operation if it is possible based on the current function of the server. */ command Pause(): OperationalCommandResponse = 0; + /** Upon receipt, the device SHALL stop its operation if it is at a position where it is safe to do so and/or permitted. */ + command Stop(): OperationalCommandResponse = 1; + /** Upon receipt, the device SHALL start its operation if it is safe to do so and the device is in an operational state from which it can be started. */ + command Start(): OperationalCommandResponse = 2; + /** Upon receipt, the device SHALL resume its operation from the point it was at when it received the Pause command, or from the point when it was paused by means outside of this cluster (for example by manual button press). */ command Resume(): OperationalCommandResponse = 3; } /** Attributes and commands for monitoring HEPA filters in a device */ -server cluster HepaFilterMonitoring = 113 { +cluster HepaFilterMonitoring = 113 { + revision 1; // NOTE: Default/not specifically set + enum ChangeIndicationEnum : enum8 { kOK = 0; kWarning = 1; @@ -3173,12 +3570,12 @@ server cluster HepaFilterMonitoring = 113 { char_string<20> productIdentifierValue = 1; } - readonly attribute percent condition = 0; - readonly attribute DegradationDirectionEnum degradationDirection = 1; + readonly attribute optional percent condition = 0; + readonly attribute optional DegradationDirectionEnum degradationDirection = 1; readonly attribute ChangeIndicationEnum changeIndication = 2; - readonly attribute boolean inPlaceIndicator = 3; - attribute nullable epoch_s lastChangedTime = 4; - readonly attribute ReplacementProductStruct replacementProductList[] = 5; + readonly attribute optional boolean inPlaceIndicator = 3; + attribute optional nullable epoch_s lastChangedTime = 4; + readonly attribute optional ReplacementProductStruct replacementProductList[] = 5; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3186,11 +3583,14 @@ server cluster HepaFilterMonitoring = 113 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + /** Reset the condition of the replaceable to the non degraded state */ command ResetCondition(): DefaultSuccess = 0; } /** Attributes and commands for monitoring activated carbon filters in a device */ -server cluster ActivatedCarbonFilterMonitoring = 114 { +cluster ActivatedCarbonFilterMonitoring = 114 { + revision 1; // NOTE: Default/not specifically set + enum ChangeIndicationEnum : enum8 { kOK = 0; kWarning = 1; @@ -3221,12 +3621,12 @@ server cluster ActivatedCarbonFilterMonitoring = 114 { char_string<20> productIdentifierValue = 1; } - readonly attribute percent condition = 0; - readonly attribute DegradationDirectionEnum degradationDirection = 1; + readonly attribute optional percent condition = 0; + readonly attribute optional DegradationDirectionEnum degradationDirection = 1; readonly attribute ChangeIndicationEnum changeIndication = 2; - readonly attribute boolean inPlaceIndicator = 3; - attribute nullable epoch_s lastChangedTime = 4; - readonly attribute ReplacementProductStruct replacementProductList[] = 5; + readonly attribute optional boolean inPlaceIndicator = 3; + attribute optional nullable epoch_s lastChangedTime = 4; + readonly attribute optional ReplacementProductStruct replacementProductList[] = 5; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3234,11 +3634,274 @@ server cluster ActivatedCarbonFilterMonitoring = 114 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; - command ResetCondition(): DefaultSuccess = 0; + /** Reset the condition of the replaceable to the non degraded state */ + command ResetCondition(): DefaultSuccess = 0; +} + +/** This cluster provides a mechanism for querying data about the electrical energy imported or provided by the server. */ +provisional cluster ElectricalEnergyMeasurement = 145 { + revision 1; + + enum MeasurementTypeEnum : enum16 { + kUnspecified = 0; + kVoltage = 1; + kActiveCurrent = 2; + kReactiveCurrent = 3; + kApparentCurrent = 4; + kActivePower = 5; + kReactivePower = 6; + kApparentPower = 7; + kRMSVoltage = 8; + kRMSCurrent = 9; + kRMSPower = 10; + kFrequency = 11; + kPowerFactor = 12; + kNeutralCurrent = 13; + kElectricalEnergy = 14; + } + + bitmap Feature : bitmap32 { + kImportedEnergy = 0x1; + kExportedEnergy = 0x2; + kCumulativeEnergy = 0x4; + kPeriodicEnergy = 0x8; + } + + struct MeasurementAccuracyRangeStruct { + int64s rangeMin = 0; + int64s rangeMax = 1; + optional percent100ths percentMax = 2; + optional percent100ths percentMin = 3; + optional percent100ths percentTypical = 4; + optional int64u fixedMax = 5; + optional int64u fixedMin = 6; + optional int64u fixedTypical = 7; + } + + struct MeasurementAccuracyStruct { + MeasurementTypeEnum measurementType = 0; + boolean measured = 1; + int64s minMeasuredValue = 2; + int64s maxMeasuredValue = 3; + MeasurementAccuracyRangeStruct accuracyRanges[] = 4; + } + + struct EnergyMeasurementStruct { + int64s energy = 0; + optional epoch_s startTimestamp = 1; + optional epoch_s endTimestamp = 2; + optional systime_ms startSystime = 3; + optional systime_ms endSystime = 4; + } + + info event CumulativeEnergyMeasured = 0 { + optional EnergyMeasurementStruct energyImported = 0; + optional EnergyMeasurementStruct energyExported = 1; + } + + info event PeriodicEnergyMeasured = 1 { + optional EnergyMeasurementStruct energyImported = 0; + optional EnergyMeasurementStruct energyExported = 1; + } + + readonly attribute MeasurementAccuracyStruct accuracy = 0; + readonly attribute optional nullable EnergyMeasurementStruct cumulativeEnergyImported = 1; + readonly attribute optional nullable EnergyMeasurementStruct cumulativeEnergyExported = 2; + readonly attribute optional nullable EnergyMeasurementStruct periodicEnergyImported = 3; + readonly attribute optional nullable EnergyMeasurementStruct periodicEnergyExported = 4; + readonly attribute command_id generatedCommandList[] = 65528; + readonly attribute command_id acceptedCommandList[] = 65529; + readonly attribute event_id eventList[] = 65530; + readonly attribute attrib_id attributeList[] = 65531; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; +} + +/** Electric Vehicle Supply Equipment (EVSE) is equipment used to charge an Electric Vehicle (EV) or Plug-In Hybrid Electric Vehicle. This cluster provides an interface to the functionality of Electric Vehicle Supply Equipment (EVSE) management. */ +provisional cluster EnergyEvse = 153 { + revision 1; // NOTE: Default/not specifically set + + enum EnergyTransferStoppedReasonEnum : enum8 { + kEVStopped = 0; + kEVSEStopped = 1; + kOther = 2; + } + + enum FaultStateEnum : enum8 { + kNoError = 0; + kMeterFailure = 1; + kOverVoltage = 2; + kUnderVoltage = 3; + kOverCurrent = 4; + kContactWetFailure = 5; + kContactDryFailure = 6; + kGroundFault = 7; + kPowerLoss = 8; + kPowerQuality = 9; + kPilotShortCircuit = 10; + kEmergencyStop = 11; + kEVDisconnected = 12; + kWrongPowerSupply = 13; + kLiveNeutralSwap = 14; + kOverTemperature = 15; + kOther = 255; + } + + enum StateEnum : enum8 { + kNotPluggedIn = 0; + kPluggedInNoDemand = 1; + kPluggedInDemand = 2; + kPluggedInCharging = 3; + kPluggedInDischarging = 4; + kSessionEnding = 5; + kFault = 6; + } + + enum SupplyStateEnum : enum8 { + kDisabled = 0; + kChargingEnabled = 1; + kDischargingEnabled = 2; + kDisabledError = 3; + kDisabledDiagnostics = 4; + } + + bitmap Feature : bitmap32 { + kChargingPreferences = 0x1; + kSoCReporting = 0x2; + kPlugAndCharge = 0x4; + kRFID = 0x8; + kV2X = 0x10; + } + + bitmap TargetDayOfWeekBitmap : bitmap8 { + kSunday = 0x1; + kMonday = 0x2; + kTuesday = 0x4; + kWednesday = 0x8; + kThursday = 0x10; + kFriday = 0x20; + kSaturday = 0x40; + } + + struct ChargingTargetStruct { + int16u targetTimeMinutesPastMidnight = 0; + optional percent targetSoC = 1; + optional energy_mwh addedEnergy = 2; + } + + info event EVConnected = 0 { + int32u sessionID = 0; + } + + info event EVNotDetected = 1 { + int32u sessionID = 0; + StateEnum state = 1; + elapsed_s sessionDuration = 2; + energy_mwh sessionEnergyCharged = 3; + optional energy_mwh sessionEnergyDischarged = 4; + } + + info event EnergyTransferStarted = 2 { + int32u sessionID = 0; + StateEnum state = 1; + amperage_ma maximumCurrent = 2; + } + + info event EnergyTransferStopped = 3 { + int32u sessionID = 0; + StateEnum state = 1; + EnergyTransferStoppedReasonEnum reason = 2; + energy_mwh energyTransferred = 4; + } + + critical event Fault = 4 { + nullable int32u sessionID = 0; + StateEnum state = 1; + FaultStateEnum faultStatePreviousState = 2; + FaultStateEnum faultStateCurrentState = 4; + } + + info event RFID = 5 { + octet_string uid = 0; + } + + readonly attribute nullable StateEnum state = 0; + readonly attribute SupplyStateEnum supplyState = 1; + readonly attribute FaultStateEnum faultState = 2; + readonly attribute nullable epoch_s chargingEnabledUntil = 3; + readonly attribute optional nullable epoch_s dischargingEnabledUntil = 4; + readonly attribute amperage_ma circuitCapacity = 5; + readonly attribute amperage_ma minimumChargeCurrent = 6; + readonly attribute amperage_ma maximumChargeCurrent = 7; + readonly attribute optional amperage_ma maximumDischargeCurrent = 8; + attribute access(write: manage) optional amperage_ma userMaximumChargeCurrent = 9; + attribute access(write: manage) optional elapsed_s randomizationDelayWindow = 10; + readonly attribute optional int8u numberOfWeeklyTargets = 33; + readonly attribute optional int8u numberOfDailyTargets = 34; + readonly attribute optional nullable epoch_s nextChargeStartTime = 35; + readonly attribute optional nullable epoch_s nextChargeTargetTime = 36; + readonly attribute optional nullable energy_mwh nextChargeRequiredEnergy = 37; + readonly attribute optional nullable percent nextChargeTargetSoC = 38; + attribute access(write: manage) optional nullable int16u approximateEVEfficiency = 39; + readonly attribute optional nullable percent stateOfCharge = 48; + readonly attribute optional nullable energy_mwh batteryCapacity = 49; + readonly attribute optional nullable char_string<32> vehicleID = 50; + readonly attribute nullable int32u sessionID = 64; + readonly attribute nullable elapsed_s sessionDuration = 65; + readonly attribute nullable energy_mwh sessionEnergyCharged = 66; + readonly attribute optional nullable energy_mwh sessionEnergyDischarged = 67; + readonly attribute command_id generatedCommandList[] = 65528; + readonly attribute command_id acceptedCommandList[] = 65529; + readonly attribute event_id eventList[] = 65530; + readonly attribute attrib_id attributeList[] = 65531; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; + + response struct GetTargetsResponse = 0 { + TargetDayOfWeekBitmap dayOfWeekforSequence = 0; + ChargingTargetStruct chargingTargets[] = 1; + } + + request struct EnableChargingRequest { + nullable epoch_s chargingEnabledUntil = 0; + amperage_ma minimumChargeCurrent = 1; + amperage_ma maximumChargeCurrent = 2; + } + + request struct EnableDischargingRequest { + nullable epoch_s dischargingEnabledUntil = 0; + amperage_ma maximumDischargeCurrent = 1; + } + + request struct SetTargetsRequest { + TargetDayOfWeekBitmap dayOfWeekforSequence = 0; + ChargingTargetStruct chargingTargets[] = 1; + } + + request struct GetTargetsRequest { + TargetDayOfWeekBitmap daysToReturn = 0; + } + + /** Allows a client to disable the EVSE from charging and discharging. */ + timed command Disable(): DefaultSuccess = 1; + /** Allows a client to enable the EVSE to charge an EV. */ + timed command EnableCharging(EnableChargingRequest): DefaultSuccess = 2; + /** Allows a client to enable the EVSE to discharge an EV. */ + timed command EnableDischarging(EnableDischargingRequest): DefaultSuccess = 3; + /** Allows a client to put the EVSE into a self-diagnostics mode. */ + timed command StartDiagnostics(): DefaultSuccess = 4; + /** Allows a client to set the user specified charging targets. */ + timed command SetTargets(SetTargetsRequest): DefaultSuccess = 5; + /** Allows a client to retrieve the user specified charging targets. */ + timed command GetTargets(GetTargetsRequest): GetTargetsResponse = 6; + /** Allows a client to clear all stored charging targets. */ + timed command ClearTargets(): DefaultSuccess = 7; } /** Provides an interface for controlling and adjusting automatic window coverings. */ -server cluster WindowCovering = 258 { +cluster WindowCovering = 258 { + revision 5; + enum EndProductType : enum8 { kRollerShade = 0; kRomanShade = 1; @@ -3328,27 +3991,27 @@ server cluster WindowCovering = 258 { } readonly attribute Type type = 0; - readonly attribute int16u physicalClosedLimitLift = 1; - readonly attribute int16u physicalClosedLimitTilt = 2; - readonly attribute nullable int16u currentPositionLift = 3; - readonly attribute nullable int16u currentPositionTilt = 4; - readonly attribute int16u numberOfActuationsLift = 5; - readonly attribute int16u numberOfActuationsTilt = 6; + readonly attribute optional int16u physicalClosedLimitLift = 1; + readonly attribute optional int16u physicalClosedLimitTilt = 2; + readonly attribute optional nullable int16u currentPositionLift = 3; + readonly attribute optional nullable int16u currentPositionTilt = 4; + readonly attribute optional int16u numberOfActuationsLift = 5; + readonly attribute optional int16u numberOfActuationsTilt = 6; readonly attribute ConfigStatus configStatus = 7; - readonly attribute nullable percent currentPositionLiftPercentage = 8; - readonly attribute nullable percent currentPositionTiltPercentage = 9; + readonly attribute optional nullable percent currentPositionLiftPercentage = 8; + readonly attribute optional nullable percent currentPositionTiltPercentage = 9; readonly attribute OperationalStatus operationalStatus = 10; - readonly attribute nullable percent100ths targetPositionLiftPercent100ths = 11; - readonly attribute nullable percent100ths targetPositionTiltPercent100ths = 12; + readonly attribute optional nullable percent100ths targetPositionLiftPercent100ths = 11; + readonly attribute optional nullable percent100ths targetPositionTiltPercent100ths = 12; readonly attribute EndProductType endProductType = 13; - readonly attribute nullable percent100ths currentPositionLiftPercent100ths = 14; - readonly attribute nullable percent100ths currentPositionTiltPercent100ths = 15; - readonly attribute int16u installedOpenLimitLift = 16; - readonly attribute int16u installedClosedLimitLift = 17; - readonly attribute int16u installedOpenLimitTilt = 18; - readonly attribute int16u installedClosedLimitTilt = 19; + readonly attribute optional nullable percent100ths currentPositionLiftPercent100ths = 14; + readonly attribute optional nullable percent100ths currentPositionTiltPercent100ths = 15; + readonly attribute optional int16u installedOpenLimitLift = 16; + readonly attribute optional int16u installedClosedLimitLift = 17; + readonly attribute optional int16u installedOpenLimitTilt = 18; + readonly attribute optional int16u installedClosedLimitTilt = 19; attribute access(write: manage) Mode mode = 23; - readonly attribute SafetyStatus safetyStatus = 26; + readonly attribute optional SafetyStatus safetyStatus = 26; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3372,17 +4035,26 @@ server cluster WindowCovering = 258 { percent100ths tiltPercent100thsValue = 0; } + /** Moves window covering to InstalledOpenLimitLift and InstalledOpenLimitTilt */ command UpOrOpen(): DefaultSuccess = 0; + /** Moves window covering to InstalledClosedLimitLift and InstalledCloseLimitTilt */ command DownOrClose(): DefaultSuccess = 1; + /** Stop any adjusting of window covering */ command StopMotion(): DefaultSuccess = 2; + /** Go to lift value specified */ command GoToLiftValue(GoToLiftValueRequest): DefaultSuccess = 4; + /** Go to lift percentage specified */ command GoToLiftPercentage(GoToLiftPercentageRequest): DefaultSuccess = 5; + /** Go to tilt value specified */ command GoToTiltValue(GoToTiltValueRequest): DefaultSuccess = 7; + /** Go to tilt percentage specified */ command GoToTiltPercentage(GoToTiltPercentageRequest): DefaultSuccess = 8; } /** This cluster provides control of a barrier (garage door). */ -server cluster BarrierControl = 259 { +deprecated cluster BarrierControl = 259 { + revision 1; // NOTE: Default/not specifically set + bitmap BarrierControlCapabilities : bitmap8 { kPartialBarrier = 0x1; } @@ -3397,6 +4069,12 @@ server cluster BarrierControl = 259 { readonly attribute enum8 barrierMovingState = 1; readonly attribute bitmap16 barrierSafetyStatus = 2; readonly attribute bitmap8 barrierCapabilities = 3; + attribute optional int16u barrierOpenEvents = 4; + attribute optional int16u barrierCloseEvents = 5; + attribute optional int16u barrierCommandOpenEvents = 6; + attribute optional int16u barrierCommandCloseEvents = 7; + attribute optional int16u barrierOpenPeriod = 8; + attribute optional int16u barrierClosePeriod = 9; readonly attribute int8u barrierPosition = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; @@ -3409,12 +4087,16 @@ server cluster BarrierControl = 259 { int8u percentOpen = 0; } + /** Command to instruct a barrier to go to a percent open state. */ command BarrierControlGoToPercent(BarrierControlGoToPercentRequest): DefaultSuccess = 0; + /** Command that instructs the barrier to stop moving. */ command BarrierControlStop(): DefaultSuccess = 1; } /** An interface for configuring and controlling pumps. */ -server cluster PumpConfigurationAndControl = 512 { +cluster PumpConfigurationAndControl = 512 { + revision 3; + enum ControlModeEnum : enum8 { kConstantSpeed = 0; kConstantPressure = 1; @@ -3507,26 +4189,26 @@ server cluster PumpConfigurationAndControl = 512 { readonly attribute nullable int16s maxPressure = 0; readonly attribute nullable int16u maxSpeed = 1; readonly attribute nullable int16u maxFlow = 2; - readonly attribute nullable int16s minConstPressure = 3; - readonly attribute nullable int16s maxConstPressure = 4; - readonly attribute nullable int16s minCompPressure = 5; - readonly attribute nullable int16s maxCompPressure = 6; - readonly attribute nullable int16u minConstSpeed = 7; - readonly attribute nullable int16u maxConstSpeed = 8; - readonly attribute nullable int16u minConstFlow = 9; - readonly attribute nullable int16u maxConstFlow = 10; - readonly attribute nullable int16s minConstTemp = 11; - readonly attribute nullable int16s maxConstTemp = 12; - readonly attribute PumpStatusBitmap pumpStatus = 16; + readonly attribute optional nullable int16s minConstPressure = 3; + readonly attribute optional nullable int16s maxConstPressure = 4; + readonly attribute optional nullable int16s minCompPressure = 5; + readonly attribute optional nullable int16s maxCompPressure = 6; + readonly attribute optional nullable int16u minConstSpeed = 7; + readonly attribute optional nullable int16u maxConstSpeed = 8; + readonly attribute optional nullable int16u minConstFlow = 9; + readonly attribute optional nullable int16u maxConstFlow = 10; + readonly attribute optional nullable int16s minConstTemp = 11; + readonly attribute optional nullable int16s maxConstTemp = 12; + readonly attribute optional PumpStatusBitmap pumpStatus = 16; readonly attribute OperationModeEnum effectiveOperationMode = 17; readonly attribute ControlModeEnum effectiveControlMode = 18; readonly attribute nullable int16s capacity = 19; - readonly attribute nullable int16u speed = 20; - attribute access(write: manage) nullable int24u lifetimeRunningHours = 21; - readonly attribute nullable int24u power = 22; - attribute access(write: manage) nullable int32u lifetimeEnergyConsumed = 23; + readonly attribute optional nullable int16u speed = 20; + attribute access(write: manage) optional nullable int24u lifetimeRunningHours = 21; + readonly attribute optional nullable int24u power = 22; + attribute access(write: manage) optional nullable int32u lifetimeEnergyConsumed = 23; attribute access(write: manage) OperationModeEnum operationMode = 32; - attribute access(write: manage) ControlModeEnum controlMode = 33; + attribute access(write: manage) optional ControlModeEnum controlMode = 33; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3536,14 +4218,44 @@ server cluster PumpConfigurationAndControl = 512 { } /** An interface for configuring and controlling the functionality of a thermostat. */ -server cluster Thermostat = 513 { - enum SetpointAdjustMode : enum8 { - kHeat = 0; - kCool = 1; - kBoth = 2; +cluster Thermostat = 513 { + revision 6; + + enum ACCapacityFormatEnum : enum8 { + kBTUh = 0; + } + + enum ACCompressorTypeEnum : enum8 { + kUnknown = 0; + kT1 = 1; + kT2 = 2; + kT3 = 3; + } + + enum ACLouverPositionEnum : enum8 { + kClosed = 1; + kOpen = 2; + kQuarter = 3; + kHalf = 4; + kThreeQuarters = 5; + } + + enum ACRefrigerantTypeEnum : enum8 { + kUnknown = 0; + kR22 = 1; + kR410a = 2; + kR407c = 3; + } + + enum ACTypeEnum : enum8 { + kUnknown = 0; + kCoolingFixed = 1; + kHeatPumpFixed = 2; + kCoolingInverter = 3; + kHeatPumpInverter = 4; } - enum ThermostatControlSequence : enum8 { + enum ControlSequenceOfOperationEnum : enum8 { kCoolingOnly = 0; kCoolingWithReheat = 1; kHeatingOnly = 2; @@ -3552,13 +4264,29 @@ server cluster Thermostat = 513 { kCoolingAndHeatingWithReheat = 5; } - enum ThermostatRunningMode : enum8 { - kOff = 0; - kCool = 3; - kHeat = 4; + enum SetpointChangeSourceEnum : enum8 { + kManual = 0; + kSchedule = 1; + kExternal = 2; } - enum ThermostatSystemMode : enum8 { + enum SetpointRaiseLowerModeEnum : enum8 { + kHeat = 0; + kCool = 1; + kBoth = 2; + } + + enum StartOfWeekEnum : enum8 { + kSunday = 0; + kMonday = 1; + kTuesday = 2; + kWednesday = 3; + kThursday = 4; + kFriday = 5; + kSaturday = 6; + } + + enum SystemModeEnum : enum8 { kOff = 0; kAuto = 1; kCool = 3; @@ -3570,15 +4298,23 @@ server cluster Thermostat = 513 { kSleep = 9; } - bitmap DayOfWeek : bitmap8 { - kSunday = 0x1; - kMonday = 0x2; - kTuesday = 0x4; - kWednesday = 0x8; - kThursday = 0x10; - kFriday = 0x20; - kSaturday = 0x40; - kAway = 0x80; + enum TemperatureSetpointHoldEnum : enum8 { + kSetpointHoldOff = 0; + kSetpointHoldOn = 1; + } + + enum ThermostatRunningModeEnum : enum8 { + kOff = 0; + kCool = 3; + kHeat = 4; + } + + bitmap ACErrorCodeBitmap : bitmap32 { + kCompressorFail = 0x1; + kRoomSensorFail = 0x2; + kOutdoorSensorFail = 0x4; + kCoilSensorFail = 0x8; + kFanFail = 0x10; } bitmap Feature : bitmap32 { @@ -3591,31 +4327,106 @@ server cluster Thermostat = 513 { kLocalTemperatureNotExposed = 0x40; } - bitmap ModeForSequence : bitmap8 { + bitmap HVACSystemTypeBitmap : bitmap8 { + kCoolingStage = 0x3; + kHeatingStage = 0xC; + kHeatingIsHeatPump = 0x10; + kHeatingUsesFuel = 0x20; + } + + bitmap ProgrammingOperationModeBitmap : bitmap8 { + kScheduleActive = 0x1; + kAutoRecovery = 0x2; + kEconomy = 0x4; + } + + bitmap RelayStateBitmap : bitmap16 { + kHeat = 0x1; + kCool = 0x2; + kFan = 0x4; + kHeatStage2 = 0x8; + kCoolStage2 = 0x10; + kFanStage2 = 0x20; + kFanStage3 = 0x40; + } + + bitmap RemoteSensingBitmap : bitmap8 { + kLocalTemperature = 0x1; + kOutdoorTemperature = 0x2; + kOccupancy = 0x4; + } + + bitmap ScheduleDayOfWeekBitmap : bitmap8 { + kSunday = 0x1; + kMonday = 0x2; + kTuesday = 0x4; + kWednesday = 0x8; + kThursday = 0x10; + kFriday = 0x20; + kSaturday = 0x40; + kAway = 0x80; + } + + bitmap ScheduleModeBitmap : bitmap8 { kHeatSetpointPresent = 0x1; kCoolSetpointPresent = 0x2; } - struct ThermostatScheduleTransition { + struct WeeklyScheduleTransitionStruct { int16u transitionTime = 0; - nullable int16s heatSetpoint = 1; - nullable int16s coolSetpoint = 2; - } - - readonly attribute nullable int16s localTemperature = 0; - readonly attribute int16s absMinHeatSetpointLimit = 3; - readonly attribute int16s absMaxHeatSetpointLimit = 4; - readonly attribute int16s absMinCoolSetpointLimit = 5; - readonly attribute int16s absMaxCoolSetpointLimit = 6; - attribute int16s occupiedCoolingSetpoint = 17; - attribute int16s occupiedHeatingSetpoint = 18; - attribute access(write: manage) int16s minHeatSetpointLimit = 21; - attribute access(write: manage) int16s maxHeatSetpointLimit = 22; - attribute access(write: manage) int16s minCoolSetpointLimit = 23; - attribute access(write: manage) int16s maxCoolSetpointLimit = 24; - attribute access(write: manage) int8s minSetpointDeadBand = 25; - attribute access(write: manage) ThermostatControlSequence controlSequenceOfOperation = 27; - attribute access(write: manage) enum8 systemMode = 28; + nullable temperature heatSetpoint = 1; + nullable temperature coolSetpoint = 2; + } + + readonly attribute nullable temperature localTemperature = 0; + readonly attribute optional nullable temperature outdoorTemperature = 1; + readonly attribute optional bitmap8 occupancy = 2; + readonly attribute optional temperature absMinHeatSetpointLimit = 3; + readonly attribute optional temperature absMaxHeatSetpointLimit = 4; + readonly attribute optional temperature absMinCoolSetpointLimit = 5; + readonly attribute optional temperature absMaxCoolSetpointLimit = 6; + readonly attribute optional int8u PICoolingDemand = 7; + readonly attribute optional int8u PIHeatingDemand = 8; + attribute access(write: manage) optional bitmap8 HVACSystemTypeConfiguration = 9; + attribute access(write: manage) optional int8s localTemperatureCalibration = 16; + attribute optional int16s occupiedCoolingSetpoint = 17; + attribute optional int16s occupiedHeatingSetpoint = 18; + attribute optional int16s unoccupiedCoolingSetpoint = 19; + attribute optional int16s unoccupiedHeatingSetpoint = 20; + attribute access(write: manage) optional int16s minHeatSetpointLimit = 21; + attribute access(write: manage) optional int16s maxHeatSetpointLimit = 22; + attribute access(write: manage) optional int16s minCoolSetpointLimit = 23; + attribute access(write: manage) optional int16s maxCoolSetpointLimit = 24; + attribute access(write: manage) optional int8s minSetpointDeadBand = 25; + attribute access(write: manage) optional RemoteSensingBitmap remoteSensing = 26; + attribute access(write: manage) ControlSequenceOfOperationEnum controlSequenceOfOperation = 27; + attribute access(write: manage) SystemModeEnum systemMode = 28; + readonly attribute optional ThermostatRunningModeEnum thermostatRunningMode = 30; + readonly attribute optional StartOfWeekEnum startOfWeek = 32; + readonly attribute optional int8u numberOfWeeklyTransitions = 33; + readonly attribute optional int8u numberOfDailyTransitions = 34; + attribute access(write: manage) optional TemperatureSetpointHoldEnum temperatureSetpointHold = 35; + attribute access(write: manage) optional nullable int16u temperatureSetpointHoldDuration = 36; + attribute access(write: manage) optional ProgrammingOperationModeBitmap thermostatProgrammingOperationMode = 37; + readonly attribute optional RelayStateBitmap thermostatRunningState = 41; + readonly attribute optional SetpointChangeSourceEnum setpointChangeSource = 48; + readonly attribute optional nullable int16s setpointChangeAmount = 49; + readonly attribute optional epoch_s setpointChangeSourceTimestamp = 50; + attribute access(write: manage) optional nullable int8u occupiedSetback = 52; + readonly attribute optional nullable int8u occupiedSetbackMin = 53; + readonly attribute optional nullable int8u occupiedSetbackMax = 54; + attribute access(write: manage) optional nullable int8u unoccupiedSetback = 55; + readonly attribute optional nullable int8u unoccupiedSetbackMin = 56; + readonly attribute optional nullable int8u unoccupiedSetbackMax = 57; + attribute access(write: manage) optional int8u emergencyHeatDelta = 58; + attribute access(write: manage) optional ACTypeEnum ACType = 64; + attribute access(write: manage) optional int16u ACCapacity = 65; + attribute access(write: manage) optional ACRefrigerantTypeEnum ACRefrigerantType = 66; + attribute access(write: manage) optional ACCompressorTypeEnum ACCompressorType = 67; + attribute access(write: manage) optional ACErrorCodeBitmap ACErrorCode = 68; + attribute access(write: manage) optional ACLouverPositionEnum ACLouverPosition = 69; + readonly attribute optional nullable temperature ACCoilTemperature = 70; + attribute access(write: manage) optional ACCapacityFormatEnum ACCapacityformat = 71; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3624,15 +4435,43 @@ server cluster Thermostat = 513 { readonly attribute int16u clusterRevision = 65533; request struct SetpointRaiseLowerRequest { - SetpointAdjustMode mode = 0; + SetpointRaiseLowerModeEnum mode = 0; int8s amount = 1; } + response struct GetWeeklyScheduleResponse = 0 { + int8u numberOfTransitionsForSequence = 0; + ScheduleDayOfWeekBitmap dayOfWeekForSequence = 1; + ScheduleModeBitmap modeForSequence = 2; + WeeklyScheduleTransitionStruct transitions[] = 3; + } + + request struct SetWeeklyScheduleRequest { + int8u numberOfTransitionsForSequence = 0; + ScheduleDayOfWeekBitmap dayOfWeekForSequence = 1; + ScheduleModeBitmap modeForSequence = 2; + WeeklyScheduleTransitionStruct transitions[] = 3; + } + + request struct GetWeeklyScheduleRequest { + ScheduleDayOfWeekBitmap daysToReturn = 0; + ScheduleModeBitmap modeToReturn = 1; + } + + /** Command description for SetpointRaiseLower */ command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0; + /** Command description for SetWeeklySchedule */ + command access(invoke: manage) SetWeeklySchedule(SetWeeklyScheduleRequest): DefaultSuccess = 1; + /** Command description for GetWeeklySchedule */ + command GetWeeklySchedule(GetWeeklyScheduleRequest): GetWeeklyScheduleResponse = 2; + /** The Clear Weekly Schedule command is used to clear the weekly schedule. */ + command access(invoke: manage) ClearWeeklySchedule(): DefaultSuccess = 3; } /** An interface for controlling a fan in a heating/cooling system. */ -provisional server cluster FanControl = 514 { +provisional cluster FanControl = 514 { + revision 4; + enum AirflowDirectionEnum : enum8 { kForward = 0; kReverse = 1; @@ -3686,14 +4525,14 @@ provisional server cluster FanControl = 514 { readonly attribute FanModeSequenceEnum fanModeSequence = 1; attribute nullable percent percentSetting = 2; readonly attribute percent percentCurrent = 3; - readonly attribute int8u speedMax = 4; - attribute nullable int8u speedSetting = 5; - readonly attribute int8u speedCurrent = 6; - readonly attribute RockBitmap rockSupport = 7; - attribute RockBitmap rockSetting = 8; - readonly attribute WindBitmap windSupport = 9; - attribute WindBitmap windSetting = 10; - attribute AirflowDirectionEnum airflowDirection = 11; + readonly attribute optional int8u speedMax = 4; + attribute optional nullable int8u speedSetting = 5; + readonly attribute optional int8u speedCurrent = 6; + readonly attribute optional RockBitmap rockSupport = 7; + attribute optional RockBitmap rockSetting = 8; + readonly attribute optional WindBitmap windSupport = 9; + attribute optional WindBitmap windSetting = 10; + attribute optional AirflowDirectionEnum airflowDirection = 11; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3707,11 +4546,14 @@ provisional server cluster FanControl = 514 { optional boolean lowestOff = 2; } + /** The Step command speeds up or slows down the fan, in steps. */ command Step(StepRequest): DefaultSuccess = 0; } /** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */ -server cluster ThermostatUserInterfaceConfiguration = 516 { +cluster ThermostatUserInterfaceConfiguration = 516 { + revision 2; + enum KeypadLockoutEnum : enum8 { kNoLockout = 0; kLockout1 = 1; @@ -3733,7 +4575,7 @@ server cluster ThermostatUserInterfaceConfiguration = 516 { attribute TemperatureDisplayModeEnum temperatureDisplayMode = 0; attribute access(write: manage) KeypadLockoutEnum keypadLockout = 1; - attribute access(write: manage) ScheduleProgrammingVisibilityEnum scheduleProgrammingVisibility = 2; + attribute access(write: manage) optional ScheduleProgrammingVisibilityEnum scheduleProgrammingVisibility = 2; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3743,7 +4585,9 @@ server cluster ThermostatUserInterfaceConfiguration = 516 { } /** Attributes and commands for controlling the color properties of a color-capable light. */ -server cluster ColorControl = 768 { +cluster ColorControl = 768 { + revision 6; + enum ColorLoopAction : enum8 { kDeactivate = 0; kActivateFromColorLoopStartEnhancedHue = 1; @@ -3813,58 +4657,58 @@ server cluster ColorControl = 768 { kColorTemperature = 0x10; } - readonly attribute int8u currentHue = 0; - readonly attribute int8u currentSaturation = 1; - readonly attribute int16u remainingTime = 2; - readonly attribute int16u currentX = 3; - readonly attribute int16u currentY = 4; - readonly attribute enum8 driftCompensation = 5; - readonly attribute char_string<254> compensationText = 6; - readonly attribute int16u colorTemperatureMireds = 7; + readonly attribute optional int8u currentHue = 0; + readonly attribute optional int8u currentSaturation = 1; + readonly attribute optional int16u remainingTime = 2; + readonly attribute optional int16u currentX = 3; + readonly attribute optional int16u currentY = 4; + readonly attribute optional enum8 driftCompensation = 5; + readonly attribute optional char_string<254> compensationText = 6; + readonly attribute optional int16u colorTemperatureMireds = 7; readonly attribute enum8 colorMode = 8; attribute bitmap8 options = 15; readonly attribute nullable int8u numberOfPrimaries = 16; - readonly attribute int16u primary1X = 17; - readonly attribute int16u primary1Y = 18; - readonly attribute nullable int8u primary1Intensity = 19; - readonly attribute int16u primary2X = 21; - readonly attribute int16u primary2Y = 22; - readonly attribute nullable int8u primary2Intensity = 23; - readonly attribute int16u primary3X = 25; - readonly attribute int16u primary3Y = 26; - readonly attribute nullable int8u primary3Intensity = 27; - readonly attribute int16u primary4X = 32; - readonly attribute int16u primary4Y = 33; - readonly attribute nullable int8u primary4Intensity = 34; - readonly attribute int16u primary5X = 36; - readonly attribute int16u primary5Y = 37; - readonly attribute nullable int8u primary5Intensity = 38; - readonly attribute int16u primary6X = 40; - readonly attribute int16u primary6Y = 41; - readonly attribute nullable int8u primary6Intensity = 42; - attribute access(write: manage) int16u whitePointX = 48; - attribute access(write: manage) int16u whitePointY = 49; - attribute access(write: manage) int16u colorPointRX = 50; - attribute access(write: manage) int16u colorPointRY = 51; - attribute access(write: manage) nullable int8u colorPointRIntensity = 52; - attribute access(write: manage) int16u colorPointGX = 54; - attribute access(write: manage) int16u colorPointGY = 55; - attribute access(write: manage) nullable int8u colorPointGIntensity = 56; - attribute access(write: manage) int16u colorPointBX = 58; - attribute access(write: manage) int16u colorPointBY = 59; - attribute access(write: manage) nullable int8u colorPointBIntensity = 60; - readonly attribute int16u enhancedCurrentHue = 16384; + readonly attribute optional int16u primary1X = 17; + readonly attribute optional int16u primary1Y = 18; + readonly attribute optional nullable int8u primary1Intensity = 19; + readonly attribute optional int16u primary2X = 21; + readonly attribute optional int16u primary2Y = 22; + readonly attribute optional nullable int8u primary2Intensity = 23; + readonly attribute optional int16u primary3X = 25; + readonly attribute optional int16u primary3Y = 26; + readonly attribute optional nullable int8u primary3Intensity = 27; + readonly attribute optional int16u primary4X = 32; + readonly attribute optional int16u primary4Y = 33; + readonly attribute optional nullable int8u primary4Intensity = 34; + readonly attribute optional int16u primary5X = 36; + readonly attribute optional int16u primary5Y = 37; + readonly attribute optional nullable int8u primary5Intensity = 38; + readonly attribute optional int16u primary6X = 40; + readonly attribute optional int16u primary6Y = 41; + readonly attribute optional nullable int8u primary6Intensity = 42; + attribute access(write: manage) optional int16u whitePointX = 48; + attribute access(write: manage) optional int16u whitePointY = 49; + attribute access(write: manage) optional int16u colorPointRX = 50; + attribute access(write: manage) optional int16u colorPointRY = 51; + attribute access(write: manage) optional nullable int8u colorPointRIntensity = 52; + attribute access(write: manage) optional int16u colorPointGX = 54; + attribute access(write: manage) optional int16u colorPointGY = 55; + attribute access(write: manage) optional nullable int8u colorPointGIntensity = 56; + attribute access(write: manage) optional int16u colorPointBX = 58; + attribute access(write: manage) optional int16u colorPointBY = 59; + attribute access(write: manage) optional nullable int8u colorPointBIntensity = 60; + readonly attribute optional int16u enhancedCurrentHue = 16384; readonly attribute enum8 enhancedColorMode = 16385; - readonly attribute int8u colorLoopActive = 16386; - readonly attribute int8u colorLoopDirection = 16387; - readonly attribute int16u colorLoopTime = 16388; - readonly attribute int16u colorLoopStartEnhancedHue = 16389; - readonly attribute int16u colorLoopStoredEnhancedHue = 16390; + readonly attribute optional int8u colorLoopActive = 16386; + readonly attribute optional int8u colorLoopDirection = 16387; + readonly attribute optional int16u colorLoopTime = 16388; + readonly attribute optional int16u colorLoopStartEnhancedHue = 16389; + readonly attribute optional int16u colorLoopStoredEnhancedHue = 16390; readonly attribute bitmap16 colorCapabilities = 16394; - readonly attribute int16u colorTempPhysicalMinMireds = 16395; - readonly attribute int16u colorTempPhysicalMaxMireds = 16396; - readonly attribute int16u coupleColorTempToLevelMinMireds = 16397; - attribute access(write: manage) nullable int16u startUpColorTemperatureMireds = 16400; + readonly attribute optional int16u colorTempPhysicalMinMireds = 16395; + readonly attribute optional int16u colorTempPhysicalMaxMireds = 16396; + readonly attribute optional int16u coupleColorTempToLevelMinMireds = 16397; + attribute access(write: manage) optional nullable int16u startUpColorTemperatureMireds = 16400; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4020,29 +4864,50 @@ server cluster ColorControl = 768 { bitmap8 optionsOverride = 6; } + /** Move to specified hue. */ command MoveToHue(MoveToHueRequest): DefaultSuccess = 0; + /** Move hue up or down at specified rate. */ command MoveHue(MoveHueRequest): DefaultSuccess = 1; + /** Step hue up or down by specified size at specified rate. */ command StepHue(StepHueRequest): DefaultSuccess = 2; + /** Move to specified saturation. */ command MoveToSaturation(MoveToSaturationRequest): DefaultSuccess = 3; + /** Move saturation up or down at specified rate. */ command MoveSaturation(MoveSaturationRequest): DefaultSuccess = 4; + /** Step saturation up or down by specified size at specified rate. */ command StepSaturation(StepSaturationRequest): DefaultSuccess = 5; + /** Move to hue and saturation. */ command MoveToHueAndSaturation(MoveToHueAndSaturationRequest): DefaultSuccess = 6; + /** Move to specified color. */ command MoveToColor(MoveToColorRequest): DefaultSuccess = 7; + /** Moves the color. */ command MoveColor(MoveColorRequest): DefaultSuccess = 8; + /** Steps the lighting to a specific color. */ command StepColor(StepColorRequest): DefaultSuccess = 9; + /** Move to a specific color temperature. */ command MoveToColorTemperature(MoveToColorTemperatureRequest): DefaultSuccess = 10; + /** Command description for EnhancedMoveToHue */ command EnhancedMoveToHue(EnhancedMoveToHueRequest): DefaultSuccess = 64; + /** Command description for EnhancedMoveHue */ command EnhancedMoveHue(EnhancedMoveHueRequest): DefaultSuccess = 65; + /** Command description for EnhancedStepHue */ command EnhancedStepHue(EnhancedStepHueRequest): DefaultSuccess = 66; + /** Command description for EnhancedMoveToHueAndSaturation */ command EnhancedMoveToHueAndSaturation(EnhancedMoveToHueAndSaturationRequest): DefaultSuccess = 67; + /** Command description for ColorLoopSet */ command ColorLoopSet(ColorLoopSetRequest): DefaultSuccess = 68; + /** Command description for StopMoveStep */ command StopMoveStep(StopMoveStepRequest): DefaultSuccess = 71; + /** Command description for MoveColorTemperature */ command MoveColorTemperature(MoveColorTemperatureRequest): DefaultSuccess = 75; + /** Command description for StepColorTemperature */ command StepColorTemperature(StepColorTemperatureRequest): DefaultSuccess = 76; } /** Attributes and commands for configuring a lighting ballast. */ -provisional server cluster BallastConfiguration = 769 { +provisional cluster BallastConfiguration = 769 { + revision 4; + bitmap BallastStatusBitmap : bitmap8 { kBallastNonOperational = 0x1; kLampFailure = 0x2; @@ -4054,18 +4919,18 @@ provisional server cluster BallastConfiguration = 769 { readonly attribute int8u physicalMinLevel = 0; readonly attribute int8u physicalMaxLevel = 1; - readonly attribute BallastStatusBitmap ballastStatus = 2; + readonly attribute optional BallastStatusBitmap ballastStatus = 2; attribute access(write: manage) int8u minLevel = 16; attribute access(write: manage) int8u maxLevel = 17; - attribute access(write: manage) nullable int8u intrinsicBallastFactor = 20; - attribute access(write: manage) nullable int8u ballastFactorAdjustment = 21; + attribute access(write: manage) optional nullable int8u intrinsicBallastFactor = 20; + attribute access(write: manage) optional nullable int8u ballastFactorAdjustment = 21; readonly attribute int8u lampQuantity = 32; - attribute access(write: manage) char_string<16> lampType = 48; - attribute access(write: manage) char_string<16> lampManufacturer = 49; - attribute access(write: manage) nullable int24u lampRatedHours = 50; - attribute access(write: manage) nullable int24u lampBurnHours = 51; - attribute access(write: manage) LampAlarmModeBitmap lampAlarmMode = 52; - attribute access(write: manage) nullable int24u lampBurnHoursTripPoint = 53; + attribute access(write: manage) optional char_string<16> lampType = 48; + attribute access(write: manage) optional char_string<16> lampManufacturer = 49; + attribute access(write: manage) optional nullable int24u lampRatedHours = 50; + attribute access(write: manage) optional nullable int24u lampBurnHours = 51; + attribute access(write: manage) optional LampAlarmModeBitmap lampAlarmMode = 52; + attribute access(write: manage) optional nullable int24u lampBurnHoursTripPoint = 53; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4075,7 +4940,9 @@ provisional server cluster BallastConfiguration = 769 { } /** Attributes and commands for configuring the measurement of illuminance, and reporting illuminance measurements. */ -server cluster IlluminanceMeasurement = 1024 { +cluster IlluminanceMeasurement = 1024 { + revision 3; + enum LightSensorTypeEnum : enum8 { kPhotodiode = 0; kCMOS = 1; @@ -4084,8 +4951,8 @@ server cluster IlluminanceMeasurement = 1024 { readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; - readonly attribute int16u tolerance = 3; - readonly attribute nullable LightSensorTypeEnum lightSensorType = 4; + readonly attribute optional int16u tolerance = 3; + readonly attribute optional nullable LightSensorTypeEnum lightSensorType = 4; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4095,11 +4962,13 @@ server cluster IlluminanceMeasurement = 1024 { } /** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ -server cluster TemperatureMeasurement = 1026 { +cluster TemperatureMeasurement = 1026 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable temperature measuredValue = 0; readonly attribute nullable temperature minMeasuredValue = 1; readonly attribute nullable temperature maxMeasuredValue = 2; - readonly attribute int16u tolerance = 3; + readonly attribute optional int16u tolerance = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4109,7 +4978,9 @@ server cluster TemperatureMeasurement = 1026 { } /** Attributes and commands for configuring the measurement of pressure, and reporting pressure measurements. */ -server cluster PressureMeasurement = 1027 { +cluster PressureMeasurement = 1027 { + revision 3; + bitmap Feature : bitmap32 { kExtended = 0x1; } @@ -4117,6 +4988,12 @@ server cluster PressureMeasurement = 1027 { readonly attribute nullable int16s measuredValue = 0; readonly attribute nullable int16s minMeasuredValue = 1; readonly attribute nullable int16s maxMeasuredValue = 2; + readonly attribute optional int16u tolerance = 3; + readonly attribute optional nullable int16s scaledValue = 16; + readonly attribute optional nullable int16s minScaledValue = 17; + readonly attribute optional nullable int16s maxScaledValue = 18; + readonly attribute optional int16u scaledTolerance = 19; + readonly attribute optional int8s scale = 20; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4126,11 +5003,13 @@ server cluster PressureMeasurement = 1027 { } /** Attributes and commands for configuring the measurement of flow, and reporting flow measurements. */ -server cluster FlowMeasurement = 1028 { +cluster FlowMeasurement = 1028 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; - readonly attribute int16u tolerance = 3; + readonly attribute optional int16u tolerance = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4140,11 +5019,13 @@ server cluster FlowMeasurement = 1028 { } /** Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements. */ -server cluster RelativeHumidityMeasurement = 1029 { +cluster RelativeHumidityMeasurement = 1029 { + revision 3; + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; - readonly attribute int16u tolerance = 3; + readonly attribute optional int16u tolerance = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4154,7 +5035,9 @@ server cluster RelativeHumidityMeasurement = 1029 { } /** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ -server cluster OccupancySensing = 1030 { +cluster OccupancySensing = 1030 { + revision 3; + enum OccupancySensorTypeEnum : enum8 { kPIR = 0; kUltrasonic = 1; @@ -4175,6 +5058,15 @@ server cluster OccupancySensing = 1030 { readonly attribute OccupancyBitmap occupancy = 0; readonly attribute OccupancySensorTypeEnum occupancySensorType = 1; readonly attribute OccupancySensorTypeBitmap occupancySensorTypeBitmap = 2; + attribute access(write: manage) optional int16u PIROccupiedToUnoccupiedDelay = 16; + attribute access(write: manage) optional int16u PIRUnoccupiedToOccupiedDelay = 17; + attribute access(write: manage) optional int8u PIRUnoccupiedToOccupiedThreshold = 18; + attribute access(write: manage) optional int16u ultrasonicOccupiedToUnoccupiedDelay = 32; + attribute access(write: manage) optional int16u ultrasonicUnoccupiedToOccupiedDelay = 33; + attribute access(write: manage) optional int8u ultrasonicUnoccupiedToOccupiedThreshold = 34; + attribute access(write: manage) optional int16u physicalContactOccupiedToUnoccupiedDelay = 48; + attribute access(write: manage) optional int16u physicalContactUnoccupiedToOccupiedDelay = 49; + attribute access(write: manage) optional int8u physicalContactUnoccupiedToOccupiedThreshold = 50; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4184,7 +5076,9 @@ server cluster OccupancySensing = 1030 { } /** Attributes for reporting carbon monoxide concentration measurements */ -server cluster CarbonMonoxideConcentrationMeasurement = 1036 { +cluster CarbonMonoxideConcentrationMeasurement = 1036 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -4219,17 +5113,17 @@ server cluster CarbonMonoxideConcentrationMeasurement = 1036 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; - readonly attribute nullable single peakMeasuredValue = 3; - readonly attribute elapsed_s peakMeasuredValueWindow = 4; - readonly attribute nullable single averageMeasuredValue = 5; - readonly attribute elapsed_s averageMeasuredValueWindow = 6; - readonly attribute single uncertainty = 7; - readonly attribute MeasurementUnitEnum measurementUnit = 8; - readonly attribute MeasurementMediumEnum measurementMedium = 9; - readonly attribute LevelValueEnum levelValue = 10; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4239,7 +5133,9 @@ server cluster CarbonMonoxideConcentrationMeasurement = 1036 { } /** Attributes for reporting carbon dioxide concentration measurements */ -server cluster CarbonDioxideConcentrationMeasurement = 1037 { +cluster CarbonDioxideConcentrationMeasurement = 1037 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -4274,17 +5170,17 @@ server cluster CarbonDioxideConcentrationMeasurement = 1037 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; - readonly attribute nullable single peakMeasuredValue = 3; - readonly attribute elapsed_s peakMeasuredValueWindow = 4; - readonly attribute nullable single averageMeasuredValue = 5; - readonly attribute elapsed_s averageMeasuredValueWindow = 6; - readonly attribute single uncertainty = 7; - readonly attribute MeasurementUnitEnum measurementUnit = 8; - readonly attribute MeasurementMediumEnum measurementMedium = 9; - readonly attribute LevelValueEnum levelValue = 10; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4294,7 +5190,9 @@ server cluster CarbonDioxideConcentrationMeasurement = 1037 { } /** Attributes for reporting nitrogen dioxide concentration measurements */ -server cluster NitrogenDioxideConcentrationMeasurement = 1043 { +cluster NitrogenDioxideConcentrationMeasurement = 1043 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -4329,17 +5227,17 @@ server cluster NitrogenDioxideConcentrationMeasurement = 1043 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; - readonly attribute nullable single peakMeasuredValue = 3; - readonly attribute elapsed_s peakMeasuredValueWindow = 4; - readonly attribute nullable single averageMeasuredValue = 5; - readonly attribute elapsed_s averageMeasuredValueWindow = 6; - readonly attribute single uncertainty = 7; - readonly attribute MeasurementUnitEnum measurementUnit = 8; - readonly attribute MeasurementMediumEnum measurementMedium = 9; - readonly attribute LevelValueEnum levelValue = 10; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4349,7 +5247,9 @@ server cluster NitrogenDioxideConcentrationMeasurement = 1043 { } /** Attributes for reporting ozone concentration measurements */ -server cluster OzoneConcentrationMeasurement = 1045 { +cluster OzoneConcentrationMeasurement = 1045 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -4384,17 +5284,17 @@ server cluster OzoneConcentrationMeasurement = 1045 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; - readonly attribute nullable single peakMeasuredValue = 3; - readonly attribute elapsed_s peakMeasuredValueWindow = 4; - readonly attribute nullable single averageMeasuredValue = 5; - readonly attribute elapsed_s averageMeasuredValueWindow = 6; - readonly attribute single uncertainty = 7; - readonly attribute MeasurementUnitEnum measurementUnit = 8; - readonly attribute MeasurementMediumEnum measurementMedium = 9; - readonly attribute LevelValueEnum levelValue = 10; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4404,7 +5304,9 @@ server cluster OzoneConcentrationMeasurement = 1045 { } /** Attributes for reporting PM2.5 concentration measurements */ -server cluster Pm25ConcentrationMeasurement = 1066 { +cluster Pm25ConcentrationMeasurement = 1066 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -4439,17 +5341,17 @@ server cluster Pm25ConcentrationMeasurement = 1066 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; - readonly attribute nullable single peakMeasuredValue = 3; - readonly attribute elapsed_s peakMeasuredValueWindow = 4; - readonly attribute nullable single averageMeasuredValue = 5; - readonly attribute elapsed_s averageMeasuredValueWindow = 6; - readonly attribute single uncertainty = 7; - readonly attribute MeasurementUnitEnum measurementUnit = 8; - readonly attribute MeasurementMediumEnum measurementMedium = 9; - readonly attribute LevelValueEnum levelValue = 10; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4459,7 +5361,9 @@ server cluster Pm25ConcentrationMeasurement = 1066 { } /** Attributes for reporting formaldehyde concentration measurements */ -server cluster FormaldehydeConcentrationMeasurement = 1067 { +cluster FormaldehydeConcentrationMeasurement = 1067 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -4494,17 +5398,17 @@ server cluster FormaldehydeConcentrationMeasurement = 1067 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; - readonly attribute nullable single peakMeasuredValue = 3; - readonly attribute elapsed_s peakMeasuredValueWindow = 4; - readonly attribute nullable single averageMeasuredValue = 5; - readonly attribute elapsed_s averageMeasuredValueWindow = 6; - readonly attribute single uncertainty = 7; - readonly attribute MeasurementUnitEnum measurementUnit = 8; - readonly attribute MeasurementMediumEnum measurementMedium = 9; - readonly attribute LevelValueEnum levelValue = 10; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4514,7 +5418,9 @@ server cluster FormaldehydeConcentrationMeasurement = 1067 { } /** Attributes for reporting PM1 concentration measurements */ -server cluster Pm1ConcentrationMeasurement = 1068 { +cluster Pm1ConcentrationMeasurement = 1068 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -4549,17 +5455,17 @@ server cluster Pm1ConcentrationMeasurement = 1068 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; - readonly attribute nullable single peakMeasuredValue = 3; - readonly attribute elapsed_s peakMeasuredValueWindow = 4; - readonly attribute nullable single averageMeasuredValue = 5; - readonly attribute elapsed_s averageMeasuredValueWindow = 6; - readonly attribute single uncertainty = 7; - readonly attribute MeasurementUnitEnum measurementUnit = 8; - readonly attribute MeasurementMediumEnum measurementMedium = 9; - readonly attribute LevelValueEnum levelValue = 10; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4569,7 +5475,9 @@ server cluster Pm1ConcentrationMeasurement = 1068 { } /** Attributes for reporting PM10 concentration measurements */ -server cluster Pm10ConcentrationMeasurement = 1069 { +cluster Pm10ConcentrationMeasurement = 1069 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -4604,17 +5512,17 @@ server cluster Pm10ConcentrationMeasurement = 1069 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; - readonly attribute nullable single peakMeasuredValue = 3; - readonly attribute elapsed_s peakMeasuredValueWindow = 4; - readonly attribute nullable single averageMeasuredValue = 5; - readonly attribute elapsed_s averageMeasuredValueWindow = 6; - readonly attribute single uncertainty = 7; - readonly attribute MeasurementUnitEnum measurementUnit = 8; - readonly attribute MeasurementMediumEnum measurementMedium = 9; - readonly attribute LevelValueEnum levelValue = 10; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4624,7 +5532,9 @@ server cluster Pm10ConcentrationMeasurement = 1069 { } /** Attributes for reporting total volatile organic compounds concentration measurements */ -server cluster TotalVolatileOrganicCompoundsConcentrationMeasurement = 1070 { +cluster TotalVolatileOrganicCompoundsConcentrationMeasurement = 1070 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -4659,17 +5569,17 @@ server cluster TotalVolatileOrganicCompoundsConcentrationMeasurement = 1070 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; - readonly attribute nullable single peakMeasuredValue = 3; - readonly attribute elapsed_s peakMeasuredValueWindow = 4; - readonly attribute nullable single averageMeasuredValue = 5; - readonly attribute elapsed_s averageMeasuredValueWindow = 6; - readonly attribute single uncertainty = 7; - readonly attribute MeasurementUnitEnum measurementUnit = 8; - readonly attribute MeasurementMediumEnum measurementMedium = 9; - readonly attribute LevelValueEnum levelValue = 10; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4679,7 +5589,9 @@ server cluster TotalVolatileOrganicCompoundsConcentrationMeasurement = 1070 { } /** Attributes for reporting radon concentration measurements */ -server cluster RadonConcentrationMeasurement = 1071 { +cluster RadonConcentrationMeasurement = 1071 { + revision 3; + enum LevelValueEnum : enum8 { kUnknown = 0; kLow = 1; @@ -4714,17 +5626,17 @@ server cluster RadonConcentrationMeasurement = 1071 { kAverageMeasurement = 0x20; } - readonly attribute nullable single measuredValue = 0; - readonly attribute nullable single minMeasuredValue = 1; - readonly attribute nullable single maxMeasuredValue = 2; - readonly attribute nullable single peakMeasuredValue = 3; - readonly attribute elapsed_s peakMeasuredValueWindow = 4; - readonly attribute nullable single averageMeasuredValue = 5; - readonly attribute elapsed_s averageMeasuredValueWindow = 6; - readonly attribute single uncertainty = 7; - readonly attribute MeasurementUnitEnum measurementUnit = 8; - readonly attribute MeasurementMediumEnum measurementMedium = 9; - readonly attribute LevelValueEnum levelValue = 10; + readonly attribute optional nullable single measuredValue = 0; + readonly attribute optional nullable single minMeasuredValue = 1; + readonly attribute optional nullable single maxMeasuredValue = 2; + readonly attribute optional nullable single peakMeasuredValue = 3; + readonly attribute optional elapsed_s peakMeasuredValueWindow = 4; + readonly attribute optional nullable single averageMeasuredValue = 5; + readonly attribute optional elapsed_s averageMeasuredValueWindow = 6; + readonly attribute optional single uncertainty = 7; + readonly attribute optional MeasurementUnitEnum measurementUnit = 8; + readonly attribute optional MeasurementMediumEnum measurementMedium = 9; + readonly attribute optional LevelValueEnum levelValue = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4734,8 +5646,11 @@ server cluster RadonConcentrationMeasurement = 1071 { } /** This cluster provides an interface for managing low power mode on a device that supports the Wake On LAN protocol. */ -server cluster WakeOnLan = 1283 { - readonly attribute char_string<12> MACAddress = 0; +cluster WakeOnLan = 1283 { + revision 1; // NOTE: Default/not specifically set + + readonly attribute optional char_string<12> MACAddress = 0; + readonly attribute optional octet_string<16> linkLocalAddress = 1; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4745,7 +5660,9 @@ server cluster WakeOnLan = 1283 { } /** This cluster provides an interface for managing low power mode on a device. */ -server cluster LowPower = 1288 { +cluster LowPower = 1288 { + revision 1; // NOTE: Default/not specifically set + readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4753,32 +5670,181 @@ server cluster LowPower = 1288 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + /** This command shall put the device into low power mode. */ command Sleep(): DefaultSuccess = 0; } /** Attributes related to the electrical properties of a device. This cluster is used by power outlets and other devices that need to provide instantaneous data as opposed to metrology data which should be retrieved from the metering cluster.. */ -server cluster ElectricalMeasurement = 2820 { - readonly attribute bitmap32 measurementType = 0; - readonly attribute int32s totalActivePower = 772; - readonly attribute int16u rmsVoltage = 1285; - readonly attribute int16u rmsVoltageMin = 1286; - readonly attribute int16u rmsVoltageMax = 1287; - readonly attribute int16u rmsCurrent = 1288; - readonly attribute int16u rmsCurrentMin = 1289; - readonly attribute int16u rmsCurrentMax = 1290; - readonly attribute int16s activePower = 1291; - readonly attribute int16s activePowerMin = 1292; - readonly attribute int16s activePowerMax = 1293; +deprecated cluster ElectricalMeasurement = 2820 { + revision 3; + + readonly attribute optional bitmap32 measurementType = 0; + readonly attribute optional int16s dcVoltage = 256; + readonly attribute optional int16s dcVoltageMin = 257; + readonly attribute optional int16s dcVoltageMax = 258; + readonly attribute optional int16s dcCurrent = 259; + readonly attribute optional int16s dcCurrentMin = 260; + readonly attribute optional int16s dcCurrentMax = 261; + readonly attribute optional int16s dcPower = 262; + readonly attribute optional int16s dcPowerMin = 263; + readonly attribute optional int16s dcPowerMax = 264; + readonly attribute optional int16u dcVoltageMultiplier = 512; + readonly attribute optional int16u dcVoltageDivisor = 513; + readonly attribute optional int16u dcCurrentMultiplier = 514; + readonly attribute optional int16u dcCurrentDivisor = 515; + readonly attribute optional int16u dcPowerMultiplier = 516; + readonly attribute optional int16u dcPowerDivisor = 517; + readonly attribute optional int16u acFrequency = 768; + readonly attribute optional int16u acFrequencyMin = 769; + readonly attribute optional int16u acFrequencyMax = 770; + readonly attribute optional int16u neutralCurrent = 771; + readonly attribute optional int32s totalActivePower = 772; + readonly attribute optional int32s totalReactivePower = 773; + readonly attribute optional int32u totalApparentPower = 774; + readonly attribute optional int16s measured1stHarmonicCurrent = 775; + readonly attribute optional int16s measured3rdHarmonicCurrent = 776; + readonly attribute optional int16s measured5thHarmonicCurrent = 777; + readonly attribute optional int16s measured7thHarmonicCurrent = 778; + readonly attribute optional int16s measured9thHarmonicCurrent = 779; + readonly attribute optional int16s measured11thHarmonicCurrent = 780; + readonly attribute optional int16s measuredPhase1stHarmonicCurrent = 781; + readonly attribute optional int16s measuredPhase3rdHarmonicCurrent = 782; + readonly attribute optional int16s measuredPhase5thHarmonicCurrent = 783; + readonly attribute optional int16s measuredPhase7thHarmonicCurrent = 784; + readonly attribute optional int16s measuredPhase9thHarmonicCurrent = 785; + readonly attribute optional int16s measuredPhase11thHarmonicCurrent = 786; + readonly attribute optional int16u acFrequencyMultiplier = 1024; + readonly attribute optional int16u acFrequencyDivisor = 1025; + readonly attribute optional int32u powerMultiplier = 1026; + readonly attribute optional int32u powerDivisor = 1027; + readonly attribute optional int8s harmonicCurrentMultiplier = 1028; + readonly attribute optional int8s phaseHarmonicCurrentMultiplier = 1029; + readonly attribute optional int16s instantaneousVoltage = 1280; + readonly attribute optional int16u instantaneousLineCurrent = 1281; + readonly attribute optional int16s instantaneousActiveCurrent = 1282; + readonly attribute optional int16s instantaneousReactiveCurrent = 1283; + readonly attribute optional int16s instantaneousPower = 1284; + readonly attribute optional int16u rmsVoltage = 1285; + readonly attribute optional int16u rmsVoltageMin = 1286; + readonly attribute optional int16u rmsVoltageMax = 1287; + readonly attribute optional int16u rmsCurrent = 1288; + readonly attribute optional int16u rmsCurrentMin = 1289; + readonly attribute optional int16u rmsCurrentMax = 1290; + readonly attribute optional int16s activePower = 1291; + readonly attribute optional int16s activePowerMin = 1292; + readonly attribute optional int16s activePowerMax = 1293; + readonly attribute optional int16s reactivePower = 1294; + readonly attribute optional int16u apparentPower = 1295; + readonly attribute optional int8s powerFactor = 1296; + attribute optional int16u averageRmsVoltageMeasurementPeriod = 1297; + attribute optional int16u averageRmsUnderVoltageCounter = 1299; + attribute optional int16u rmsExtremeOverVoltagePeriod = 1300; + attribute optional int16u rmsExtremeUnderVoltagePeriod = 1301; + attribute optional int16u rmsVoltageSagPeriod = 1302; + attribute optional int16u rmsVoltageSwellPeriod = 1303; + readonly attribute optional int16u acVoltageMultiplier = 1536; + readonly attribute optional int16u acVoltageDivisor = 1537; + readonly attribute optional int16u acCurrentMultiplier = 1538; + readonly attribute optional int16u acCurrentDivisor = 1539; + readonly attribute optional int16u acPowerMultiplier = 1540; + readonly attribute optional int16u acPowerDivisor = 1541; + attribute optional bitmap8 overloadAlarmsMask = 1792; + readonly attribute optional int16s voltageOverload = 1793; + readonly attribute optional int16s currentOverload = 1794; + attribute optional bitmap16 acOverloadAlarmsMask = 2048; + readonly attribute optional int16s acVoltageOverload = 2049; + readonly attribute optional int16s acCurrentOverload = 2050; + readonly attribute optional int16s acActivePowerOverload = 2051; + readonly attribute optional int16s acReactivePowerOverload = 2052; + readonly attribute optional int16s averageRmsOverVoltage = 2053; + readonly attribute optional int16s averageRmsUnderVoltage = 2054; + readonly attribute optional int16s rmsExtremeOverVoltage = 2055; + readonly attribute optional int16s rmsExtremeUnderVoltage = 2056; + readonly attribute optional int16s rmsVoltageSag = 2057; + readonly attribute optional int16s rmsVoltageSwell = 2058; + readonly attribute optional int16u lineCurrentPhaseB = 2305; + readonly attribute optional int16s activeCurrentPhaseB = 2306; + readonly attribute optional int16s reactiveCurrentPhaseB = 2307; + readonly attribute optional int16u rmsVoltagePhaseB = 2309; + readonly attribute optional int16u rmsVoltageMinPhaseB = 2310; + readonly attribute optional int16u rmsVoltageMaxPhaseB = 2311; + readonly attribute optional int16u rmsCurrentPhaseB = 2312; + readonly attribute optional int16u rmsCurrentMinPhaseB = 2313; + readonly attribute optional int16u rmsCurrentMaxPhaseB = 2314; + readonly attribute optional int16s activePowerPhaseB = 2315; + readonly attribute optional int16s activePowerMinPhaseB = 2316; + readonly attribute optional int16s activePowerMaxPhaseB = 2317; + readonly attribute optional int16s reactivePowerPhaseB = 2318; + readonly attribute optional int16u apparentPowerPhaseB = 2319; + readonly attribute optional int8s powerFactorPhaseB = 2320; + readonly attribute optional int16u averageRmsVoltageMeasurementPeriodPhaseB = 2321; + readonly attribute optional int16u averageRmsOverVoltageCounterPhaseB = 2322; + readonly attribute optional int16u averageRmsUnderVoltageCounterPhaseB = 2323; + readonly attribute optional int16u rmsExtremeOverVoltagePeriodPhaseB = 2324; + readonly attribute optional int16u rmsExtremeUnderVoltagePeriodPhaseB = 2325; + readonly attribute optional int16u rmsVoltageSagPeriodPhaseB = 2326; + readonly attribute optional int16u rmsVoltageSwellPeriodPhaseB = 2327; + readonly attribute optional int16u lineCurrentPhaseC = 2561; + readonly attribute optional int16s activeCurrentPhaseC = 2562; + readonly attribute optional int16s reactiveCurrentPhaseC = 2563; + readonly attribute optional int16u rmsVoltagePhaseC = 2565; + readonly attribute optional int16u rmsVoltageMinPhaseC = 2566; + readonly attribute optional int16u rmsVoltageMaxPhaseC = 2567; + readonly attribute optional int16u rmsCurrentPhaseC = 2568; + readonly attribute optional int16u rmsCurrentMinPhaseC = 2569; + readonly attribute optional int16u rmsCurrentMaxPhaseC = 2570; + readonly attribute optional int16s activePowerPhaseC = 2571; + readonly attribute optional int16s activePowerMinPhaseC = 2572; + readonly attribute optional int16s activePowerMaxPhaseC = 2573; + readonly attribute optional int16s reactivePowerPhaseC = 2574; + readonly attribute optional int16u apparentPowerPhaseC = 2575; + readonly attribute optional int8s powerFactorPhaseC = 2576; + readonly attribute optional int16u averageRmsVoltageMeasurementPeriodPhaseC = 2577; + readonly attribute optional int16u averageRmsOverVoltageCounterPhaseC = 2578; + readonly attribute optional int16u averageRmsUnderVoltageCounterPhaseC = 2579; + readonly attribute optional int16u rmsExtremeOverVoltagePeriodPhaseC = 2580; + readonly attribute optional int16u rmsExtremeUnderVoltagePeriodPhaseC = 2581; + readonly attribute optional int16u rmsVoltageSagPeriodPhaseC = 2582; + readonly attribute optional int16u rmsVoltageSwellPeriodPhaseC = 2583; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; readonly attribute attrib_id attributeList[] = 65531; readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + + response struct GetProfileInfoResponseCommand = 0 { + int8u profileCount = 0; + enum8 profileIntervalPeriod = 1; + int8u maxNumberOfIntervals = 2; + int16u listOfAttributes[] = 3; + } + + response struct GetMeasurementProfileResponseCommand = 1 { + int32u startTime = 0; + enum8 status = 1; + enum8 profileIntervalPeriod = 2; + int8u numberOfIntervalsDelivered = 3; + int16u attributeId = 4; + int8u intervals[] = 5; + } + + request struct GetMeasurementProfileCommandRequest { + int16u attributeId = 0; + int32u startTime = 1; + enum8 numberOfIntervals = 2; + } + + /** A function which retrieves the power profiling information from the electrical measurement server. */ + command GetProfileInfoCommand(): DefaultSuccess = 0; + /** A function which retrieves an electricity measurement profile from the electricity measurement server for a specific attribute Id requested. */ + command GetMeasurementProfileCommand(GetMeasurementProfileCommandRequest): DefaultSuccess = 1; } /** The Test Cluster is meant to validate the generated code */ -internal server cluster UnitTesting = 4294048773 { +internal cluster UnitTesting = 4294048773 { + revision 1; // NOTE: Default/not specifically set + enum SimpleEnum : enum8 { kUnspecified = 0; kValueA = 1; @@ -4937,11 +6003,12 @@ internal server cluster UnitTesting = 4294048773 { attribute int8s rangeRestrictedInt8s = 39; attribute int16u rangeRestrictedInt16u = 40; attribute int16s rangeRestrictedInt16s = 41; - attribute LONG_OCTET_STRING listLongOctetString[] = 42; + attribute long_octet_string listLongOctetString[] = 42; attribute TestFabricScoped listFabricScoped[] = 43; timedwrite attribute boolean timedWriteBoolean = 48; attribute boolean generalErrorBoolean = 49; attribute boolean clusterErrorBoolean = 50; + attribute optional boolean unsupported = 255; attribute nullable boolean nullableBoolean = 16384; attribute nullable Bitmap8MaskMap nullableBitmap8 = 16385; attribute nullable Bitmap16MaskMap nullableBitmap16 = 16386; @@ -4975,7 +6042,7 @@ internal server cluster UnitTesting = 4294048773 { attribute nullable int8s nullableRangeRestrictedInt8s = 16423; attribute nullable int16u nullableRangeRestrictedInt16u = 16424; attribute nullable int16s nullableRangeRestrictedInt16s = 16425; - attribute int8u writeOnlyInt8u = 16426; + attribute optional int8u writeOnlyInt8u = 16426; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -4983,31 +6050,128 @@ internal server cluster UnitTesting = 4294048773 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + response struct TestSpecificResponse = 0 { + int8u returnValue = 0; + } + + response struct TestAddArgumentsResponse = 1 { + int8u returnValue = 0; + } + + response struct TestSimpleArgumentResponse = 2 { + boolean returnValue = 0; + } + + response struct TestStructArrayArgumentResponse = 3 { + NestedStructList arg1[] = 0; + SimpleStruct arg2[] = 1; + SimpleEnum arg3[] = 2; + boolean arg4[] = 3; + SimpleEnum arg5 = 4; + boolean arg6 = 5; + } + request struct TestAddArgumentsRequest { int8u arg1 = 0; int8u arg2 = 1; } + response struct TestListInt8UReverseResponse = 4 { + int8u arg1[] = 0; + } + + request struct TestSimpleArgumentRequestRequest { + boolean arg1 = 0; + } + + response struct TestEnumsResponse = 5 { + vendor_id arg1 = 0; + SimpleEnum arg2 = 1; + } + + request struct TestStructArrayArgumentRequestRequest { + NestedStructList arg1[] = 0; + SimpleStruct arg2[] = 1; + SimpleEnum arg3[] = 2; + boolean arg4[] = 3; + SimpleEnum arg5 = 4; + boolean arg6 = 5; + } + + response struct TestNullableOptionalResponse = 6 { + boolean wasPresent = 0; + optional boolean wasNull = 1; + optional int8u value = 2; + optional nullable int8u originalValue = 3; + } + request struct TestStructArgumentRequestRequest { SimpleStruct arg1 = 0; } + response struct TestComplexNullableOptionalResponse = 7 { + boolean nullableIntWasNull = 0; + optional int16u nullableIntValue = 1; + boolean optionalIntWasPresent = 2; + optional int16u optionalIntValue = 3; + boolean nullableOptionalIntWasPresent = 4; + optional boolean nullableOptionalIntWasNull = 5; + optional int16u nullableOptionalIntValue = 6; + boolean nullableStringWasNull = 7; + optional char_string nullableStringValue = 8; + boolean optionalStringWasPresent = 9; + optional char_string optionalStringValue = 10; + boolean nullableOptionalStringWasPresent = 11; + optional boolean nullableOptionalStringWasNull = 12; + optional char_string nullableOptionalStringValue = 13; + boolean nullableStructWasNull = 14; + optional SimpleStruct nullableStructValue = 15; + boolean optionalStructWasPresent = 16; + optional SimpleStruct optionalStructValue = 17; + boolean nullableOptionalStructWasPresent = 18; + optional boolean nullableOptionalStructWasNull = 19; + optional SimpleStruct nullableOptionalStructValue = 20; + boolean nullableListWasNull = 21; + optional SimpleEnum nullableListValue[] = 22; + boolean optionalListWasPresent = 23; + optional SimpleEnum optionalListValue[] = 24; + boolean nullableOptionalListWasPresent = 25; + optional boolean nullableOptionalListWasNull = 26; + optional SimpleEnum nullableOptionalListValue[] = 27; + } + request struct TestNestedStructArgumentRequestRequest { NestedStruct arg1 = 0; } + response struct BooleanResponse = 8 { + boolean value = 0; + } + request struct TestListStructArgumentRequestRequest { SimpleStruct arg1[] = 0; } + response struct SimpleStructResponse = 9 { + SimpleStruct arg1 = 0; + } + request struct TestListInt8UArgumentRequestRequest { int8u arg1[] = 0; } + response struct TestEmitTestEventResponse = 10 { + int64u value = 0; + } + request struct TestNestedStructListArgumentRequestRequest { NestedStructList arg1 = 0; } + response struct TestEmitTestFabricScopedEventResponse = 11 { + int64u value = 0; + } + request struct TestListNestedStructListArgumentRequestRequest { NestedStructList arg1[] = 0; } @@ -5025,6 +6189,21 @@ internal server cluster UnitTesting = 4294048773 { optional nullable int8u arg1 = 0; } + request struct TestComplexNullableOptionalRequestRequest { + nullable int16u nullableInt = 0; + optional int16u optionalInt = 1; + optional nullable int16u nullableOptionalInt = 2; + nullable char_string nullableString = 3; + optional char_string optionalString = 4; + optional nullable char_string nullableOptionalString = 5; + nullable SimpleStruct nullableStruct = 6; + optional SimpleStruct optionalStruct = 7; + optional nullable SimpleStruct nullableOptionalStruct = 8; + nullable SimpleEnum nullableList[] = 9; + optional SimpleEnum optionalList[] = 10; + optional nullable SimpleEnum nullableOptionalList[] = 11; + } + request struct SimpleStructEchoRequestRequest { SimpleStruct arg1 = 0; } @@ -5043,64 +6222,77 @@ internal server cluster UnitTesting = 4294048773 { int8u arg1 = 0; } - response struct TestSpecificResponse = 0 { - int8u returnValue = 0; - } - - response struct TestAddArgumentsResponse = 1 { - int8u returnValue = 0; - } - - response struct TestListInt8UReverseResponse = 4 { - int8u arg1[] = 0; - } - - response struct TestEnumsResponse = 5 { - vendor_id arg1 = 0; - SimpleEnum arg2 = 1; - } - - response struct TestNullableOptionalResponse = 6 { - boolean wasPresent = 0; - optional boolean wasNull = 1; - optional int8u value = 2; - optional nullable int8u originalValue = 3; - } - - response struct SimpleStructResponse = 9 { - SimpleStruct arg1 = 0; - } - - response struct TestEmitTestEventResponse = 10 { - int64u value = 0; - } - - response struct TestEmitTestFabricScopedEventResponse = 11 { - int64u value = 0; - } - + /** Simple command without any parameters and without a specific response */ command Test(): DefaultSuccess = 0; + /** Simple command without any parameters and without a specific response not handled by the server */ command TestNotHandled(): DefaultSuccess = 1; + /** Simple command without any parameters and with a specific response */ command TestSpecific(): TestSpecificResponse = 2; + /** Simple command that should not be added to the server. */ + command TestUnknownCommand(): DefaultSuccess = 3; + /** Command that takes two arguments and returns their sum. */ command TestAddArguments(TestAddArgumentsRequest): TestAddArgumentsResponse = 4; + /** Command that takes an argument which is bool */ + command TestSimpleArgumentRequest(TestSimpleArgumentRequestRequest): TestSimpleArgumentResponse = 5; + /** Command that takes various arguments that are arrays, including an array of structs which have a list member. */ + command TestStructArrayArgumentRequest(TestStructArrayArgumentRequestRequest): TestStructArrayArgumentResponse = 6; + /** Command that takes an argument which is struct. The response echoes the + 'b' field of the single arg. */ command TestStructArgumentRequest(TestStructArgumentRequestRequest): BooleanResponse = 7; + /** Command that takes an argument which is nested struct. The response + echoes the 'b' field of ar1.c. */ command TestNestedStructArgumentRequest(TestNestedStructArgumentRequestRequest): BooleanResponse = 8; + /** Command that takes an argument which is a list of structs. The response + returns false if there is some struct in the list whose 'b' field is + false, and true otherwise (including if the list is empty). */ command TestListStructArgumentRequest(TestListStructArgumentRequestRequest): BooleanResponse = 9; + /** Command that takes an argument which is a list of INT8U. The response + returns false if the list contains a 0 in it, true otherwise (including + if the list is empty). */ command TestListInt8UArgumentRequest(TestListInt8UArgumentRequestRequest): BooleanResponse = 10; + /** Command that takes an argument which is a Nested Struct List. The + response returns false if there is some struct in arg1 (either directly + in arg1.c or in the arg1.d list) whose 'b' field is false, and true + otherwise. */ command TestNestedStructListArgumentRequest(TestNestedStructListArgumentRequestRequest): BooleanResponse = 11; + /** Command that takes an argument which is a list of Nested Struct List. + The response returns false if there is some struct in arg1 (either + directly in as the 'c' field of an entry 'd' list of an entry) whose 'b' + field is false, and true otherwise (including if the list is empty). */ command TestListNestedStructListArgumentRequest(TestListNestedStructListArgumentRequestRequest): BooleanResponse = 12; + /** Command that takes an argument which is a list of INT8U and expects a + response that reverses the list. */ command TestListInt8UReverseRequest(TestListInt8UReverseRequestRequest): TestListInt8UReverseResponse = 13; + /** Command that sends a vendor id and an enum. The server is expected to + echo them back. */ command TestEnumsRequest(TestEnumsRequestRequest): TestEnumsResponse = 14; + /** Command that takes an argument which is nullable and optional. The + response returns a boolean indicating whether the argument was present, + if that's true a boolean indicating whether the argument was null, and + if that' false the argument it received. */ command TestNullableOptionalRequest(TestNullableOptionalRequestRequest): TestNullableOptionalResponse = 15; + /** Command that takes various arguments which can be nullable and/or optional. The + response returns information about which things were received and what + their state was. */ + command TestComplexNullableOptionalRequest(TestComplexNullableOptionalRequestRequest): TestComplexNullableOptionalResponse = 16; + /** Command that takes an argument which is a struct. The response echoes + the struct back. */ command SimpleStructEchoRequest(SimpleStructEchoRequestRequest): SimpleStructResponse = 17; + /** Command that just responds with a success status if the timed invoke + conditions are met. */ timed command TimedInvokeRequest(): DefaultSuccess = 18; + /** Command that takes an optional argument which is bool. It responds with a success value if the optional is set to any value. */ command TestSimpleOptionalArgumentRequest(TestSimpleOptionalArgumentRequestRequest): DefaultSuccess = 19; + /** Command that takes identical arguments to the fields of the TestEvent and logs the TestEvent to the buffer. Command returns an event ID as the response. */ command TestEmitTestEventRequest(TestEmitTestEventRequestRequest): TestEmitTestEventResponse = 20; + /** Command that takes identical arguments to the fields of the TestFabricScopedEvent and logs the TestFabricScopedEvent to the buffer. Command returns an event ID as the response. */ command TestEmitTestFabricScopedEventRequest(TestEmitTestFabricScopedEventRequestRequest): TestEmitTestFabricScopedEventResponse = 21; } /** The Fault Injection Cluster provide a means for a test harness to configure faults(for example triggering a fault in the system). */ -internal server cluster FaultInjection = 4294048774 { +internal cluster FaultInjection = 4294048774 { + revision 1; // NOTE: Default/not specifically set + enum FaultType : enum8 { kUnspecified = 0; kSystemFault = 1; @@ -5130,7 +6322,9 @@ internal server cluster FaultInjection = 4294048774 { int8u percentage = 2; } + /** Configure a fault to be triggered deterministically */ command access(invoke: manage) FailAtFault(FailAtFaultRequest): DefaultSuccess = 0; + /** Configure a fault to be triggered randomly, with a given probability defined as a percentage */ command access(invoke: manage) FailRandomlyAtFault(FailRandomlyAtFaultRequest): DefaultSuccess = 1; } @@ -5178,7 +6372,7 @@ endpoint 0 { callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 0; - callback attribute clusterRevision default = 2; + callback attribute clusterRevision; } server cluster Binding { @@ -5192,33 +6386,33 @@ endpoint 0 { emits event AccessControlExtensionChanged; callback attribute acl; callback attribute extension; - callback attribute subjectsPerAccessControlEntry default = 4; - callback attribute targetsPerAccessControlEntry default = 3; - callback attribute accessControlEntriesPerFabric default = 4; + callback attribute subjectsPerAccessControlEntry; + callback attribute targetsPerAccessControlEntry; + callback attribute accessControlEntriesPerFabric; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 0; - callback attribute clusterRevision default = 1; + callback attribute clusterRevision; } server cluster BasicInformation { emits event StartUp; emits event ShutDown; emits event Leave; - callback attribute dataModelRevision default = 10; + callback attribute dataModelRevision; callback attribute vendorName; callback attribute vendorID; callback attribute productName; callback attribute productID; persist attribute nodeLabel; - callback attribute location default = "XX"; - callback attribute hardwareVersion default = 0; + callback attribute location; + callback attribute hardwareVersion; callback attribute hardwareVersionString; - callback attribute softwareVersion default = 0; + callback attribute softwareVersion; callback attribute softwareVersionString; - callback attribute manufacturingDate default = "20210614123456ZZ"; + callback attribute manufacturingDate; callback attribute partNumber; callback attribute productURL; callback attribute productLabel; @@ -5241,7 +6435,7 @@ endpoint 0 { emits event StateTransition; emits event VersionApplied; emits event DownloadError; - callback attribute defaultOTAProviders default = 0; + callback attribute defaultOTAProviders; ram attribute updatePossible default = 1; ram attribute updateState default = 0; ram attribute updateStateProgress default = 0; @@ -5309,9 +6503,9 @@ endpoint 0 { server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; - callback attribute regulatoryConfig default = 0; - callback attribute locationCapability default = 0; - callback attribute supportsConcurrentConnection default = 1; + callback attribute regulatoryConfig; + callback attribute locationCapability; + callback attribute supportsConcurrentConnection; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute eventList; @@ -5367,9 +6561,9 @@ endpoint 0 { emits event NetworkFaultChange; emits event BootReason; callback attribute networkInterfaces; - callback attribute rebootCount default = 0x0000; - callback attribute upTime default = 0x0000000000000000; - callback attribute totalOperationalHours default = 0x00000000; + callback attribute rebootCount; + callback attribute upTime; + callback attribute totalOperationalHours; callback attribute bootReason; callback attribute activeHardwareFaults; callback attribute activeRadioFaults; @@ -5390,10 +6584,10 @@ endpoint 0 { server cluster SoftwareDiagnostics { emits event SoftwareFault; callback attribute threadMetrics; - callback attribute currentHeapFree default = 0x0000000000000000; - callback attribute currentHeapUsed default = 0x0000000000000000; - callback attribute currentHeapHighWatermark default = 0x0000000000000000; - callback attribute featureMap default = 1; + callback attribute currentHeapFree; + callback attribute currentHeapUsed; + callback attribute currentHeapHighWatermark; + callback attribute featureMap; ram attribute clusterRevision default = 1; handle command ResetWatermarks; @@ -5402,11 +6596,11 @@ endpoint 0 { server cluster ThreadNetworkDiagnostics { callback attribute channel; callback attribute routingRole; - callback attribute networkName default = "0"; - callback attribute panId default = 0x0000; - callback attribute extendedPanId default = 0x0000000000000000; + callback attribute networkName; + callback attribute panId; + callback attribute extendedPanId; callback attribute meshLocalPrefix; - callback attribute overrunCount default = 0x0000000000000000; + callback attribute overrunCount; callback attribute neighborTable; callback attribute routeTable; callback attribute partitionId; @@ -5414,53 +6608,53 @@ endpoint 0 { callback attribute dataVersion; callback attribute stableDataVersion; callback attribute leaderRouterId; - callback attribute detachedRoleCount default = 0x0000; - callback attribute childRoleCount default = 0x0000; - callback attribute routerRoleCount default = 0x0000; - callback attribute leaderRoleCount default = 0x0000; - callback attribute attachAttemptCount default = 0x0000; - callback attribute partitionIdChangeCount default = 0x0000; - callback attribute betterPartitionAttachAttemptCount default = 0x0000; - callback attribute parentChangeCount default = 0x0000; - callback attribute txTotalCount default = 0x0000; - callback attribute txUnicastCount default = 0x0000; - callback attribute txBroadcastCount default = 0x0000; - callback attribute txAckRequestedCount default = 0x0000; - callback attribute txAckedCount default = 0x0000; - callback attribute txNoAckRequestedCount default = 0x0000; - callback attribute txDataCount default = 0x0000; - callback attribute txDataPollCount default = 0x0000; - callback attribute txBeaconCount default = 0x0000; - callback attribute txBeaconRequestCount default = 0x0000; - callback attribute txOtherCount default = 0x0000; - callback attribute txRetryCount default = 0x0000; - callback attribute txDirectMaxRetryExpiryCount default = 0x0000; - callback attribute txIndirectMaxRetryExpiryCount default = 0x0000; - callback attribute txErrCcaCount default = 0x0000; - callback attribute txErrAbortCount default = 0x0000; - callback attribute txErrBusyChannelCount default = 0x0000; - callback attribute rxTotalCount default = 0x0000; - callback attribute rxUnicastCount default = 0x0000; - callback attribute rxBroadcastCount default = 0x0000; - callback attribute rxDataCount default = 0x0000; - callback attribute rxDataPollCount default = 0x0000; - callback attribute rxBeaconCount default = 0x0000; - callback attribute rxBeaconRequestCount default = 0x0000; - callback attribute rxOtherCount default = 0x0000; - callback attribute rxAddressFilteredCount default = 0x0000; - callback attribute rxDestAddrFilteredCount default = 0x0000; - callback attribute rxDuplicatedCount default = 0x0000; - callback attribute rxErrNoFrameCount default = 0x0000; - callback attribute rxErrUnknownNeighborCount default = 0x0000; - callback attribute rxErrInvalidSrcAddrCount default = 0x0000; - callback attribute rxErrSecCount default = 0x0000; - callback attribute rxErrFcsCount default = 0x0000; - callback attribute rxErrOtherCount default = 0x0000; - callback attribute activeTimestamp default = 0x0000000000000000; - callback attribute pendingTimestamp default = 0x0000000000000000; - callback attribute delay default = 0x0000; + callback attribute detachedRoleCount; + callback attribute childRoleCount; + callback attribute routerRoleCount; + callback attribute leaderRoleCount; + callback attribute attachAttemptCount; + callback attribute partitionIdChangeCount; + callback attribute betterPartitionAttachAttemptCount; + callback attribute parentChangeCount; + callback attribute txTotalCount; + callback attribute txUnicastCount; + callback attribute txBroadcastCount; + callback attribute txAckRequestedCount; + callback attribute txAckedCount; + callback attribute txNoAckRequestedCount; + callback attribute txDataCount; + callback attribute txDataPollCount; + callback attribute txBeaconCount; + callback attribute txBeaconRequestCount; + callback attribute txOtherCount; + callback attribute txRetryCount; + callback attribute txDirectMaxRetryExpiryCount; + callback attribute txIndirectMaxRetryExpiryCount; + callback attribute txErrCcaCount; + callback attribute txErrAbortCount; + callback attribute txErrBusyChannelCount; + callback attribute rxTotalCount; + callback attribute rxUnicastCount; + callback attribute rxBroadcastCount; + callback attribute rxDataCount; + callback attribute rxDataPollCount; + callback attribute rxBeaconCount; + callback attribute rxBeaconRequestCount; + callback attribute rxOtherCount; + callback attribute rxAddressFilteredCount; + callback attribute rxDestAddrFilteredCount; + callback attribute rxDuplicatedCount; + callback attribute rxErrNoFrameCount; + callback attribute rxErrUnknownNeighborCount; + callback attribute rxErrInvalidSrcAddrCount; + callback attribute rxErrSecCount; + callback attribute rxErrFcsCount; + callback attribute rxErrOtherCount; + callback attribute activeTimestamp; + callback attribute pendingTimestamp; + callback attribute delay; callback attribute securityPolicy; - callback attribute channelPage0Mask default = "0x0000"; + callback attribute channelPage0Mask; callback attribute operationalDatasetComponents; callback attribute activeNetworkFaultsList; ram attribute featureMap default = 0x000F; @@ -5476,16 +6670,16 @@ endpoint 0 { callback attribute bssid; callback attribute securityType; callback attribute wiFiVersion; - callback attribute channelNumber default = 0x0000; - callback attribute rssi default = 0x00; - callback attribute beaconLostCount default = 0x00000000; - callback attribute beaconRxCount default = 0x00000000; - callback attribute packetMulticastRxCount default = 0x00000000; - callback attribute packetMulticastTxCount default = 0x00000000; - callback attribute packetUnicastRxCount default = 0x00000000; - callback attribute packetUnicastTxCount default = 0x00000000; - callback attribute currentMaxRate default = 0x0000000000000000; - callback attribute overrunCount default = 0x0000000000000000; + callback attribute channelNumber; + callback attribute rssi; + callback attribute beaconLostCount; + callback attribute beaconRxCount; + callback attribute packetMulticastRxCount; + callback attribute packetMulticastTxCount; + callback attribute packetUnicastRxCount; + callback attribute packetUnicastTxCount; + callback attribute currentMaxRate; + callback attribute overrunCount; ram attribute featureMap default = 3; ram attribute clusterRevision default = 1; @@ -5494,14 +6688,14 @@ endpoint 0 { server cluster EthernetNetworkDiagnostics { callback attribute PHYRate; - callback attribute fullDuplex default = 0x00; - callback attribute packetRxCount default = 0x0000000000000000; - callback attribute packetTxCount default = 0x0000000000000000; - callback attribute txErrCount default = 0x0000000000000000; - callback attribute collisionCount default = 0x0000000000000000; - callback attribute overrunCount default = 0x0000000000000000; - callback attribute carrierDetect default = 0x00; - callback attribute timeSinceReset default = 0x0000000000000000; + callback attribute fullDuplex; + callback attribute packetRxCount; + callback attribute packetTxCount; + callback attribute txErrCount; + callback attribute collisionCount; + callback attribute overrunCount; + callback attribute carrierDetect; + callback attribute timeSinceReset; ram attribute featureMap default = 3; ram attribute clusterRevision default = 1; @@ -5515,15 +6709,15 @@ endpoint 0 { emits event TimeFailure; emits event MissingTrustedTimeSource; callback attribute UTCTime; - callback attribute granularity default = 0x00; + callback attribute granularity; ram attribute timeSource default = 0x00; callback attribute trustedTimeSource; callback attribute defaultNTP; - callback attribute timeZone default = 1; + callback attribute timeZone; callback attribute DSTOffset; - callback attribute localTime default = 1; + callback attribute localTime; ram attribute timeZoneDatabase default = 0; - callback attribute timeZoneListMaxSize default = 3; + callback attribute timeZoneListMaxSize; callback attribute DSTOffsetListMaxSize; ram attribute supportsDNSResolve default = true; callback attribute generatedCommandList; @@ -5541,9 +6735,9 @@ endpoint 0 { } server cluster AdministratorCommissioning { - callback attribute windowStatus default = 0; - callback attribute adminFabricIndex default = 1; - callback attribute adminVendorId default = 0; + callback attribute windowStatus; + callback attribute adminFabricIndex; + callback attribute adminVendorId; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute eventList; @@ -5593,8 +6787,8 @@ endpoint 0 { callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - callback attribute featureMap default = 0; - callback attribute clusterRevision default = 1; + callback attribute featureMap; + callback attribute clusterRevision; handle command KeySetWrite; handle command KeySetRead; @@ -5784,7 +6978,7 @@ endpoint 1 { callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 0; - callback attribute clusterRevision default = 2; + callback attribute clusterRevision; } server cluster Binding { @@ -5847,7 +7041,7 @@ endpoint 1 { server cluster ModeSelect { ram attribute description default = "Coffee"; ram attribute standardNamespace default = 0; - callback attribute supportedModes default = 0; + callback attribute supportedModes; persist attribute currentMode default = 0; persist attribute startUpMode default = 0; persist attribute onMode default = 255; @@ -5869,7 +7063,7 @@ endpoint 1 { callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 2; handle command ChangeToMode; @@ -5884,7 +7078,7 @@ endpoint 1 { callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 2; handle command ChangeToMode; @@ -5911,7 +7105,7 @@ endpoint 1 { callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 2; handle command ChangeToMode; @@ -5925,7 +7119,7 @@ endpoint 1 { callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 2; handle command ChangeToMode; @@ -5964,7 +7158,7 @@ endpoint 1 { callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 2; handle command ChangeToMode; @@ -5972,11 +7166,11 @@ endpoint 1 { } server cluster AirQuality { - callback attribute airQuality default = 0; + callback attribute airQuality; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 1; } @@ -6027,6 +7221,17 @@ endpoint 1 { handle command ModifyEnabledAlarms; } + server cluster MicrowaveOvenMode { + callback attribute supportedModes; + callback attribute currentMode; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute eventList; + callback attribute attributeList; + callback attribute featureMap; + ram attribute clusterRevision default = 1; + } + server cluster OperationalState { emits event OperationalError; emits event OperationCompletion; @@ -6053,14 +7258,14 @@ endpoint 1 { emits event OperationalError; emits event OperationCompletion; callback attribute phaseList; - callback attribute currentPhase default = 0; - callback attribute countdownTime default = 0; - callback attribute operationalStateList default = 0; - callback attribute operationalState default = 0; - callback attribute operationalError default = 0; - callback attribute generatedCommandList default = 0; - callback attribute acceptedCommandList default = 0; - callback attribute attributeList default = 0; + callback attribute currentPhase; + callback attribute countdownTime; + callback attribute operationalStateList; + callback attribute operationalState; + callback attribute operationalError; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; ram attribute featureMap default = 0; ram attribute clusterRevision default = 1; @@ -6072,14 +7277,14 @@ endpoint 1 { server cluster HepaFilterMonitoring { callback attribute condition; callback attribute degradationDirection; - callback attribute changeIndication default = 0; + callback attribute changeIndication; callback attribute inPlaceIndicator; callback attribute lastChangedTime; callback attribute replacementProductList; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute attributeList; - callback attribute featureMap default = 7; + callback attribute featureMap; ram attribute clusterRevision default = 1; handle command ResetCondition; @@ -6088,19 +7293,69 @@ endpoint 1 { server cluster ActivatedCarbonFilterMonitoring { callback attribute condition; callback attribute degradationDirection; - callback attribute changeIndication default = 0; + callback attribute changeIndication; callback attribute inPlaceIndicator; callback attribute lastChangedTime; callback attribute replacementProductList; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute attributeList; - callback attribute featureMap default = 7; + callback attribute featureMap; ram attribute clusterRevision default = 1; handle command ResetCondition; } + server cluster ElectricalEnergyMeasurement { + emits event CumulativeEnergyMeasured; + emits event PeriodicEnergyMeasured; + callback attribute accuracy; + callback attribute cumulativeEnergyImported; + callback attribute cumulativeEnergyExported; + callback attribute periodicEnergyImported; + callback attribute periodicEnergyExported; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute eventList; + callback attribute attributeList; + ram attribute featureMap default = 0x000F; + ram attribute clusterRevision default = 1; + } + + server cluster EnergyEvse { + callback attribute state default = 0; + callback attribute supplyState default = 0; + callback attribute faultState default = 0; + callback attribute chargingEnabledUntil default = 0; + callback attribute dischargingEnabledUntil default = 0; + callback attribute circuitCapacity default = 0; + callback attribute minimumChargeCurrent default = 6000; + callback attribute maximumChargeCurrent default = 0; + callback attribute maximumDischargeCurrent default = 0; + callback attribute userMaximumChargeCurrent default = 0; + callback attribute randomizationDelayWindow default = 600; + callback attribute numberOfWeeklyTargets default = 0; + callback attribute numberOfDailyTargets default = 1; + callback attribute nextChargeStartTime; + callback attribute nextChargeTargetTime; + callback attribute nextChargeRequiredEnergy; + callback attribute nextChargeTargetSoC; + callback attribute approximateEVEfficiency default = 0xFFFF; + callback attribute stateOfCharge; + callback attribute batteryCapacity; + callback attribute vehicleID; + callback attribute sessionID; + callback attribute sessionDuration; + callback attribute sessionEnergyCharged; + callback attribute sessionEnergyDischarged; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute eventList; + callback attribute attributeList; + ram attribute featureMap default = 0; + ram attribute clusterRevision default = 2; + } + server cluster WindowCovering { ram attribute type default = 0x08; ram attribute physicalClosedLimitLift default = 0xFFFF; @@ -6196,6 +7451,7 @@ endpoint 1 { ram attribute systemMode default = 0x01; callback attribute generatedCommandList; callback attribute acceptedCommandList; + callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 0x0023; ram attribute clusterRevision default = 6; @@ -6383,192 +7639,192 @@ endpoint 1 { } server cluster CarbonMonoxideConcentrationMeasurement { - callback attribute measuredValue default = 401; - callback attribute minMeasuredValue default = 50; - callback attribute maxMeasuredValue default = 1500; - callback attribute peakMeasuredValue default = 511; - callback attribute peakMeasuredValueWindow default = 3600; - callback attribute averageMeasuredValue default = 213; - callback attribute averageMeasuredValueWindow default = 3600; - callback attribute uncertainty default = 10; - callback attribute measurementUnit default = 1; - callback attribute measurementMedium default = 0; - callback attribute levelValue default = 3; + callback attribute measuredValue; + callback attribute minMeasuredValue; + callback attribute maxMeasuredValue; + callback attribute peakMeasuredValue; + callback attribute peakMeasuredValueWindow; + callback attribute averageMeasuredValue; + callback attribute averageMeasuredValueWindow; + callback attribute uncertainty; + callback attribute measurementUnit; + callback attribute measurementMedium; + callback attribute levelValue; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } server cluster CarbonDioxideConcentrationMeasurement { - callback attribute measuredValue default = 458; - callback attribute minMeasuredValue default = 300; - callback attribute maxMeasuredValue default = 2000; - callback attribute peakMeasuredValue default = 523; - callback attribute peakMeasuredValueWindow default = 3600; - callback attribute averageMeasuredValue default = 421; - callback attribute averageMeasuredValueWindow default = 3600; - callback attribute uncertainty default = 5; - callback attribute measurementUnit default = 0; - callback attribute measurementMedium default = 0; - callback attribute levelValue default = 1; + callback attribute measuredValue; + callback attribute minMeasuredValue; + callback attribute maxMeasuredValue; + callback attribute peakMeasuredValue; + callback attribute peakMeasuredValueWindow; + callback attribute averageMeasuredValue; + callback attribute averageMeasuredValueWindow; + callback attribute uncertainty; + callback attribute measurementUnit; + callback attribute measurementMedium; + callback attribute levelValue; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } server cluster NitrogenDioxideConcentrationMeasurement { - callback attribute measuredValue default = 3; - callback attribute minMeasuredValue default = 1; - callback attribute maxMeasuredValue default = 150; - callback attribute peakMeasuredValue default = 3; - callback attribute peakMeasuredValueWindow default = 120; - callback attribute averageMeasuredValue default = 3; - callback attribute averageMeasuredValueWindow default = 120; - callback attribute uncertainty default = 1; - callback attribute measurementUnit default = 1; - callback attribute measurementMedium default = 0; - callback attribute levelValue default = 1; + callback attribute measuredValue; + callback attribute minMeasuredValue; + callback attribute maxMeasuredValue; + callback attribute peakMeasuredValue; + callback attribute peakMeasuredValueWindow; + callback attribute averageMeasuredValue; + callback attribute averageMeasuredValueWindow; + callback attribute uncertainty; + callback attribute measurementUnit; + callback attribute measurementMedium; + callback attribute levelValue; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } server cluster OzoneConcentrationMeasurement { - callback attribute measuredValue default = 10; - callback attribute minMeasuredValue default = 3; - callback attribute maxMeasuredValue default = 300; - callback attribute peakMeasuredValue default = 50; - callback attribute peakMeasuredValueWindow default = 3600; - callback attribute averageMeasuredValue default = 20; - callback attribute averageMeasuredValueWindow default = 3600; - callback attribute uncertainty default = 0; - callback attribute measurementUnit default = 0; - callback attribute measurementMedium default = 0; - callback attribute levelValue default = 1; + callback attribute measuredValue; + callback attribute minMeasuredValue; + callback attribute maxMeasuredValue; + callback attribute peakMeasuredValue; + callback attribute peakMeasuredValueWindow; + callback attribute averageMeasuredValue; + callback attribute averageMeasuredValueWindow; + callback attribute uncertainty; + callback attribute measurementUnit; + callback attribute measurementMedium; + callback attribute levelValue; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } server cluster Pm25ConcentrationMeasurement { - callback attribute measuredValue default = 42; - callback attribute minMeasuredValue default = 1; - callback attribute maxMeasuredValue default = 400; - callback attribute peakMeasuredValue default = 90; - callback attribute peakMeasuredValueWindow default = 3600; - callback attribute averageMeasuredValue default = 35; - callback attribute averageMeasuredValueWindow default = 3600; - callback attribute uncertainty default = 4; - callback attribute measurementUnit default = 4; - callback attribute measurementMedium default = 0; - callback attribute levelValue default = 2; + callback attribute measuredValue; + callback attribute minMeasuredValue; + callback attribute maxMeasuredValue; + callback attribute peakMeasuredValue; + callback attribute peakMeasuredValueWindow; + callback attribute averageMeasuredValue; + callback attribute averageMeasuredValueWindow; + callback attribute uncertainty; + callback attribute measurementUnit; + callback attribute measurementMedium; + callback attribute levelValue; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } server cluster FormaldehydeConcentrationMeasurement { - callback attribute measuredValue default = 10; - callback attribute minMeasuredValue default = 0; - callback attribute maxMeasuredValue default = 200; - callback attribute peakMeasuredValue default = 10; - callback attribute peakMeasuredValueWindow default = 7200; - callback attribute averageMeasuredValue default = 2; - callback attribute averageMeasuredValueWindow default = 7200; - callback attribute uncertainty default = 0; - callback attribute measurementUnit default = 3; - callback attribute measurementMedium default = 0; - callback attribute levelValue default = 2; + callback attribute measuredValue; + callback attribute minMeasuredValue; + callback attribute maxMeasuredValue; + callback attribute peakMeasuredValue; + callback attribute peakMeasuredValueWindow; + callback attribute averageMeasuredValue; + callback attribute averageMeasuredValueWindow; + callback attribute uncertainty; + callback attribute measurementUnit; + callback attribute measurementMedium; + callback attribute levelValue; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } server cluster Pm1ConcentrationMeasurement { - callback attribute measuredValue default = 39; - callback attribute minMeasuredValue default = 1; - callback attribute maxMeasuredValue default = 400; - callback attribute peakMeasuredValue default = 70; - callback attribute peakMeasuredValueWindow default = 3600; - callback attribute averageMeasuredValue default = 41; - callback attribute averageMeasuredValueWindow default = 3600; - callback attribute uncertainty default = 4; - callback attribute measurementUnit default = 4; - callback attribute measurementMedium default = 0; - callback attribute levelValue default = 1; + callback attribute measuredValue; + callback attribute minMeasuredValue; + callback attribute maxMeasuredValue; + callback attribute peakMeasuredValue; + callback attribute peakMeasuredValueWindow; + callback attribute averageMeasuredValue; + callback attribute averageMeasuredValueWindow; + callback attribute uncertainty; + callback attribute measurementUnit; + callback attribute measurementMedium; + callback attribute levelValue; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } server cluster Pm10ConcentrationMeasurement { - callback attribute measuredValue default = 7; - callback attribute minMeasuredValue default = 2; - callback attribute maxMeasuredValue default = 400; - callback attribute peakMeasuredValue default = 49; - callback attribute peakMeasuredValueWindow default = 3600; - callback attribute averageMeasuredValue default = 43; - callback attribute averageMeasuredValueWindow default = 3600; - callback attribute uncertainty default = 2; - callback attribute measurementUnit default = 4; - callback attribute measurementMedium default = 0; - callback attribute levelValue default = 1; + callback attribute measuredValue; + callback attribute minMeasuredValue; + callback attribute maxMeasuredValue; + callback attribute peakMeasuredValue; + callback attribute peakMeasuredValueWindow; + callback attribute averageMeasuredValue; + callback attribute averageMeasuredValueWindow; + callback attribute uncertainty; + callback attribute measurementUnit; + callback attribute measurementMedium; + callback attribute levelValue; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } server cluster TotalVolatileOrganicCompoundsConcentrationMeasurement { - callback attribute measuredValue default = 5; - callback attribute minMeasuredValue default = 1; - callback attribute maxMeasuredValue default = 100; - callback attribute peakMeasuredValue default = 8; - callback attribute peakMeasuredValueWindow default = 3600; - callback attribute averageMeasuredValue default = 2; - callback attribute averageMeasuredValueWindow default = 3600; - callback attribute uncertainty default = 1; - callback attribute measurementUnit default = 1; - callback attribute measurementMedium default = 0; - callback attribute levelValue default = 1; + callback attribute measuredValue; + callback attribute minMeasuredValue; + callback attribute maxMeasuredValue; + callback attribute peakMeasuredValue; + callback attribute peakMeasuredValueWindow; + callback attribute averageMeasuredValue; + callback attribute averageMeasuredValueWindow; + callback attribute uncertainty; + callback attribute measurementUnit; + callback attribute measurementMedium; + callback attribute levelValue; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } server cluster RadonConcentrationMeasurement { - callback attribute measuredValue default = 10; - callback attribute minMeasuredValue default = 5; - callback attribute maxMeasuredValue default = 100; - callback attribute peakMeasuredValue default = 36; - callback attribute peakMeasuredValueWindow default = 3600; - callback attribute averageMeasuredValue default = 20; - callback attribute averageMeasuredValueWindow default = 3600; - callback attribute uncertainty default = 0; - callback attribute measurementUnit default = 0; - callback attribute measurementMedium default = 0; - callback attribute levelValue default = 3; + callback attribute measuredValue; + callback attribute minMeasuredValue; + callback attribute maxMeasuredValue; + callback attribute peakMeasuredValue; + callback attribute peakMeasuredValueWindow; + callback attribute averageMeasuredValue; + callback attribute averageMeasuredValueWindow; + callback attribute uncertainty; + callback attribute measurementUnit; + callback attribute measurementMedium; + callback attribute levelValue; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute attributeList; - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 3; } @@ -6821,7 +8077,7 @@ endpoint 2 { callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 0; - callback attribute clusterRevision default = 2; + callback attribute clusterRevision; } server cluster PowerSource { @@ -6862,7 +8118,7 @@ endpoint 65534 { callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 0; - callback attribute clusterRevision default = 2; + callback attribute clusterRevision; } server cluster NetworkCommissioning { 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 fe400ec5019b28..0bba4b8871e6c2 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 @@ -17,12 +17,6 @@ } ], "package": [ - { - "pathRelativity": "relativeToZap", - "path": "../../../src/app/zap-templates/app-templates.json", - "type": "gen-templates-json", - "version": "chip-v1" - }, { "pathRelativity": "relativeToZap", "path": "../../../src/app/zap-templates/zcl/zcl-with-test-extensions.json", @@ -30,6 +24,12 @@ "category": "matter", "version": 1, "description": "Matter SDK ZCL data with some extensions" + }, + { + "pathRelativity": "relativeToZap", + "path": "../../../src/app/zap-templates/app-templates.json", + "type": "gen-templates-json", + "version": "chip-v1" } ], "endpointTypes": [ @@ -318,7 +318,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -334,7 +334,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -350,7 +350,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -366,7 +366,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -382,7 +382,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -398,7 +398,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -414,7 +414,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -430,7 +430,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -446,7 +446,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -478,7 +478,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -504,7 +504,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -562,7 +562,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65534, @@ -578,7 +578,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65534, @@ -594,7 +594,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "4", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -610,7 +610,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "3", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -626,7 +626,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "4", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -642,7 +642,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -658,7 +658,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -674,7 +674,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -690,7 +690,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -722,7 +722,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -764,7 +764,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "10", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -780,7 +780,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -796,7 +796,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -812,7 +812,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -828,7 +828,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -860,7 +860,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "XX", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -876,7 +876,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -892,7 +892,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -908,7 +908,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -924,7 +924,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -940,7 +940,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "20210614123456ZZ", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -956,7 +956,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -972,7 +972,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -988,7 +988,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1004,7 +1004,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1036,7 +1036,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1052,7 +1052,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1068,7 +1068,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1084,7 +1084,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1100,7 +1100,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1116,7 +1116,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1132,7 +1132,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1148,7 +1148,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1164,7 +1164,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1315,7 +1315,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1460,7 +1460,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1476,7 +1476,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1492,7 +1492,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1508,7 +1508,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1524,7 +1524,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1614,7 +1614,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1630,7 +1630,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1646,7 +1646,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1662,7 +1662,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1678,7 +1678,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1752,7 +1752,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1768,7 +1768,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1784,7 +1784,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1800,7 +1800,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1858,7 +1858,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2012,7 +2012,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2028,7 +2028,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2044,7 +2044,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2060,7 +2060,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2076,7 +2076,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2200,7 +2200,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2216,7 +2216,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2232,7 +2232,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2248,7 +2248,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2264,7 +2264,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2280,7 +2280,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2296,7 +2296,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2312,7 +2312,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2460,7 +2460,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2572,7 +2572,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2588,7 +2588,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2604,7 +2604,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2620,7 +2620,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2756,7 +2756,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2772,7 +2772,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2788,7 +2788,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2804,7 +2804,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2820,7 +2820,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2836,7 +2836,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2852,7 +2852,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2868,7 +2868,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2900,7 +2900,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2916,7 +2916,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2932,7 +2932,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2948,7 +2948,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3046,7 +3046,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3062,7 +3062,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3078,7 +3078,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3094,7 +3094,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3110,7 +3110,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3171,7 +3171,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3187,7 +3187,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3203,7 +3203,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3219,7 +3219,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3235,7 +3235,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3251,7 +3251,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3267,7 +3267,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3283,7 +3283,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3299,7 +3299,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3315,7 +3315,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3331,7 +3331,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3347,7 +3347,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3363,7 +3363,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3379,7 +3379,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3395,7 +3395,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3411,7 +3411,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3427,7 +3427,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3443,7 +3443,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3459,7 +3459,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3475,7 +3475,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3491,7 +3491,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3507,7 +3507,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3523,7 +3523,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3539,7 +3539,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3555,7 +3555,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3571,7 +3571,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3587,7 +3587,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3603,7 +3603,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3619,7 +3619,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3635,7 +3635,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3651,7 +3651,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3667,7 +3667,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3683,7 +3683,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3699,7 +3699,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3715,7 +3715,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3731,7 +3731,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3747,7 +3747,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3763,7 +3763,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3779,7 +3779,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3795,7 +3795,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3811,7 +3811,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3827,7 +3827,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3843,7 +3843,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3859,7 +3859,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3875,7 +3875,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3891,7 +3891,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3907,7 +3907,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3923,7 +3923,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3939,7 +3939,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3955,7 +3955,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3971,7 +3971,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3987,7 +3987,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4003,7 +4003,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4019,7 +4019,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4035,7 +4035,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4051,7 +4051,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4067,7 +4067,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4083,7 +4083,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4099,7 +4099,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4115,7 +4115,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4131,7 +4131,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4147,7 +4147,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4163,7 +4163,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4231,7 +4231,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4247,7 +4247,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4263,7 +4263,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4279,7 +4279,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4295,7 +4295,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4311,7 +4311,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4327,7 +4327,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4343,7 +4343,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4359,7 +4359,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4375,7 +4375,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4391,7 +4391,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4407,7 +4407,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4423,7 +4423,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4514,7 +4514,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4530,7 +4530,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4546,7 +4546,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4562,7 +4562,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4578,7 +4578,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4594,7 +4594,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4610,7 +4610,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4626,7 +4626,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4642,7 +4642,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4766,7 +4766,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4814,7 +4814,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4830,7 +4830,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4846,7 +4846,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4862,7 +4862,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4894,7 +4894,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "3", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4910,7 +4910,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4942,7 +4942,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4958,7 +4958,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4974,7 +4974,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5095,7 +5095,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5111,7 +5111,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5127,7 +5127,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5143,7 +5143,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5159,7 +5159,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5175,7 +5175,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5191,7 +5191,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5347,7 +5347,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5363,7 +5363,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5379,7 +5379,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5395,7 +5395,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5411,7 +5411,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5427,7 +5427,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5443,7 +5443,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5459,7 +5459,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5475,7 +5475,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5491,7 +5491,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5599,7 +5599,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5615,7 +5615,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5631,7 +5631,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5647,7 +5647,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5663,7 +5663,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5679,7 +5679,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5695,7 +5695,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5711,7 +5711,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5727,7 +5727,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5743,7 +5743,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5769,7 +5769,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5827,7 +5827,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5994,7 +5994,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6010,7 +6010,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6026,7 +6026,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6171,7 +6171,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6187,7 +6187,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6203,7 +6203,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6219,7 +6219,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6375,7 +6375,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6391,7 +6391,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6407,7 +6407,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6423,7 +6423,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6681,10 +6681,10 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6700,7 +6700,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6716,7 +6716,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6732,7 +6732,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6748,7 +6748,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7004,7 +7004,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7020,7 +7020,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7036,7 +7036,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7052,7 +7052,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7099,6 +7099,7 @@ "define": "ON_OFF_SWITCH_CONFIGURATION_CLUSTER", "side": "server", "enabled": 1, + "apiMaturity": "deprecated", "attributes": [ { "name": "switch type", @@ -7505,6 +7506,7 @@ "define": "BINARY_INPUT_BASIC_CLUSTER", "side": "server", "enabled": 1, + "apiMaturity": "deprecated", "attributes": [ { "name": "out of service", @@ -7606,7 +7608,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -7622,7 +7624,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -7638,7 +7640,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -7654,7 +7656,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -7670,7 +7672,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7686,7 +7688,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7702,7 +7704,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7718,7 +7720,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7734,7 +7736,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7766,7 +7768,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -7792,7 +7794,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7850,7 +7852,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -7866,7 +7868,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -8036,7 +8038,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -8052,7 +8054,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -8068,7 +8070,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -8084,7 +8086,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -8100,7 +8102,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -8250,7 +8252,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -8308,7 +8310,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -8466,7 +8468,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -8530,7 +8532,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -8546,7 +8548,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -8562,7 +8564,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -8654,7 +8656,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -8670,7 +8672,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -8686,7 +8688,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -8702,7 +8704,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -8718,7 +8720,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -8734,7 +8736,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -8750,7 +8752,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -8766,7 +8768,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -8826,7 +8828,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -8842,7 +8844,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -8858,7 +8860,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -8874,7 +8876,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -8890,7 +8892,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -8906,7 +8908,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -8922,7 +8924,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -8938,7 +8940,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -8980,7 +8982,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9028,7 +9030,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9044,7 +9046,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9060,7 +9062,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9076,7 +9078,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9092,7 +9094,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9168,7 +9170,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9184,7 +9186,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9200,7 +9202,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9216,7 +9218,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9232,7 +9234,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9248,7 +9250,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9264,7 +9266,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9324,7 +9326,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9340,7 +9342,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9356,7 +9358,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9372,7 +9374,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9388,7 +9390,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9404,7 +9406,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9420,7 +9422,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9488,7 +9490,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9504,7 +9506,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9520,7 +9522,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9536,7 +9538,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9642,7 +9644,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9658,7 +9660,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9674,7 +9676,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9759,7 +9761,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9775,7 +9777,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9791,7 +9793,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9807,7 +9809,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9823,7 +9825,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9839,7 +9841,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9855,7 +9857,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9871,7 +9873,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9913,7 +9915,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9929,7 +9931,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9945,7 +9947,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9961,7 +9963,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9977,7 +9979,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -10440,7 +10442,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -10456,7 +10458,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -10472,7 +10474,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -10522,57 +10524,16 @@ ] }, { - "name": "Operational State", - "code": 96, + "name": "Microwave Oven Mode", + "code": 94, "mfgCode": null, - "define": "OPERATIONAL_STATE_CLUSTER", + "define": "MICROWAVE_OVEN_MODE_CLUSTER", "side": "server", "enabled": 1, - "commands": [ - { - "name": "Pause", - "code": 0, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "Stop", - "code": 1, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "Start", - "code": 2, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "Resume", - "code": 3, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "OperationalCommandResponse", - "code": 4, - "mfgCode": null, - "source": "server", - "isIncoming": 0, - "isEnabled": 1 - } - ], + "apiMaturity": "provisional", "attributes": [ { - "name": "PhaseList", + "name": "SupportedModes", "code": 0, "mfgCode": null, "side": "server", @@ -10581,14 +10542,14 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "CurrentPhase", + "name": "CurrentMode", "code": 1, "mfgCode": null, "side": "server", @@ -10597,31 +10558,31 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "CountdownTime", - "code": 2, + "name": "GeneratedCommandList", + "code": 65528, "mfgCode": null, "side": "server", - "type": "elapsed_s", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "OperationalStateList", - "code": 3, + "name": "AcceptedCommandList", + "code": 65529, "mfgCode": null, "side": "server", "type": "array", @@ -10629,87 +10590,267 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "OperationalState", - "code": 4, + "name": "EventList", + "code": 65530, "mfgCode": null, "side": "server", - "type": "OperationalStateEnum", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "OperationalError", - "code": 5, + "name": "AttributeList", + "code": 65531, "mfgCode": null, "side": "server", - "type": "ErrorStateStruct", + "type": "array", "included": 1, "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "GeneratedCommandList", - "code": 65528, + "name": "FeatureMap", + "code": 65532, "mfgCode": null, "side": "server", - "type": "array", + "type": "bitmap32", "included": 1, "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "AcceptedCommandList", - "code": 65529, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, "side": "server", - "type": "array", + "type": "int16u", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "1", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 - }, - { - "name": "AttributeList", - "code": 65531, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", + } + ] + }, + { + "name": "Operational State", + "code": 96, + "mfgCode": null, + "define": "OPERATIONAL_STATE_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [ + { + "name": "Pause", + "code": 0, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "Stop", + "code": 1, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "Start", + "code": 2, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "Resume", + "code": 3, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "OperationalCommandResponse", + "code": 4, + "mfgCode": null, + "source": "server", + "isIncoming": 0, + "isEnabled": 1 + } + ], + "attributes": [ + { + "name": "PhaseList", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "CurrentPhase", + "code": 1, + "mfgCode": null, + "side": "server", + "type": "int8u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "CountdownTime", + "code": 2, + "mfgCode": null, + "side": "server", + "type": "elapsed_s", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "OperationalStateList", + "code": 3, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "OperationalState", + "code": 4, + "mfgCode": null, + "side": "server", + "type": "OperationalStateEnum", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "OperationalError", + "code": 5, + "mfgCode": null, + "side": "server", + "type": "ErrorStateStruct", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -10809,7 +10950,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -10825,7 +10966,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -10841,7 +10982,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -10857,7 +10998,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -10873,7 +11014,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -10889,7 +11030,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -10905,7 +11046,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -10921,7 +11062,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -10937,7 +11078,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11021,7 +11162,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11037,7 +11178,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11053,7 +11194,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11069,7 +11210,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11108,11 +11249,741 @@ "reportableChange": 0 }, { - "name": "GeneratedCommandList", - "code": 65528, + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Activated Carbon Filter Monitoring", + "code": 114, + "mfgCode": null, + "define": "ACTIVATED_CARBON_FILTER_MONITORING_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [ + { + "name": "ResetCondition", + "code": 0, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + } + ], + "attributes": [ + { + "name": "Condition", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "percent", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "DegradationDirection", + "code": 1, + "mfgCode": null, + "side": "server", + "type": "DegradationDirectionEnum", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ChangeIndication", + "code": 2, + "mfgCode": null, + "side": "server", + "type": "ChangeIndicationEnum", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "InPlaceIndicator", + "code": 3, + "mfgCode": null, + "side": "server", + "type": "boolean", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "LastChangedTime", + "code": 4, + "mfgCode": null, + "side": "server", + "type": "epoch_s", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ReplacementProductList", + "code": 5, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Electrical Energy Measurement", + "code": 145, + "mfgCode": null, + "define": "ELECTRICAL_ENERGY_MEASUREMENT_CLUSTER", + "side": "server", + "enabled": 1, + "apiMaturity": "provisional", + "attributes": [ + { + "name": "Accuracy", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "MeasurementAccuracyStruct", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "CumulativeEnergyImported", + "code": 1, + "mfgCode": null, + "side": "server", + "type": "EnergyMeasurementStruct", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "CumulativeEnergyExported", + "code": 2, + "mfgCode": null, + "side": "server", + "type": "EnergyMeasurementStruct", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "PeriodicEnergyImported", + "code": 3, + "mfgCode": null, + "side": "server", + "type": "EnergyMeasurementStruct", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "PeriodicEnergyExported", + "code": 4, + "mfgCode": null, + "side": "server", + "type": "EnergyMeasurementStruct", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "EventList", + "code": 65530, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x000F", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ], + "events": [ + { + "name": "CumulativeEnergyMeasured", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1 + }, + { + "name": "PeriodicEnergyMeasured", + "code": 1, + "mfgCode": null, + "side": "server", + "included": 1 + } + ] + }, + { + "name": "Energy EVSE", + "code": 153, + "mfgCode": null, + "define": "ENERGY_EVSE_CLUSTER", + "side": "server", + "enabled": 1, + "apiMaturity": "provisional", + "attributes": [ + { + "name": "State", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "StateEnum", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "SupplyState", + "code": 1, + "mfgCode": null, + "side": "server", + "type": "SupplyStateEnum", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FaultState", + "code": 2, + "mfgCode": null, + "side": "server", + "type": "FaultStateEnum", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ChargingEnabledUntil", + "code": 3, + "mfgCode": null, + "side": "server", + "type": "epoch_s", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "DischargingEnabledUntil", + "code": 4, + "mfgCode": null, + "side": "server", + "type": "epoch_s", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "CircuitCapacity", + "code": 5, + "mfgCode": null, + "side": "server", + "type": "amperage_ma", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "MinimumChargeCurrent", + "code": 6, + "mfgCode": null, + "side": "server", + "type": "amperage_ma", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "6000", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "MaximumChargeCurrent", + "code": 7, + "mfgCode": null, + "side": "server", + "type": "amperage_ma", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "MaximumDischargeCurrent", + "code": 8, + "mfgCode": null, + "side": "server", + "type": "amperage_ma", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "UserMaximumChargeCurrent", + "code": 9, + "mfgCode": null, + "side": "server", + "type": "amperage_ma", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "RandomizationDelayWindow", + "code": 10, + "mfgCode": null, + "side": "server", + "type": "elapsed_s", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "600", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "NumberOfWeeklyTargets", + "code": 33, + "mfgCode": null, + "side": "server", + "type": "int8u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "NumberOfDailyTargets", + "code": 34, + "mfgCode": null, + "side": "server", + "type": "int8u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "NextChargeStartTime", + "code": 35, + "mfgCode": null, + "side": "server", + "type": "epoch_s", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "NextChargeTargetTime", + "code": 36, + "mfgCode": null, + "side": "server", + "type": "epoch_s", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "NextChargeRequiredEnergy", + "code": 37, "mfgCode": null, "side": "server", - "type": "array", + "type": "energy_mwh", "included": 1, "storageOption": "External", "singleton": 0, @@ -11124,11 +11995,11 @@ "reportableChange": 0 }, { - "name": "AcceptedCommandList", - "code": 65529, + "name": "NextChargeTargetSoC", + "code": 38, "mfgCode": null, "side": "server", - "type": "array", + "type": "percent", "included": 1, "storageOption": "External", "singleton": 0, @@ -11140,79 +12011,59 @@ "reportableChange": 0 }, { - "name": "AttributeList", - "code": 65531, + "name": "ApproximateEVEfficiency", + "code": 39, "mfgCode": null, "side": "server", - "type": "array", + "type": "int16u", "included": 1, "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0xFFFF", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "FeatureMap", - "code": 65532, + "name": "StateOfCharge", + "code": 48, "mfgCode": null, "side": "server", - "type": "bitmap32", + "type": "percent", "included": 1, "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "7", + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "ClusterRevision", - "code": 65533, + "name": "BatteryCapacity", + "code": 49, "mfgCode": null, "side": "server", - "type": "int16u", + "type": "energy_mwh", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 - } - ] - }, - { - "name": "Activated Carbon Filter Monitoring", - "code": 114, - "mfgCode": null, - "define": "ACTIVATED_CARBON_FILTER_MONITORING_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [ - { - "name": "ResetCondition", - "code": 0, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - } - ], - "attributes": [ + }, { - "name": "Condition", - "code": 0, + "name": "VehicleID", + "code": 50, "mfgCode": null, "side": "server", - "type": "percent", + "type": "char_string", "included": 1, "storageOption": "External", "singleton": 0, @@ -11224,11 +12075,11 @@ "reportableChange": 0 }, { - "name": "DegradationDirection", - "code": 1, + "name": "SessionID", + "code": 64, "mfgCode": null, "side": "server", - "type": "DegradationDirectionEnum", + "type": "int32u", "included": 1, "storageOption": "External", "singleton": 0, @@ -11240,27 +12091,27 @@ "reportableChange": 0 }, { - "name": "ChangeIndication", - "code": 2, + "name": "SessionDuration", + "code": 65, "mfgCode": null, "side": "server", - "type": "ChangeIndicationEnum", + "type": "elapsed_s", "included": 1, "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "InPlaceIndicator", - "code": 3, + "name": "SessionEnergyCharged", + "code": 66, "mfgCode": null, "side": "server", - "type": "boolean", + "type": "energy_mwh", "included": 1, "storageOption": "External", "singleton": 0, @@ -11272,24 +12123,24 @@ "reportableChange": 0 }, { - "name": "LastChangedTime", - "code": 4, + "name": "SessionEnergyDischarged", + "code": 67, "mfgCode": null, "side": "server", - "type": "epoch_s", + "type": "energy_mwh", "included": 1, "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": null, + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "ReplacementProductList", - "code": 5, + "name": "GeneratedCommandList", + "code": 65528, "mfgCode": null, "side": "server", "type": "array", @@ -11304,8 +12155,8 @@ "reportableChange": 0 }, { - "name": "GeneratedCommandList", - "code": 65528, + "name": "AcceptedCommandList", + "code": 65529, "mfgCode": null, "side": "server", "type": "array", @@ -11313,15 +12164,15 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "AcceptedCommandList", - "code": 65529, + "name": "EventList", + "code": 65530, "mfgCode": null, "side": "server", "type": "array", @@ -11329,7 +12180,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11345,7 +12196,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11358,10 +12209,10 @@ "side": "server", "type": "bitmap32", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "7", + "defaultValue": "0", "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11377,7 +12228,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": "2", "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11813,7 +12664,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11829,7 +12680,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11845,7 +12696,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11892,6 +12743,7 @@ "define": "BARRIER_CONTROL_CLUSTER", "side": "server", "enabled": 1, + "apiMaturity": "deprecated", "commands": [ { "name": "BarrierControlGoToPercent", @@ -12442,7 +13294,7 @@ "code": 0, "mfgCode": null, "side": "server", - "type": "int16s", + "type": "temperature", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12458,7 +13310,7 @@ "code": 3, "mfgCode": null, "side": "server", - "type": "int16s", + "type": "temperature", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12474,7 +13326,7 @@ "code": 4, "mfgCode": null, "side": "server", - "type": "int16s", + "type": "temperature", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12490,7 +13342,7 @@ "code": 5, "mfgCode": null, "side": "server", - "type": "int16s", + "type": "temperature", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12506,7 +13358,7 @@ "code": 6, "mfgCode": null, "side": "server", - "type": "int16s", + "type": "temperature", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12634,7 +13486,7 @@ "code": 27, "mfgCode": null, "side": "server", - "type": "ThermostatControlSequence", + "type": "ControlSequenceOfOperationEnum", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12650,7 +13502,7 @@ "code": 28, "mfgCode": null, "side": "server", - "type": "enum8", + "type": "SystemModeEnum", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -12671,7 +13523,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -12687,7 +13539,23 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "EventList", + "code": 65530, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -12703,7 +13571,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -14349,7 +15217,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -14365,7 +15233,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -14381,7 +15249,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15059,7 +15927,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "401", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15075,7 +15943,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "50", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15091,7 +15959,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1500", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15107,7 +15975,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "511", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15123,7 +15991,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "3600", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15139,7 +16007,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "213", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15155,7 +16023,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "3600", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15171,7 +16039,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "10", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15187,7 +16055,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15203,7 +16071,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15219,7 +16087,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "3", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15235,7 +16103,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15251,7 +16119,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15267,7 +16135,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15283,7 +16151,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15325,7 +16193,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "458", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15341,7 +16209,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "300", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15357,7 +16225,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "2000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15373,7 +16241,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "523", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15389,7 +16257,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "3600", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15405,7 +16273,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "421", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15421,7 +16289,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "3600", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15437,7 +16305,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15453,7 +16321,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15469,7 +16337,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15485,7 +16353,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15501,7 +16369,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15517,7 +16385,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15533,7 +16401,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15549,7 +16417,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15591,7 +16459,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "3", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15607,7 +16475,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15623,7 +16491,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "150", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15639,7 +16507,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "3", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15655,7 +16523,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "120", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15671,7 +16539,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "3", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15687,7 +16555,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "120", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15703,7 +16571,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15719,7 +16587,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15735,7 +16603,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15751,7 +16619,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15767,7 +16635,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15783,7 +16651,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15799,7 +16667,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15815,7 +16683,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15857,7 +16725,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "10", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15873,7 +16741,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "3", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15889,7 +16757,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "300", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15905,7 +16773,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "50", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15921,7 +16789,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "3600", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15937,7 +16805,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "20", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15953,7 +16821,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "3600", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15969,7 +16837,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -15985,7 +16853,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16001,7 +16869,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16017,7 +16885,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16033,7 +16901,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16049,7 +16917,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16065,7 +16933,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16081,7 +16949,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16123,7 +16991,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "42", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16139,7 +17007,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16155,7 +17023,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "400", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16171,7 +17039,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "90", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16187,7 +17055,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "3600", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16203,7 +17071,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "35", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16219,7 +17087,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "3600", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16235,7 +17103,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "4", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16251,7 +17119,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "4", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16267,7 +17135,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16283,7 +17151,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16299,7 +17167,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16315,7 +17183,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16331,7 +17199,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16347,7 +17215,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16389,7 +17257,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "10", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16405,7 +17273,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16421,7 +17289,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "200", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16437,7 +17305,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "10", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16453,7 +17321,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "7200", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16469,7 +17337,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16485,7 +17353,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "7200", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16501,7 +17369,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16517,7 +17385,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "3", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16533,7 +17401,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16549,7 +17417,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16565,7 +17433,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16581,7 +17449,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16597,7 +17465,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16613,7 +17481,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16655,7 +17523,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "39", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16671,7 +17539,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16687,7 +17555,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "400", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16703,7 +17571,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "70", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16719,7 +17587,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "3600", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16735,7 +17603,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "41", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16751,7 +17619,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "3600", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16767,7 +17635,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "4", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16783,7 +17651,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "4", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16799,7 +17667,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16815,7 +17683,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16831,7 +17699,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16847,7 +17715,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16863,7 +17731,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16879,7 +17747,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16921,7 +17789,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "7", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16937,7 +17805,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16953,7 +17821,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "400", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16969,7 +17837,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "49", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -16985,7 +17853,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "3600", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17001,7 +17869,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "43", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17017,7 +17885,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "3600", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17033,7 +17901,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17049,7 +17917,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "4", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17065,7 +17933,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17081,7 +17949,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17097,7 +17965,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17113,7 +17981,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17129,7 +17997,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17145,7 +18013,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17187,7 +18055,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17203,7 +18071,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17219,7 +18087,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "100", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17235,7 +18103,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "8", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17251,7 +18119,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "3600", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17267,7 +18135,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17283,7 +18151,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "3600", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17299,7 +18167,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17315,7 +18183,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17331,7 +18199,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17347,7 +18215,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17363,7 +18231,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17379,7 +18247,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17395,7 +18263,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17411,7 +18279,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17453,7 +18321,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "10", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17469,7 +18337,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17485,7 +18353,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "100", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17501,7 +18369,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "36", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17517,7 +18385,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "3600", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17533,7 +18401,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "20", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17549,7 +18417,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "3600", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17565,7 +18433,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17581,7 +18449,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17597,7 +18465,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17613,7 +18481,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "3", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17629,7 +18497,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17645,7 +18513,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17661,7 +18529,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17677,7 +18545,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -17818,6 +18686,7 @@ "define": "ELECTRICAL_MEASUREMENT_CLUSTER", "side": "server", "enabled": 1, + "apiMaturity": "deprecated", "attributes": [ { "name": "measurement type", @@ -18674,7 +19543,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -18690,7 +19559,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -18706,7 +19575,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -18818,7 +19687,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -18850,7 +19719,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -18930,7 +19799,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -18946,7 +19815,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -18978,7 +19847,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -18994,7 +19863,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -19458,7 +20327,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -19699,7 +20568,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -19715,7 +20584,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -19731,7 +20600,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -19747,7 +20616,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -19903,7 +20772,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -19919,7 +20788,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -19935,7 +20804,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -19951,7 +20820,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -20209,10 +21078,10 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -20228,7 +21097,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -20244,7 +21113,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -20260,7 +21129,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -20276,7 +21145,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -20464,7 +21333,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -20480,7 +21349,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -20496,7 +21365,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -20512,7 +21381,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -20570,7 +21439,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -20586,7 +21455,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -20602,7 +21471,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -20618,7 +21487,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -20634,7 +21503,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -20650,7 +21519,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -20666,7 +21535,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -20682,7 +21551,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -20698,7 +21567,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -20730,7 +21599,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -20852,7 +21721,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -20868,7 +21737,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -20884,7 +21753,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -20900,7 +21769,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -20916,7 +21785,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -21093,7 +21962,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -21109,7 +21978,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -21125,7 +21994,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -21141,7 +22010,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -21157,7 +22026,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -21173,7 +22042,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -21189,7 +22058,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -21205,7 +22074,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -21237,7 +22106,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -21353,7 +22222,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -21465,7 +22334,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -21481,7 +22350,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -21497,7 +22366,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -21513,7 +22382,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -21585,8 +22454,6 @@ "endpointId": 65534, "networkId": 0 } - - ] -} - - + ], + "log": [] +} \ No newline at end of file diff --git a/examples/all-clusters-app/all-clusters-common/include/EnergyEvseDelegateImpl.h b/examples/all-clusters-app/all-clusters-common/include/EnergyEvseDelegateImpl.h new file mode 100644 index 00000000000000..0a967e2472be8b --- /dev/null +++ b/examples/all-clusters-app/all-clusters-common/include/EnergyEvseDelegateImpl.h @@ -0,0 +1,196 @@ +/* + * + * Copyright (c) 2023 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include "app/clusters/energy-evse-server/energy-evse-server.h" + +#include +#include +#include + +using chip::Protocols::InteractionModel::Status; +namespace chip { +namespace app { +namespace Clusters { +namespace EnergyEvse { + +/** + * The application delegate. + */ + +class EnergyEvseDelegate : public EnergyEvse::Delegate +{ +public: + ~EnergyEvseDelegate(); + + /** + * @brief Called when EVSE cluster receives Disable command + */ + Status Disable() override; + + /** + * @brief Called when EVSE cluster receives EnableCharging command + * + * @param chargingEnabledUntil + * @param minimumChargeCurrent (in mA) + * @param maximumChargeCurrent (in mA) + */ + Status EnableCharging(const DataModel::Nullable & chargingEnabledUntil, const int64_t & minimumChargeCurrent, + const int64_t & maximumChargeCurrent) override; + + /** + * @brief Called when EVSE cluster receives EnableDischarging command + * + * @param dischargingEnabledUntil + * @param maximumChargeCurrent (in mA) + */ + Status EnableDischarging(const DataModel::Nullable & dischargingEnabledUntil, + const int64_t & maximumDischargeCurrent) override; + + /** + * @brief Called when EVSE cluster receives StartDiagnostics command + */ + Status StartDiagnostics() override; + + // ----------------------------------------------------------------- + // Internal API to allow an EVSE to change its internal state etc + // TODO Status HwRegisterEvseHardwareCallback(Callback); + Status HwSetMaxHardwareCurrentLimit(int64_t currentmA); + Status HwSetCircuitCapacity(int64_t currentmA); + Status HwSetCableAssemblyLimit(int64_t currentmA); + Status HwSetState(StateEnum state); + Status HwSetFault(FaultStateEnum fault); + Status HwSetRFID(ByteSpan uid); + Status HwSetVehicleID(const CharSpan & vehID); + + // ------------------------------------------------------------------ + // Get attribute methods + StateEnum GetState() override; + CHIP_ERROR SetState(StateEnum); + + SupplyStateEnum GetSupplyState() override; + CHIP_ERROR SetSupplyState(SupplyStateEnum); + + FaultStateEnum GetFaultState() override; + CHIP_ERROR SetFaultState(FaultStateEnum); + + DataModel::Nullable GetChargingEnabledUntil() override; + CHIP_ERROR SetChargingEnabledUntil(uint32_t); + + DataModel::Nullable GetDischargingEnabledUntil() override; + CHIP_ERROR SetDischargingEnabledUntil(uint32_t); + + int64_t GetCircuitCapacity() override; + CHIP_ERROR SetCircuitCapacity(int64_t); + + int64_t GetMinimumChargeCurrent() override; + CHIP_ERROR SetMinimumChargeCurrent(int64_t); + + int64_t GetMaximumChargeCurrent() override; + CHIP_ERROR SetMaximumChargeCurrent(int64_t); + + int64_t GetMaximumDischargeCurrent() override; + CHIP_ERROR SetMaximumDischargeCurrent(int64_t); + + int64_t GetUserMaximumChargeCurrent() override; + CHIP_ERROR SetUserMaximumChargeCurrent(int64_t) override; + + uint32_t GetRandomizationDelayWindow() override; + CHIP_ERROR SetRandomizationDelayWindow(uint32_t) override; + + /* PREF attributes */ + uint8_t GetNumberOfWeeklyTargets() override; + uint8_t GetNumberOfDailyTargets() override; + DataModel::Nullable GetNextChargeStartTime() override; + DataModel::Nullable GetNextChargeTargetTime() override; + DataModel::Nullable GetNextChargeRequiredEnergy() override; + DataModel::Nullable GetNextChargeTargetSoC() override; + + DataModel::Nullable GetApproximateEVEfficiency() override; + CHIP_ERROR SetApproximateEVEfficiency(uint16_t) override; + + /* SOC attributes */ + DataModel::Nullable GetStateOfCharge() override; + DataModel::Nullable GetBatteryCapacity() override; + /* PNC attributes*/ + DataModel::Nullable GetVehicleID() override; + /* Session SESS attributes */ + DataModel::Nullable GetSessionID() override; + DataModel::Nullable GetSessionDuration() override; + DataModel::Nullable GetSessionEnergyCharged() override; + DataModel::Nullable GetSessionEnergyDischarged() override; + +private: + /* Constants */ + static constexpr int DEFAULT_MIN_CHARGE_CURRENT = 6000; /* 6A */ + static constexpr int DEFAULT_USER_MAXIMUM_CHARGE_CURRENT = kMaximumChargeCurrent; /* 80A */ + static constexpr int DEFAULT_RANDOMIZATION_DELAY_WINDOW = 600; /* 600s */ + static constexpr int kMaxVehicleIDBufSize = 32; + + /* private variables for controlling the hardware - these are not attributes */ + int64_t mMaxHardwareCurrentLimit = 0; /* Hardware current limit in mA */ + int64_t mCableAssemblyCurrentLimit = 0; /* Cable limit detected when cable is plugged in, in mA */ + int64_t mMaximumChargingCurrentLimitFromCommand = 0; /* Value of current maximum limit when charging enabled */ + int64_t mActualChargingCurrentLimit = 0; + StateEnum mHwState = StateEnum::kNotPluggedIn; /* Hardware state */ + + /** + * @brief Helper function to work out the charge limit based on conditions and settings + */ + Status ComputeMaxChargeCurrentLimit(); + + /* Attributes */ + StateEnum mState = StateEnum::kNotPluggedIn; + SupplyStateEnum mSupplyState = SupplyStateEnum::kDisabled; + FaultStateEnum mFaultState = FaultStateEnum::kNoError; + DataModel::Nullable mChargingEnabledUntil; // TODO Default to 0 to indicate disabled + DataModel::Nullable mDischargingEnabledUntil; // TODO Default to 0 to indicate disabled + int64_t mCircuitCapacity = 0; + int64_t mMinimumChargeCurrent = DEFAULT_MIN_CHARGE_CURRENT; + int64_t mMaximumChargeCurrent = 0; + int64_t mMaximumDischargeCurrent = 0; + int64_t mUserMaximumChargeCurrent = DEFAULT_USER_MAXIMUM_CHARGE_CURRENT; // TODO update spec + uint32_t mRandomizationDelayWindow = DEFAULT_RANDOMIZATION_DELAY_WINDOW; + /* PREF attributes */ + uint8_t mNumberOfWeeklyTargets = 0; + uint8_t mNumberOfDailyTargets = 1; + DataModel::Nullable mNextChargeStartTime; + DataModel::Nullable mNextChargeTargetTime; + DataModel::Nullable mNextChargeRequiredEnergy; + DataModel::Nullable mNextChargeTargetSoC; + DataModel::Nullable mApproximateEVEfficiency; + + /* SOC attributes */ + DataModel::Nullable mStateOfCharge; + DataModel::Nullable mBatteryCapacity; + + /* PNC attributes*/ + DataModel::Nullable mVehicleID; + + /* Session SESS attributes */ + DataModel::Nullable mSessionID; + DataModel::Nullable mSessionDuration; + DataModel::Nullable mSessionEnergyCharged; + DataModel::Nullable mSessionEnergyDischarged; +}; + +} // namespace EnergyEvse +} // namespace Clusters +} // namespace app +} // namespace chip diff --git a/examples/all-clusters-app/all-clusters-common/include/EnergyEvseManager.h b/examples/all-clusters-app/all-clusters-common/include/EnergyEvseManager.h new file mode 100644 index 00000000000000..9875c397990ef2 --- /dev/null +++ b/examples/all-clusters-app/all-clusters-common/include/EnergyEvseManager.h @@ -0,0 +1,57 @@ +/* + * + * Copyright (c) 2023 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include +#include +#include +#include + +namespace chip { +namespace app { +namespace Clusters { + +using namespace chip::app::Clusters::EnergyEvse; +class EnergyEvseManager : public Instance +{ +public: + EnergyEvseManager(EndpointId aEndpointId, EnergyEvseDelegate & aDelegate, Feature aFeature, OptionalAttributes aOptionalAttrs, + OptionalCommands aOptionalCmds) : + EnergyEvse::Instance(aEndpointId, aDelegate, aFeature, aOptionalAttrs, aOptionalCmds) + { + mDelegate = &aDelegate; + } + + // Delete copy constructor and assignment operator. + EnergyEvseManager(const EnergyEvseManager &) = delete; + EnergyEvseManager(const EnergyEvseManager &&) = delete; + EnergyEvseManager & operator=(const EnergyEvseManager &) = delete; + + CHIP_ERROR Init(); + void Shutdown(); + + EnergyEvseDelegate * GetDelegate() { return mDelegate; }; + +private: + EnergyEvseDelegate * mDelegate; +}; + +} // namespace Clusters +} // namespace app +} // namespace chip diff --git a/examples/all-clusters-app/all-clusters-common/include/microwave-oven-mode.h b/examples/all-clusters-app/all-clusters-common/include/microwave-oven-mode.h new file mode 100644 index 00000000000000..dd5d5b4bcaf2eb --- /dev/null +++ b/examples/all-clusters-app/all-clusters-common/include/microwave-oven-mode.h @@ -0,0 +1,72 @@ +/* + * + * Copyright (c) 2023 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include +#include +#include +#include +#include + +namespace chip { +namespace app { +namespace Clusters { + +namespace MicrowaveOvenMode { + +const uint8_t ModeNormal = 0; +const uint8_t ModeDefrost = 1; + +/// This is an application level delegate to handle MicrowaveOvenMode commands according to the specific business logic. +class ExampleMicrowaveOvenModeDelegate : public ModeBase::Delegate +{ +private: + using ModeTagStructType = detail::Structs::ModeTagStruct::Type; + ModeTagStructType modeTagsNormal[1] = { { .value = to_underlying(ModeTag::kNormal) } }; + ModeTagStructType modeTagsDefrost[1] = { { .value = to_underlying(ModeTag::kDefrost) } }; + + const detail::Structs::ModeOptionStruct::Type kModeOptions[2] = { + detail::Structs::ModeOptionStruct::Type{ .label = CharSpan::fromCharString("Normal"), + .mode = ModeNormal, + .modeTags = DataModel::List(modeTagsNormal) }, + detail::Structs::ModeOptionStruct::Type{ .label = CharSpan::fromCharString("Defrost"), + .mode = ModeDefrost, + .modeTags = DataModel::List(modeTagsDefrost) } + }; + + CHIP_ERROR Init() override; + void HandleChangeToMode(uint8_t mode, ModeBase::Commands::ChangeToModeResponse::Type & response) override; + + CHIP_ERROR GetModeLabelByIndex(uint8_t modeIndex, MutableCharSpan & label) override; + CHIP_ERROR GetModeValueByIndex(uint8_t modeIndex, uint8_t & value) override; + CHIP_ERROR GetModeTagsByIndex(uint8_t modeIndex, DataModel::List & tags) override; + +public: + ~ExampleMicrowaveOvenModeDelegate() override = default; +}; + +ModeBase::Instance * Instance(); + +void Shutdown(); + +} // namespace MicrowaveOvenMode + +} // namespace Clusters +} // namespace app +} // namespace chip diff --git a/examples/all-clusters-app/all-clusters-common/src/EnergyEvseDelegateImpl.cpp b/examples/all-clusters-app/all-clusters-common/src/EnergyEvseDelegateImpl.cpp new file mode 100644 index 00000000000000..64d8b98bafc644 --- /dev/null +++ b/examples/all-clusters-app/all-clusters-common/src/EnergyEvseDelegateImpl.cpp @@ -0,0 +1,793 @@ +/* + * + * Copyright (c) 2023 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include + +using namespace chip; +using namespace chip::app; +using namespace chip::app::DataModel; +using namespace chip::app::Clusters; +using namespace chip::app::Clusters::EnergyEvse; +using namespace chip::app::Clusters::EnergyEvse::Attributes; + +using chip::app::LogEvent; +using chip::Protocols::InteractionModel::Status; + +EnergyEvseDelegate::~EnergyEvseDelegate() +{ + // TODO Fix this as part of issue #30993 refactoring + if (!mVehicleID.IsNull()) + { + ChipLogDetail(AppServer, "Freeing VehicleID"); + delete[] mVehicleID.Value().data(); + } +} + +/** + * @brief Called when EVSE cluster receives Disable command + */ +Status EnergyEvseDelegate::Disable() +{ + ChipLogProgress(AppServer, "EnergyEvseDelegate::Disable()"); + + /* Update State */ + switch (mHwState) + { + case StateEnum::kNotPluggedIn: + SetState(StateEnum::kNotPluggedIn); + break; + + case StateEnum::kPluggedInNoDemand: + SetState(StateEnum::kPluggedInNoDemand); + break; + + case StateEnum::kPluggedInDemand: + SetState(StateEnum::kPluggedInDemand); + break; + + default: + ChipLogError(AppServer, "Unexpected EVSE hardware state"); + SetState(StateEnum::kFault); + break; + } + + /* update SupplyState */ + SetSupplyState(SupplyStateEnum::kDisabled); + + /* update ChargingEnabledUntil & DischargingEnabledUntil to show 0 */ + SetChargingEnabledUntil(0); + SetDischargingEnabledUntil(0); + + /* update MinimumChargeCurrent & MaximumChargeCurrent to 0 */ + SetMinimumChargeCurrent(0); + SetMaximumChargeCurrent(0); + + /* update MaximumDischargeCurrent to 0 */ + SetMaximumDischargeCurrent(0); + + // TODO: Generate events + + return Status::Success; +} + +/** + * @brief Called when EVSE cluster receives EnableCharging command + * + * @param chargingEnabledUntil (can be null to indefinite charging) + * @param minimumChargeCurrent (in mA) + * @param maximumChargeCurrent (in mA) + */ +Status EnergyEvseDelegate::EnableCharging(const DataModel::Nullable & chargingEnabledUntil, + const int64_t & minimumChargeCurrent, const int64_t & maximumChargeCurrent) +{ + ChipLogProgress(AppServer, "EnergyEvseDelegate::EnableCharging()"); + + if (maximumChargeCurrent < kMinimumChargeCurrent || maximumChargeCurrent > kMaximumChargeCurrent) + { + ChipLogError(NotSpecified, "Maximum Current outside limits"); + return Status::ConstraintError; + } + + if (minimumChargeCurrent < kMinimumChargeCurrent || minimumChargeCurrent > kMaximumChargeCurrent) + { + ChipLogError(NotSpecified, "Maximum Current outside limits"); + return Status::ConstraintError; + } + + if (minimumChargeCurrent > maximumChargeCurrent) + { + ChipLogError(NotSpecified, "Minium Current > Maximum Current!"); + return Status::ConstraintError; + } + + if (chargingEnabledUntil.IsNull()) + { + /* Charging enabled indefinitely */ + ChipLogError(NotSpecified, "Charging enabled indefinitely"); + } + else + { + /* check chargingEnabledUntil is in the future */ + ChipLogError(NotSpecified, "Charging enabled until: %lu", static_cast(chargingEnabledUntil.Value())); + // TODO + // if (checkChargingEnabled) + } + + /* Check current state isn't already enabled */ + + /* If charging is already enabled, check that the parameters may have + changed, these may override an existing charging command */ + switch (mHwState) + { + case StateEnum::kNotPluggedIn: + // TODO handle errors here + SetState(StateEnum::kNotPluggedIn); + break; + + case StateEnum::kPluggedInNoDemand: + // TODO handle errors here + // TODO REFACTOR per Andrei's comment in PR30857 - can we collapse this switch statement? + SetState(StateEnum::kPluggedInNoDemand); + break; + + case StateEnum::kPluggedInDemand: + /* If the EVSE is asking for demand then enable charging */ + SetState(StateEnum::kPluggedInCharging); + break; + + default: + ChipLogError(AppServer, "Unexpected EVSE hardware state"); + SetState(StateEnum::kFault); + break; + } + + /* update SupplyState to say that charging is now enabled */ + SetSupplyState(SupplyStateEnum::kChargingEnabled); + + /* If it looks ok, store the min & max charging current */ + mMaximumChargingCurrentLimitFromCommand = maximumChargeCurrent; + SetMinimumChargeCurrent(minimumChargeCurrent); + // TODO persist these to KVS + + // TODO: Generate events + + return this->ComputeMaxChargeCurrentLimit(); +} + +/** + * @brief Called when EVSE cluster receives EnableDischarging command + * + * @param dischargingEnabledUntil (can be null to indefinite discharging) + * @param maximumChargeCurrent (in mA) + */ +Status EnergyEvseDelegate::EnableDischarging(const DataModel::Nullable & dischargingEnabledUntil, + const int64_t & maximumDischargeCurrent) +{ + ChipLogProgress(AppServer, "EnergyEvseDelegate::EnableDischarging() called."); + + /* update SupplyState */ + SetSupplyState(SupplyStateEnum::kDischargingEnabled); + + // TODO: Generate events + + return Status::Success; +} + +/** + * @brief Called when EVSE cluster receives StartDiagnostics command + */ +Status EnergyEvseDelegate::StartDiagnostics() +{ + /* For EVSE manufacturers to customize */ + ChipLogProgress(AppServer, "EnergyEvseDelegate::StartDiagnostics()"); + + /* update SupplyState */ + SetSupplyState(SupplyStateEnum::kDisabledDiagnostics); + + // TODO: Generate events + + return Status::Success; +} + +/* --------------------------------------------------------------------------- + * FUNCTIONS BELOW: + * - EVSE Hardware interface + * + * SetMaxHardwareCurrentLimit( currentmA ) + * SetCircuitCapacity( currentmA ) + * SetCableAssemblyLimit( currentmA ) + * SetState( EVSEStateEnum ) + * SetFault + * + */ + +/** + * @brief Called by EVSE Hardware to notify the delegate of the maximum + * current limit supported by the hardware. + * + * This is normally called at start-up. + * + * @param currentmA - Maximum current limit supported by the hardware + */ +Status EnergyEvseDelegate::HwSetMaxHardwareCurrentLimit(int64_t currentmA) +{ + if (currentmA < kMinimumChargeCurrent || currentmA > kMaximumChargeCurrent) + { + return Status::ConstraintError; + } + + /* there is no attribute to store this so store in private variable */ + mMaxHardwareCurrentLimit = currentmA; + + return this->ComputeMaxChargeCurrentLimit(); +} + +/** + * @brief Called by EVSE Hardware to notify the delegate of maximum electrician + * set current limit. + * + * This is normally called at start-up when reading from DIP-switch + * settings. + * + * @param currentmA - Maximum current limit specified by electrician + */ +Status EnergyEvseDelegate::HwSetCircuitCapacity(int64_t currentmA) +{ + if (currentmA < kMinimumChargeCurrent || currentmA > kMaximumChargeCurrent) + { + return Status::ConstraintError; + } + + mCircuitCapacity = currentmA; + MatterReportingAttributeChangeCallback(mEndpointId, EnergyEvse::Id, CircuitCapacity::Id); + + return this->ComputeMaxChargeCurrentLimit(); +} + +/** + * @brief Called by EVSE Hardware to notify the delegate of the cable assembly + * current limit. + * + * This is normally called when the EV is plugged into the EVSE and the + * PP voltage is measured by the EVSE. A pull-up resistor in the cable + * causes a voltage drop. Different current limits can be indicated + * using different resistors, which results in different voltages + * measured by the EVSE. + * + * @param currentmA - Maximum current limit detected from Cable assembly + */ +Status EnergyEvseDelegate::HwSetCableAssemblyLimit(int64_t currentmA) +{ + if (currentmA < kMinimumChargeCurrent || currentmA > kMaximumChargeCurrent) + { + return Status::ConstraintError; + } + + /* there is no attribute to store this so store in private variable */ + mCableAssemblyCurrentLimit = currentmA; + + return this->ComputeMaxChargeCurrentLimit(); +} + +/** + * @brief Called by EVSE Hardware to indicate if EV is detected + * + * The only allowed states that the EVSE hardware can set are: + * kNotPluggedIn + * kPluggedInNoDemand + * kPluggedInDemand + * + * @param StateEnum - the state of the EV being plugged in and asking for demand etc + */ +Status EnergyEvseDelegate::HwSetState(StateEnum state) +{ + switch (state) + { + case StateEnum::kNotPluggedIn: + // TODO - work out logic here + mHwState = state; + break; + case StateEnum::kPluggedInNoDemand: + // TODO - work out logic here + mHwState = state; + break; + case StateEnum::kPluggedInDemand: + // TODO - work out logic here + mHwState = state; + break; + + default: + /* All other states should be managed by the Delegate */ + // TODO (assert?) + break; + } + + return Status::Success; +} + +/** + * @brief Called by EVSE Hardware to indicate a fault + * + * @param FaultStateEnum - the fault condition detected + */ +Status EnergyEvseDelegate::HwSetFault(FaultStateEnum fault) +{ + ChipLogProgress(AppServer, "EnergyEvseDelegate::Fault()"); + + if (fault == FaultStateEnum::kNoError) + { + /* Update State to previous state */ + // TODO: need to work out the logic here! + + /* Update SupplyState to previous state */ + } + else + { + /* Update State & SupplyState */ + SetState(StateEnum::kFault); + SetSupplyState(SupplyStateEnum::kDisabledError); + } + + /* Update FaultState */ + SetFaultState(fault); + + // TODO: Generate events + + return Status::Success; +} + +/** + * @brief Called by EVSE Hardware to Send a RFID event + * + * @param ByteSpan RFID tag value (max 10 octets) + */ +Status EnergyEvseDelegate::HwSetRFID(ByteSpan uid) +{ + Events::Rfid::Type event{ .uid = uid }; + EventNumber eventNumber; + CHIP_ERROR error = LogEvent(event, mEndpointId, eventNumber); + if (CHIP_NO_ERROR != error) + { + ChipLogError(Zcl, "[Notify] Unable to send notify event: %s [endpointId=%d]", error.AsString(), mEndpointId); + return Status::Failure; + } + + return Status::Success; +} + +/** + * @brief Called by EVSE Hardware to share the VehicleID + * + * This routine will make a copy of the string so the callee doesn't + * have to hold onto it forever. + * + * @param CharSpan containing up to 32 chars. + */ +Status EnergyEvseDelegate::HwSetVehicleID(const CharSpan & newValue) +{ + // TODO this code to be refactored - See Issue #30993 + if (!mVehicleID.IsNull() && newValue.data_equal(mVehicleID.Value())) + { + return Status::Success; + } + + /* create a copy of the string so the callee doesn't have to keep it */ + char * destinationBuffer = new char[kMaxVehicleIDBufSize]; + + MutableCharSpan destinationString(destinationBuffer, kMaxVehicleIDBufSize); + CHIP_ERROR err = CopyCharSpanToMutableCharSpan(newValue, destinationString); + if (err != CHIP_NO_ERROR) + { + ChipLogError(AppServer, "HwSetVehicleID - could not copy vehicleID"); + delete[] destinationBuffer; + return Status::Failure; + } + + if (!mVehicleID.IsNull()) + { + delete[] mVehicleID.Value().data(); + } + + mVehicleID = MakeNullable(static_cast(destinationString)); + + ChipLogDetail(AppServer, "VehicleID updated %.*s", static_cast(mVehicleID.Value().size()), mVehicleID.Value().data()); + MatterReportingAttributeChangeCallback(mEndpointId, EnergyEvse::Id, VehicleID::Id); + + return Status::Success; +} + +/* --------------------------------------------------------------------------- + * Functions below are private helper functions internal to the delegate + */ + +/** + * @brief Called to compute the safe charging current limit + */ +Status EnergyEvseDelegate::ComputeMaxChargeCurrentLimit() +{ + int64_t oldValue; + /* mActualChargingCurrentLimit is the minimum of: + * - MaxHardwareCurrentLimit (of the hardware) + * - CircuitCapacity (set by the electrician - less than the hardware) + * - CableAssemblyLimit (detected when the cable is inserted) + * - MaximumChargeCurrent (from charging command) + * - UserMaximumChargeCurrent (could dynamically change) + */ + + oldValue = mActualChargingCurrentLimit; + mActualChargingCurrentLimit = mMaxHardwareCurrentLimit; + mActualChargingCurrentLimit = min(mActualChargingCurrentLimit, mCircuitCapacity); + mActualChargingCurrentLimit = min(mActualChargingCurrentLimit, mCableAssemblyCurrentLimit); + mActualChargingCurrentLimit = min(mActualChargingCurrentLimit, mMaximumChargingCurrentLimitFromCommand); + mActualChargingCurrentLimit = min(mActualChargingCurrentLimit, mUserMaximumChargeCurrent); + + /* Set the actual max charging current attribute */ + mMaximumChargeCurrent = mActualChargingCurrentLimit; + + if (oldValue != mMaximumChargeCurrent) + { + ChipLogDetail(AppServer, "MaximumChargeCurrent updated to %ld", static_cast(mMaximumChargeCurrent)); + MatterReportingAttributeChangeCallback(mEndpointId, EnergyEvse::Id, MaximumChargeCurrent::Id); + + /* Call the EV Charger hardware current limit callback */ + // TODO + } + return Status::Success; +} + +/** + * Attribute methods + */ +/* State */ +StateEnum EnergyEvseDelegate::GetState() +{ + return mState; +} + +CHIP_ERROR EnergyEvseDelegate::SetState(StateEnum newValue) +{ + StateEnum oldValue = mState; + if (newValue >= StateEnum::kUnknownEnumValue) + { + return CHIP_IM_GLOBAL_STATUS(ConstraintError); + } + + mState = newValue; + if (oldValue != mState) + { + ChipLogDetail(AppServer, "State updated to %d", static_cast(mState)); + MatterReportingAttributeChangeCallback(mEndpointId, EnergyEvse::Id, State::Id); + } + + return CHIP_NO_ERROR; +} + +/* SupplyState */ +SupplyStateEnum EnergyEvseDelegate::GetSupplyState() +{ + return mSupplyState; +} + +CHIP_ERROR EnergyEvseDelegate::SetSupplyState(SupplyStateEnum newValue) +{ + SupplyStateEnum oldValue = mSupplyState; + + if (newValue >= SupplyStateEnum::kUnknownEnumValue) + { + return CHIP_IM_GLOBAL_STATUS(ConstraintError); + } + + mSupplyState = newValue; + if (oldValue != mSupplyState) + { + ChipLogDetail(AppServer, "SupplyState updated to %d", static_cast(mSupplyState)); + MatterReportingAttributeChangeCallback(mEndpointId, EnergyEvse::Id, SupplyState::Id); + } + return CHIP_NO_ERROR; +} + +/* FaultState */ +FaultStateEnum EnergyEvseDelegate::GetFaultState() +{ + return mFaultState; +} + +CHIP_ERROR EnergyEvseDelegate::SetFaultState(FaultStateEnum newValue) +{ + FaultStateEnum oldValue = mFaultState; + + if (newValue >= FaultStateEnum::kUnknownEnumValue) + { + return CHIP_IM_GLOBAL_STATUS(ConstraintError); + } + + mFaultState = newValue; + if (oldValue != mFaultState) + { + ChipLogDetail(AppServer, "FaultState updated to %d", static_cast(mFaultState)); + MatterReportingAttributeChangeCallback(mEndpointId, EnergyEvse::Id, FaultState::Id); + } + return CHIP_NO_ERROR; +} + +/* ChargingEnabledUntil */ +DataModel::Nullable EnergyEvseDelegate::GetChargingEnabledUntil() +{ + return mChargingEnabledUntil; +} + +CHIP_ERROR EnergyEvseDelegate::SetChargingEnabledUntil(uint32_t newValue) +{ + DataModel::Nullable oldValue = mChargingEnabledUntil; + + mChargingEnabledUntil = MakeNullable(newValue); + if ((oldValue.IsNull()) || (oldValue.Value() != newValue)) + { + ChipLogDetail(AppServer, "ChargingEnabledUntil updated to %lu", + static_cast(mChargingEnabledUntil.Value())); + MatterReportingAttributeChangeCallback(mEndpointId, EnergyEvse::Id, ChargingEnabledUntil::Id); + } + return CHIP_NO_ERROR; +} + +/* DischargingEnabledUntil */ +DataModel::Nullable EnergyEvseDelegate::GetDischargingEnabledUntil() +{ + return mDischargingEnabledUntil; +} + +CHIP_ERROR EnergyEvseDelegate::SetDischargingEnabledUntil(uint32_t newValue) +{ + DataModel::Nullable oldValue = mDischargingEnabledUntil; + + mDischargingEnabledUntil = MakeNullable(newValue); + if ((oldValue.IsNull()) || (oldValue.Value() != newValue)) + { + ChipLogDetail(AppServer, "DischargingEnabledUntil updated to %lu", + static_cast(mDischargingEnabledUntil.Value())); + MatterReportingAttributeChangeCallback(mEndpointId, EnergyEvse::Id, DischargingEnabledUntil::Id); + } + return CHIP_NO_ERROR; +} + +/* CircuitCapacity */ +int64_t EnergyEvseDelegate::GetCircuitCapacity() +{ + return mCircuitCapacity; +} + +CHIP_ERROR EnergyEvseDelegate::SetCircuitCapacity(int64_t newValue) +{ + int64_t oldValue = mCircuitCapacity; + + if (newValue >= kMaximumChargeCurrent) + { + return CHIP_IM_GLOBAL_STATUS(ConstraintError); + } + + mCircuitCapacity = newValue; + if (oldValue != mCircuitCapacity) + { + ChipLogDetail(AppServer, "CircuitCapacity updated to %ld", static_cast(mCircuitCapacity)); + MatterReportingAttributeChangeCallback(mEndpointId, EnergyEvse::Id, CircuitCapacity::Id); + } + return CHIP_NO_ERROR; +} + +/* MinimumChargeCurrent */ +int64_t EnergyEvseDelegate::GetMinimumChargeCurrent() +{ + return mMinimumChargeCurrent; +} + +CHIP_ERROR EnergyEvseDelegate::SetMinimumChargeCurrent(int64_t newValue) +{ + int64_t oldValue = mMinimumChargeCurrent; + + if (newValue >= kMaximumChargeCurrent) + { + return CHIP_IM_GLOBAL_STATUS(ConstraintError); + } + + mMinimumChargeCurrent = newValue; + if (oldValue != mMinimumChargeCurrent) + { + ChipLogDetail(AppServer, "MinimumChargeCurrent updated to %ld", static_cast(mMinimumChargeCurrent)); + MatterReportingAttributeChangeCallback(mEndpointId, EnergyEvse::Id, MinimumChargeCurrent::Id); + } + return CHIP_NO_ERROR; +} + +/* MaximumChargeCurrent */ +int64_t EnergyEvseDelegate::GetMaximumChargeCurrent() +{ + return mMaximumChargeCurrent; +} + +CHIP_ERROR EnergyEvseDelegate::SetMaximumChargeCurrent(int64_t newValue) +{ + int64_t oldValue = mMaximumChargeCurrent; + + if (newValue >= kMaximumChargeCurrent) + { + return CHIP_IM_GLOBAL_STATUS(ConstraintError); + } + + mMaximumChargeCurrent = newValue; + if (oldValue != mMaximumChargeCurrent) + { + ChipLogDetail(AppServer, "MaximumChargeCurrent updated to %ld", static_cast(mMaximumChargeCurrent)); + MatterReportingAttributeChangeCallback(mEndpointId, EnergyEvse::Id, MaximumChargeCurrent::Id); + } + return CHIP_NO_ERROR; +} + +/* MaximumDischargeCurrent */ +int64_t EnergyEvseDelegate::GetMaximumDischargeCurrent() +{ + return mMaximumDischargeCurrent; +} + +CHIP_ERROR EnergyEvseDelegate::SetMaximumDischargeCurrent(int64_t newValue) +{ + int64_t oldValue = mMaximumDischargeCurrent; + + if (newValue >= kMaximumChargeCurrent) + { + return CHIP_IM_GLOBAL_STATUS(ConstraintError); + } + + mMaximumDischargeCurrent = newValue; + if (oldValue != mMaximumDischargeCurrent) + { + ChipLogDetail(AppServer, "MaximumDischargeCurrent updated to %ld", static_cast(mMaximumDischargeCurrent)); + MatterReportingAttributeChangeCallback(mEndpointId, EnergyEvse::Id, MaximumDischargeCurrent::Id); + } + return CHIP_NO_ERROR; +} + +/* UserMaximumChargeCurrent */ +int64_t EnergyEvseDelegate::GetUserMaximumChargeCurrent() +{ + return mUserMaximumChargeCurrent; +} + +CHIP_ERROR EnergyEvseDelegate::SetUserMaximumChargeCurrent(int64_t newValue) +{ + if ((newValue < 0) || (newValue > kMaximumChargeCurrent)) + { + return CHIP_IM_GLOBAL_STATUS(ConstraintError); + } + + int64_t oldValue = mUserMaximumChargeCurrent; + mUserMaximumChargeCurrent = newValue; + if (oldValue != newValue) + { + ChipLogDetail(AppServer, "UserMaximumChargeCurrent updated to %ld", static_cast(mUserMaximumChargeCurrent)); + MatterReportingAttributeChangeCallback(mEndpointId, EnergyEvse::Id, UserMaximumChargeCurrent::Id); + } + + return CHIP_NO_ERROR; +} + +/* RandomizationDelayWindow */ +uint32_t EnergyEvseDelegate::GetRandomizationDelayWindow() +{ + return mRandomizationDelayWindow; +} + +CHIP_ERROR EnergyEvseDelegate::SetRandomizationDelayWindow(uint32_t newValue) +{ + uint32_t oldValue = mRandomizationDelayWindow; + if (newValue > kMaxRandomizationDelayWindow) + { + return CHIP_IM_GLOBAL_STATUS(ConstraintError); + } + + mRandomizationDelayWindow = newValue; + if (oldValue != newValue) + { + ChipLogDetail(AppServer, "RandomizationDelayWindow updated to %lu", + static_cast(mRandomizationDelayWindow)); + MatterReportingAttributeChangeCallback(mEndpointId, EnergyEvse::Id, RandomizationDelayWindow::Id); + } + return CHIP_NO_ERROR; +} + +/* PREF attributes */ +uint8_t EnergyEvseDelegate::GetNumberOfWeeklyTargets() +{ + return mNumberOfWeeklyTargets; +} +uint8_t EnergyEvseDelegate::GetNumberOfDailyTargets() +{ + return mNumberOfDailyTargets; +} +DataModel::Nullable EnergyEvseDelegate::GetNextChargeStartTime() +{ + return mNextChargeStartTime; +} +DataModel::Nullable EnergyEvseDelegate::GetNextChargeTargetTime() +{ + return mNextChargeTargetTime; +} +DataModel::Nullable EnergyEvseDelegate::GetNextChargeRequiredEnergy() +{ + return mNextChargeRequiredEnergy; +} +DataModel::Nullable EnergyEvseDelegate::GetNextChargeTargetSoC() +{ + return mNextChargeTargetSoC; +} + +/* ApproximateEVEfficiency */ +DataModel::Nullable EnergyEvseDelegate::GetApproximateEVEfficiency() +{ + return mApproximateEVEfficiency; +} + +CHIP_ERROR EnergyEvseDelegate::SetApproximateEVEfficiency(uint16_t newValue) +{ + DataModel::Nullable oldValue = mApproximateEVEfficiency; + + mApproximateEVEfficiency = MakeNullable(newValue); + if ((oldValue.IsNull()) || (oldValue.Value() != newValue)) + { + ChipLogDetail(AppServer, "ApproximateEVEfficiency updated to %d", mApproximateEVEfficiency.Value()); + MatterReportingAttributeChangeCallback(mEndpointId, EnergyEvse::Id, ApproximateEVEfficiency::Id); + } + + return CHIP_NO_ERROR; +} + +/* SOC attributes */ +DataModel::Nullable EnergyEvseDelegate::GetStateOfCharge() +{ + return mStateOfCharge; +} +DataModel::Nullable EnergyEvseDelegate::GetBatteryCapacity() +{ + return mBatteryCapacity; +} + +/* PNC attributes*/ +DataModel::Nullable EnergyEvseDelegate::GetVehicleID() +{ + return mVehicleID; +} + +/* Session SESS attributes */ +DataModel::Nullable EnergyEvseDelegate::GetSessionID() +{ + return mSessionID; +} +DataModel::Nullable EnergyEvseDelegate::GetSessionDuration() +{ + return mSessionDuration; +} +DataModel::Nullable EnergyEvseDelegate::GetSessionEnergyCharged() +{ + return mSessionEnergyCharged; +} +DataModel::Nullable EnergyEvseDelegate::GetSessionEnergyDischarged() +{ + return mSessionEnergyDischarged; +} diff --git a/examples/all-clusters-app/all-clusters-common/src/EnergyEvseManager.cpp b/examples/all-clusters-app/all-clusters-common/src/EnergyEvseManager.cpp new file mode 100644 index 00000000000000..0d84d8856212e0 --- /dev/null +++ b/examples/all-clusters-app/all-clusters-common/src/EnergyEvseManager.cpp @@ -0,0 +1,33 @@ +/* + * + * 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 + +using namespace chip::app; +using namespace chip::app::Clusters; +using namespace chip::app::Clusters::EnergyEvse; + +CHIP_ERROR EnergyEvseManager::Init() +{ + return Instance::Init(); +} + +void EnergyEvseManager::Shutdown() +{ + Instance::Shutdown(); +} diff --git a/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp b/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp index ce04ae935f2030..13c0205a4e3ca1 100644 --- a/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp +++ b/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp @@ -63,7 +63,7 @@ CHIP_ERROR ActionsAttrAccess::ReadEndpointListAttribute(EndpointId endpoint, Att CHIP_ERROR ActionsAttrAccess::ReadSetupUrlAttribute(EndpointId endpoint, AttributeValueEncoder & aEncoder) { - const char SetupUrl[] = "https://example.com"; + static const char SetupUrl[] = "https://example.com"; return aEncoder.Encode(chip::Span(SetupUrl, strlen(SetupUrl))); } diff --git a/examples/all-clusters-app/all-clusters-common/src/energy-evse-stub.cpp b/examples/all-clusters-app/all-clusters-common/src/energy-evse-stub.cpp new file mode 100644 index 00000000000000..a0773de104c187 --- /dev/null +++ b/examples/all-clusters-app/all-clusters-common/src/energy-evse-stub.cpp @@ -0,0 +1,47 @@ +/* + * + * 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 + +using namespace chip; +using namespace chip::app::Clusters; +using namespace chip::app::Clusters::EnergyEvse; + +static EnergyEvseDelegate * gDelegate = nullptr; +static EnergyEvseManager * gInstance = nullptr; + +void emberAfEnergyEvseClusterInitCallback(chip::EndpointId endpointId) +{ + VerifyOrDie(endpointId == 1); // this cluster is only enabled for endpoint 1. + VerifyOrDie(gInstance == nullptr); + gDelegate = new EnergyEvseDelegate(); + if (gDelegate != nullptr) + { + gInstance = + new EnergyEvseManager(endpointId, *gDelegate, + BitMask( + EnergyEvse::Feature::kChargingPreferences, EnergyEvse::Feature::kPlugAndCharge, + EnergyEvse::Feature::kRfid, EnergyEvse::Feature::kSoCReporting, EnergyEvse::Feature::kV2x), + BitMask(OptionalAttributes::kSupportsUserMaximumChargingCurrent, + OptionalAttributes::kSupportsRandomizationWindow, + OptionalAttributes::kSupportsApproximateEvEfficiency), + BitMask(OptionalCommands::kSupportsStartDiagnostics)); + + gInstance->Init(); /* Register Attribute & Command handlers */ + } +} diff --git a/examples/all-clusters-app/all-clusters-common/src/microwave-oven-mode.cpp b/examples/all-clusters-app/all-clusters-common/src/microwave-oven-mode.cpp new file mode 100644 index 00000000000000..a7ab998dbdec9f --- /dev/null +++ b/examples/all-clusters-app/all-clusters-common/src/microwave-oven-mode.cpp @@ -0,0 +1,106 @@ +/* + * + * Copyright (c) 2023 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include +#include + +using namespace chip::app::Clusters; +using namespace chip::app::Clusters::MicrowaveOvenMode; +using chip::Protocols::InteractionModel::Status; +template +using List = chip::app::DataModel::List; +using ModeTagStructType = chip::app::Clusters::detail::Structs::ModeTagStruct::Type; + +static ExampleMicrowaveOvenModeDelegate * gMicrowaveOvenModeDelegate = nullptr; +static ModeBase::Instance * gMicrowaveOvenModeInstance = nullptr; + +CHIP_ERROR ExampleMicrowaveOvenModeDelegate::Init() +{ + return CHIP_NO_ERROR; +} + +// todo refactor code by making a parent class for all ModeInstance classes to reduce flash usage. +void ExampleMicrowaveOvenModeDelegate::HandleChangeToMode(uint8_t NewMode, + ModeBase::Commands::ChangeToModeResponse::Type & response) +{ + response.status = to_underlying(ModeBase::StatusCode::kGenericFailure); +} + +CHIP_ERROR ExampleMicrowaveOvenModeDelegate::GetModeLabelByIndex(uint8_t modeIndex, chip::MutableCharSpan & label) +{ + if (modeIndex >= ArraySize(kModeOptions)) + { + return CHIP_ERROR_PROVIDER_LIST_EXHAUSTED; + } + return chip::CopyCharSpanToMutableCharSpan(kModeOptions[modeIndex].label, label); +} + +CHIP_ERROR ExampleMicrowaveOvenModeDelegate::GetModeValueByIndex(uint8_t modeIndex, uint8_t & value) +{ + if (modeIndex >= ArraySize(kModeOptions)) + { + return CHIP_ERROR_PROVIDER_LIST_EXHAUSTED; + } + value = kModeOptions[modeIndex].mode; + return CHIP_NO_ERROR; +} + +CHIP_ERROR ExampleMicrowaveOvenModeDelegate::GetModeTagsByIndex(uint8_t modeIndex, List & tags) +{ + if (modeIndex >= ArraySize(kModeOptions)) + { + return CHIP_ERROR_PROVIDER_LIST_EXHAUSTED; + } + + if (tags.size() < kModeOptions[modeIndex].modeTags.size()) + { + return CHIP_ERROR_INVALID_ARGUMENT; + } + + std::copy(kModeOptions[modeIndex].modeTags.begin(), kModeOptions[modeIndex].modeTags.end(), tags.begin()); + tags.reduce_size(kModeOptions[modeIndex].modeTags.size()); + + return CHIP_NO_ERROR; +} + +ModeBase::Instance * MicrowaveOvenMode::Instance() +{ + return gMicrowaveOvenModeInstance; +} + +void MicrowaveOvenMode::Shutdown() +{ + if (gMicrowaveOvenModeInstance != nullptr) + { + delete gMicrowaveOvenModeInstance; + gMicrowaveOvenModeInstance = nullptr; + } + if (gMicrowaveOvenModeDelegate != nullptr) + { + delete gMicrowaveOvenModeDelegate; + gMicrowaveOvenModeDelegate = nullptr; + } +} + +void emberAfMicrowaveOvenModeClusterInitCallback(chip::EndpointId endpointId) +{ + VerifyOrDie(gMicrowaveOvenModeDelegate == nullptr && gMicrowaveOvenModeInstance == nullptr); + gMicrowaveOvenModeDelegate = new MicrowaveOvenMode::ExampleMicrowaveOvenModeDelegate; + gMicrowaveOvenModeInstance = + new ModeBase::Instance(gMicrowaveOvenModeDelegate, endpointId, MicrowaveOvenMode::Id, chip::to_underlying(Feature::kOnOff)); + gMicrowaveOvenModeInstance->Init(); +} diff --git a/examples/all-clusters-app/all-clusters-common/src/operational-state-delegate-impl.cpp b/examples/all-clusters-app/all-clusters-common/src/operational-state-delegate-impl.cpp index f8a465e831f6eb..ec3e392152384f 100644 --- a/examples/all-clusters-app/all-clusters-common/src/operational-state-delegate-impl.cpp +++ b/examples/all-clusters-app/all-clusters-common/src/operational-state-delegate-impl.cpp @@ -125,7 +125,7 @@ void emberAfOperationalStateClusterInitCallback(chip::EndpointId endpointId) gOperationalStateDelegate = new OperationalStateDelegate; EndpointId operationalStateEndpoint = 0x01; - gOperationalStateInstance = new Instance(gOperationalStateDelegate, operationalStateEndpoint, Clusters::OperationalState::Id); + gOperationalStateInstance = new OperationalState::Instance(gOperationalStateDelegate, operationalStateEndpoint); gOperationalStateInstance->SetOperationalState(to_underlying(OperationalState::OperationalStateEnum::kStopped)); @@ -158,8 +158,7 @@ void emberAfRvcOperationalStateClusterInitCallback(chip::EndpointId endpointId) gRvcOperationalStateDelegate = new RvcOperationalStateDelegate; EndpointId operationalStateEndpoint = 0x01; - gRvcOperationalStateInstance = - new Instance(gRvcOperationalStateDelegate, operationalStateEndpoint, Clusters::RvcOperationalState::Id); + gRvcOperationalStateInstance = new RvcOperationalState::Instance(gRvcOperationalStateDelegate, operationalStateEndpoint); gRvcOperationalStateInstance->SetOperationalState(to_underlying(OperationalState::OperationalStateEnum::kStopped)); diff --git a/examples/all-clusters-app/ameba/chip_main.cmake b/examples/all-clusters-app/ameba/chip_main.cmake index 07052e123757cd..f3c6a54854c475 100755 --- a/examples/all-clusters-app/ameba/chip_main.cmake +++ b/examples/all-clusters-app/ameba/chip_main.cmake @@ -156,6 +156,9 @@ list( ${chip_dir}/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp ${chip_dir}/examples/all-clusters-app/all-clusters-common/src/air-quality-instance.cpp ${chip_dir}/examples/all-clusters-app/all-clusters-common/src/concentration-measurement-instances.cpp + ${chip_dir}/examples/all-clusters-app/all-clusters-common/src/EnergyEvseDelegateImpl.cpp + ${chip_dir}/examples/all-clusters-app/all-clusters-common/src/EnergyEvseManager.cpp + ${chip_dir}/examples/all-clusters-app/all-clusters-common/src/energy-evse-stub.cpp ${chip_dir}/examples/all-clusters-app/all-clusters-common/src/fan-stub.cpp ${chip_dir}/examples/all-clusters-app/all-clusters-common/src/laundry-washer-controls-delegate-impl.cpp ${chip_dir}/examples/all-clusters-app/all-clusters-common/src/resource-monitoring-delegates.cpp diff --git a/examples/all-clusters-app/ameba/main/DeviceCallbacks.cpp b/examples/all-clusters-app/ameba/main/DeviceCallbacks.cpp index b31d2629af14aa..338a469bb32947 100644 --- a/examples/all-clusters-app/ameba/main/DeviceCallbacks.cpp +++ b/examples/all-clusters-app/ameba/main/DeviceCallbacks.cpp @@ -45,7 +45,7 @@ #include "Globals.h" #include "LEDWidget.h" -static const char * TAG = "app-devicecallbacks"; +static const char TAG[] = "app-devicecallbacks"; using namespace ::chip; using namespace ::chip::Inet; diff --git a/examples/all-clusters-app/ameba/main/OperationalStateManager.cpp b/examples/all-clusters-app/ameba/main/OperationalStateManager.cpp index 9e4001e7d24e2d..68ee456aee9461 100644 --- a/examples/all-clusters-app/ameba/main/OperationalStateManager.cpp +++ b/examples/all-clusters-app/ameba/main/OperationalStateManager.cpp @@ -126,7 +126,7 @@ void emberAfOperationalStateClusterInitCallback(chip::EndpointId endpointId) gOperationalStateDelegate = new OperationalStateDelegate; EndpointId operationalStateEndpoint = 0x01; - gOperationalStateInstance = new Instance(gOperationalStateDelegate, operationalStateEndpoint, Clusters::OperationalState::Id); + gOperationalStateInstance = new OperationalState::Instance(gOperationalStateDelegate, operationalStateEndpoint); gOperationalStateInstance->SetOperationalState(to_underlying(OperationalState::OperationalStateEnum::kStopped)); @@ -135,10 +135,10 @@ void emberAfOperationalStateClusterInitCallback(chip::EndpointId endpointId) // Init RVC Operational State cluster -static OperationalState::Instance * gRvcOperationalStateInstance = nullptr; -static RvcOperationalStateDelegate * gRvcOperationalStateDelegate = nullptr; +static RvcOperationalState::Instance * gRvcOperationalStateInstance = nullptr; +static RvcOperationalStateDelegate * gRvcOperationalStateDelegate = nullptr; -OperationalState::Instance * OperationalState::GetRVCOperationalStateInstance() +RvcOperationalState::Instance * RvcOperationalState::GetRvcOperationalStateInstance() { return gRvcOperationalStateInstance; } @@ -164,8 +164,7 @@ void emberAfRvcOperationalStateClusterInitCallback(chip::EndpointId endpointId) gRvcOperationalStateDelegate = new RvcOperationalStateDelegate; EndpointId operationalStateEndpoint = 0x01; - gRvcOperationalStateInstance = - new Instance(gRvcOperationalStateDelegate, operationalStateEndpoint, Clusters::RvcOperationalState::Id); + gRvcOperationalStateInstance = new RvcOperationalState::Instance(gRvcOperationalStateDelegate, operationalStateEndpoint); gRvcOperationalStateInstance->SetOperationalState(to_underlying(OperationalState::OperationalStateEnum::kStopped)); diff --git a/examples/all-clusters-app/ameba/main/include/ManualOperationalStateCommand.h b/examples/all-clusters-app/ameba/main/include/ManualOperationalStateCommand.h index 1f6d899b59e828..5d4373597a2d00 100644 --- a/examples/all-clusters-app/ameba/main/include/ManualOperationalStateCommand.h +++ b/examples/all-clusters-app/ameba/main/include/ManualOperationalStateCommand.h @@ -137,7 +137,7 @@ CHIP_ERROR ManualRVCOperationalStateSetStateCommandHandler(int argc, char ** arg uint32_t state = atoi(argv[0]); CHIP_ERROR err; - err = GetRVCOperationalStateInstance()->SetOperationalState(state); + err = RvcOperationalState::GetRvcOperationalStateInstance()->SetOperationalState(state); if (err != CHIP_NO_ERROR) { @@ -178,7 +178,7 @@ CHIP_ERROR ManualRVCOperationalStateSetErrorCommandHandler(int argc, char ** arg break; } - GetRVCOperationalStateInstance()->OnOperationalErrorDetected(err); + RvcOperationalState::GetRvcOperationalStateInstance()->OnOperationalErrorDetected(err); return CHIP_NO_ERROR; } diff --git a/examples/all-clusters-app/ameba/main/include/OperationalStateManager.h b/examples/all-clusters-app/ameba/main/include/OperationalStateManager.h index e98d32171328ac..875534cc93638d 100644 --- a/examples/all-clusters-app/ameba/main/include/OperationalStateManager.h +++ b/examples/all-clusters-app/ameba/main/include/OperationalStateManager.h @@ -32,7 +32,6 @@ namespace Clusters { namespace OperationalState { Instance * GetOperationalStateInstance(); -Instance * GetRVCOperationalStateInstance(); // This is an application level delegate to handle operational state commands according to the specific business logic. class GenericOperationalStateDelegateImpl : public Delegate @@ -124,6 +123,8 @@ void Shutdown(); namespace RvcOperationalState { +Instance * GetRvcOperationalStateInstance(); + // This is an application level delegate to handle operational state commands according to the specific business logic. class RvcOperationalStateDelegate : public OperationalState::GenericOperationalStateDelegateImpl { diff --git a/examples/all-clusters-app/ameba/main/include/ThermostatCommands.h b/examples/all-clusters-app/ameba/main/include/ThermostatCommands.h index 31ff5098869680..7d6c77af81ef1e 100644 --- a/examples/all-clusters-app/ameba/main/include/ThermostatCommands.h +++ b/examples/all-clusters-app/ameba/main/include/ThermostatCommands.h @@ -154,7 +154,7 @@ void ProcessThermostatUnicastBindingCommand(BindingCommandData * data, const Emb switch (data->commandId) { case Clusters::Thermostat::Commands::SetpointRaiseLower::Id: - setpointRaiseLowerCommand.mode = static_cast(data->args[0]); + setpointRaiseLowerCommand.mode = static_cast(data->args[0]); setpointRaiseLowerCommand.amount = static_cast(data->args[1]); Controller::InvokeCommandRequest(peer_device->GetExchangeManager(), peer_device->GetSecureSession().Value(), binding.remote, setpointRaiseLowerCommand, onSuccess, onFailure); @@ -171,7 +171,7 @@ void ProcessThermostatGroupBindingCommand(BindingCommandData * data, const Ember switch (data->commandId) { case Clusters::Thermostat::Commands::SetpointRaiseLower::Id: - setpointRaiseLowerCommand.mode = static_cast(data->args[0]); + setpointRaiseLowerCommand.mode = static_cast(data->args[0]); setpointRaiseLowerCommand.amount = static_cast(data->args[1]); Controller::InvokeGroupCommandRequest(&exchangeMgr, binding.fabricIndex, binding.groupId, setpointRaiseLowerCommand); break; diff --git a/examples/all-clusters-app/asr/BUILD.gn b/examples/all-clusters-app/asr/BUILD.gn index 9447bbe9d3c45d..75c4a3171cfd4a 100755 --- a/examples/all-clusters-app/asr/BUILD.gn +++ b/examples/all-clusters-app/asr/BUILD.gn @@ -71,9 +71,12 @@ asr_executable("clusters_app") { output_name = "chip-asr-clusters-example.out" sources = [ + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/EnergyEvseDelegateImpl.cpp", + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/EnergyEvseManager.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/air-quality-instance.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/concentration-measurement-instances.cpp", + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/energy-evse-stub.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/fan-stub.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/resource-monitoring-delegates.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/smco-stub.cpp", diff --git a/examples/all-clusters-app/cc13x2x7_26x2x7/BUILD.gn b/examples/all-clusters-app/cc13x2x7_26x2x7/BUILD.gn index 6c991abac181a1..ad07e2c7a0da32 100644 --- a/examples/all-clusters-app/cc13x2x7_26x2x7/BUILD.gn +++ b/examples/all-clusters-app/cc13x2x7_26x2x7/BUILD.gn @@ -75,10 +75,13 @@ ti_simplelink_executable("all-clusters-app") { output_name = "chip-${ti_simplelink_board}-all-clusters-example.out" sources = [ + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/EnergyEvseDelegateImpl.cpp", + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/EnergyEvseManager.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/air-quality-instance.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/binding-handler.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/concentration-measurement-instances.cpp", + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/energy-evse-stub.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/fan-stub.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/resource-monitoring-delegates.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/smco-stub.cpp", diff --git a/examples/all-clusters-app/cc13x4_26x4/BUILD.gn b/examples/all-clusters-app/cc13x4_26x4/BUILD.gn index 97ca8d972051a4..c35afae97aabba 100644 --- a/examples/all-clusters-app/cc13x4_26x4/BUILD.gn +++ b/examples/all-clusters-app/cc13x4_26x4/BUILD.gn @@ -37,7 +37,6 @@ ti_sysconfig("sysconfig") { sources = [ "${project_dir}/chip.syscfg" ] outputs = [ - "ti_devices_config.c", "ti_radio_config.c", "ti_radio_config.h", "ti_drivers_config.c", @@ -47,6 +46,10 @@ ti_sysconfig("sysconfig") { "ti_dmm_application_policy.c", "ti_dmm_application_policy.h", + # CCFG generation disabled for OTA-able application + #"ti_devices_config.c", + #"ti_devices_config.h", + # disabled until upstream generation is aligned #"tiop_config.h", #"tiop_config.c", @@ -75,10 +78,13 @@ ti_simplelink_executable("all-clusters-app") { output_name = "chip-${ti_simplelink_board}-all-clusters-example.out" sources = [ + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/EnergyEvseDelegateImpl.cpp", + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/EnergyEvseManager.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/air-quality-instance.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/binding-handler.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/concentration-measurement-instances.cpp", + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/energy-evse-stub.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/fan-stub.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/resource-monitoring-delegates.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/smco-stub.cpp", diff --git a/examples/all-clusters-app/cc13x4_26x4/README.md b/examples/all-clusters-app/cc13x4_26x4/README.md index ad8581b52cf26c..f5a355f249c8aa 100644 --- a/examples/all-clusters-app/cc13x4_26x4/README.md +++ b/examples/all-clusters-app/cc13x4_26x4/README.md @@ -164,8 +164,8 @@ the session. Select the ELF image to load on the device with the `Browse` button. This file is placed in the `out/debug` folder by this guide and ends with the `*.out` file extension. For OTA enabled applications, the standalone image will instead end -with the `*-bim.hex` file extension. This this is a combined image with -application and and `BIM` included. The flag to enable or disable the OTA +with the `*-mcuboot.hex` file extension. This this is a combined image with +application and `MCUBoot` included. The flag to enable or disable the OTA feature is determined by "chip_enable_ota_requestor" in the application's args.gni file. diff --git a/examples/all-clusters-app/cc13x4_26x4/args.gni b/examples/all-clusters-app/cc13x4_26x4/args.gni index 5d97a9ca72d768..7c2e2acc9ae809 100644 --- a/examples/all-clusters-app/cc13x4_26x4/args.gni +++ b/examples/all-clusters-app/cc13x4_26x4/args.gni @@ -27,7 +27,7 @@ ti_simplelink_board = "LP_EM_CC1354P10_6" optimize_debug_level = "s" lwip_debug = false -chip_enable_ota_requestor = false +chip_enable_ota_requestor = true openthread_external_platform = "${chip_root}/third_party/openthread/platforms/cc13x4_26x4:libopenthread-cc13x4_cc26x4" chip_openthread_ftd = true @@ -49,4 +49,4 @@ chip_stack_lock_tracking = "none" matter_device_vid = "0xFFF1" matter_device_pid = "0x8006" matter_software_ver = "0x0001" -matter_software_ver_str = "1.0d1" +matter_software_ver_str = "1.0.1+1" diff --git a/examples/all-clusters-app/cc13x4_26x4/chip.syscfg b/examples/all-clusters-app/cc13x4_26x4/chip.syscfg index e9cb55c3e22f07..0257d3ed152e5e 100644 --- a/examples/all-clusters-app/cc13x4_26x4/chip.syscfg +++ b/examples/all-clusters-app/cc13x4_26x4/chip.syscfg @@ -83,7 +83,8 @@ for(var setting in ccfgSettings) CCFG[setting] = ccfgSettings[setting]; } -CCFG.enableCodeGeneration = true; +/* disable CCFG for OTA-able application */ +CCFG.enableCodeGeneration = false; /* NVS */ diff --git a/examples/all-clusters-app/cc13x4_26x4/main/AppTask.cpp b/examples/all-clusters-app/cc13x4_26x4/main/AppTask.cpp index 314ac6edd9adb4..1ab7b33a03c846 100644 --- a/examples/all-clusters-app/cc13x4_26x4/main/AppTask.cpp +++ b/examples/all-clusters-app/cc13x4_26x4/main/AppTask.cpp @@ -35,7 +35,7 @@ #include #include #include -#include +#include #endif #include #include diff --git a/examples/all-clusters-app/esp32/main/AppTask.cpp b/examples/all-clusters-app/esp32/main/AppTask.cpp index 33b000f6a1baf1..2b7e7d89b921fc 100644 --- a/examples/all-clusters-app/esp32/main/AppTask.cpp +++ b/examples/all-clusters-app/esp32/main/AppTask.cpp @@ -42,7 +42,7 @@ #define APP_EVENT_QUEUE_SIZE 10 #define APP_TASK_STACK_SIZE (3072) -static const char * TAG = "app-task"; +static const char TAG[] = "app-task"; namespace { TimerHandle_t sFunctionTimer; // FreeRTOS app sw timer diff --git a/examples/all-clusters-app/esp32/main/BluetoothWidget.cpp b/examples/all-clusters-app/esp32/main/BluetoothWidget.cpp index 452fb4ff85bb6f..523bb95585a8c5 100644 --- a/examples/all-clusters-app/esp32/main/BluetoothWidget.cpp +++ b/examples/all-clusters-app/esp32/main/BluetoothWidget.cpp @@ -31,7 +31,7 @@ #include "ScreenManager.h" #endif -extern const char * TAG; +extern const char TAG[]; void BluetoothWidget::Init() { diff --git a/examples/all-clusters-app/esp32/main/Button.cpp b/examples/all-clusters-app/esp32/main/Button.cpp index a1930290f6ebad..baa0b47a215aa3 100644 --- a/examples/all-clusters-app/esp32/main/Button.cpp +++ b/examples/all-clusters-app/esp32/main/Button.cpp @@ -35,7 +35,7 @@ #include #include -static const char * TAG = "Button.cpp"; +static const char TAG[] = "Button.cpp"; extern Button gButtons[BUTTON_NUMBER]; diff --git a/examples/all-clusters-app/esp32/main/CMakeLists.txt b/examples/all-clusters-app/esp32/main/CMakeLists.txt index 2687ad0da28539..5680634c786678 100644 --- a/examples/all-clusters-app/esp32/main/CMakeLists.txt +++ b/examples/all-clusters-app/esp32/main/CMakeLists.txt @@ -72,6 +72,7 @@ set(SRC_DIRS_LIST "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/icd-management-server" "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/diagnostic-logs-server" "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/occupancy-sensor-server" + "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/energy-evse-server" "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/ethernet-network-diagnostics-server" "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/localization-configuration-server" "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/time-format-localization-server" @@ -84,8 +85,9 @@ set(SRC_DIRS_LIST "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/temperature-control-server" "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/time-synchronization-server" "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/dishwasher-alarm-server" - "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/laundry-washer-controls-server" + "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/laundry-washer-controls-server" "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/examples/all-clusters-app/all-clusters-common/src" + "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/electrical-energy-measurement-server" ) diff --git a/examples/all-clusters-app/esp32/main/DeviceCallbacks.cpp b/examples/all-clusters-app/esp32/main/DeviceCallbacks.cpp index 271dc3711e3c15..056ce09eb5fffc 100644 --- a/examples/all-clusters-app/esp32/main/DeviceCallbacks.cpp +++ b/examples/all-clusters-app/esp32/main/DeviceCallbacks.cpp @@ -41,7 +41,7 @@ #include #endif -static const char * TAG = "app-devicecallbacks"; +static const char TAG[] = "app-devicecallbacks"; using namespace ::chip; using namespace ::chip::Inet; diff --git a/examples/all-clusters-app/esp32/main/DeviceWithDisplay.cpp b/examples/all-clusters-app/esp32/main/DeviceWithDisplay.cpp index c0caa12cc2eebe..0668411a9bfbd3 100644 --- a/examples/all-clusters-app/esp32/main/DeviceWithDisplay.cpp +++ b/examples/all-clusters-app/esp32/main/DeviceWithDisplay.cpp @@ -28,7 +28,7 @@ using namespace ::chip::Credentials; using namespace ::chip::DeviceManager; using namespace ::chip::DeviceLayer; -static const char * TAG = "DeviceWithDisplay"; +static const char TAG[] = "DeviceWithDisplay"; #if CONFIG_DEVICE_TYPE_M5STACK @@ -141,14 +141,14 @@ class EditAttributeListModel : public TouchesMatterStackModel // false otherwise. bool isValidThermostatSystemMode(uint8_t systemMode) { - chip::app::Clusters::Thermostat::ThermostatSystemMode mode = - static_cast(systemMode); + chip::app::Clusters::Thermostat::SystemModeEnum mode = + static_cast(systemMode); switch (mode) { - case chip::app::Clusters::Thermostat::ThermostatSystemMode::kOff: - case chip::app::Clusters::Thermostat::ThermostatSystemMode::kAuto: - case chip::app::Clusters::Thermostat::ThermostatSystemMode::kCool: - case chip::app::Clusters::Thermostat::ThermostatSystemMode::kHeat: + case chip::app::Clusters::Thermostat::SystemModeEnum::kOff: + case chip::app::Clusters::Thermostat::SystemModeEnum::kAuto: + case chip::app::Clusters::Thermostat::SystemModeEnum::kCool: + case chip::app::Clusters::Thermostat::SystemModeEnum::kHeat: return true; default: return false; @@ -157,13 +157,13 @@ class EditAttributeListModel : public TouchesMatterStackModel bool isValidThermostatRunningMode(uint8_t runningMode) { - chip::app::Clusters::Thermostat::ThermostatRunningMode mode = - static_cast(runningMode); + chip::app::Clusters::Thermostat::ThermostatRunningModeEnum mode = + static_cast(runningMode); switch (mode) { - case chip::app::Clusters::Thermostat::ThermostatRunningMode::kOff: - case chip::app::Clusters::Thermostat::ThermostatRunningMode::kCool: - case chip::app::Clusters::Thermostat::ThermostatRunningMode::kHeat: + case chip::app::Clusters::Thermostat::ThermostatRunningModeEnum::kOff: + case chip::app::Clusters::Thermostat::ThermostatRunningModeEnum::kCool: + case chip::app::Clusters::Thermostat::ThermostatRunningModeEnum::kHeat: return true; default: return false; @@ -233,24 +233,77 @@ class EditAttributeListModel : public TouchesMatterStackModel else if (name == "SystemMode") { // System modes - Off, Auto, Cool and Heat are currently supported. + chip::app::Clusters::Thermostat::SystemModeEnum modeEnum = + chip::app::Clusters::Thermostat::SystemModeEnum::kUnknownEnumValue; uint8_t mode = n; + + switch (n) + { + case 0: + modeEnum = chip::app::Clusters::Thermostat::SystemModeEnum::kOff; + break; + case 1: + modeEnum = chip::app::Clusters::Thermostat::SystemModeEnum::kAuto; + break; + case 3: + modeEnum = chip::app::Clusters::Thermostat::SystemModeEnum::kCool; + break; + case 4: + modeEnum = chip::app::Clusters::Thermostat::SystemModeEnum::kHeat; + break; + case 5: + modeEnum = chip::app::Clusters::Thermostat::SystemModeEnum::kEmergencyHeat; + break; + case 6: + modeEnum = chip::app::Clusters::Thermostat::SystemModeEnum::kPrecooling; + break; + case 7: + modeEnum = chip::app::Clusters::Thermostat::SystemModeEnum::kFanOnly; + break; + case 8: + modeEnum = chip::app::Clusters::Thermostat::SystemModeEnum::kDry; + break; + case 9: + modeEnum = chip::app::Clusters::Thermostat::SystemModeEnum::kSleep; + break; + default: + modeEnum = chip::app::Clusters::Thermostat::SystemModeEnum::kUnknownEnumValue; + break; + } + // Update the system mode here for hardcoded endpoint 1 if (isValidThermostatSystemMode(mode)) { ESP_LOGI(TAG, "System Mode changed to : %d", mode); - app::Clusters::Thermostat::Attributes::SystemMode::Set(1, static_cast(mode)); + app::Clusters::Thermostat::Attributes::SystemMode::Set(1, modeEnum); // If system mode is auto set running mode to off otherwise set it to what the system mode is set to - if (mode == static_cast(chip::app::Clusters::Thermostat::ThermostatSystemMode::kAuto)) + if (modeEnum == chip::app::Clusters::Thermostat::SystemModeEnum::kAuto) { app::Clusters::Thermostat::Attributes::ThermostatRunningMode::Set( - 1, static_cast(chip::app::Clusters::Thermostat::ThermostatRunningMode::kOff)); + 1, chip::app::Clusters::Thermostat::ThermostatRunningModeEnum::kOff); } else { if (isValidThermostatRunningMode(mode)) { ESP_LOGI(TAG, "Running Mode changed to : %d", mode); - app::Clusters::Thermostat::Attributes::ThermostatRunningMode::Set(1, static_cast(mode)); + chip::app::Clusters::Thermostat::ThermostatRunningModeEnum runningModeEnum; + switch (mode) + { + case 0: + runningModeEnum = chip::app::Clusters::Thermostat::ThermostatRunningModeEnum::kOff; + break; + case 3: + runningModeEnum = chip::app::Clusters::Thermostat::ThermostatRunningModeEnum::kCool; + break; + case 4: + runningModeEnum = chip::app::Clusters::Thermostat::ThermostatRunningModeEnum::kHeat; + break; + default: + runningModeEnum = chip::app::Clusters::Thermostat::ThermostatRunningModeEnum::kUnknownEnumValue; + break; + } + app::Clusters::Thermostat::Attributes::ThermostatRunningMode::Set(1, runningModeEnum); } else { @@ -266,20 +319,38 @@ class EditAttributeListModel : public TouchesMatterStackModel else if (name == "RunningMode") { // Get the system mode - uint8_t systemMode = static_cast(chip::app::Clusters::Thermostat::ThermostatRunningMode::kOff); - app::Clusters::Thermostat::Attributes::SystemMode::Get(1, static_cast(&systemMode)); - if (systemMode != static_cast(chip::app::Clusters::Thermostat::ThermostatSystemMode::kAuto)) + chip::app::Clusters::Thermostat::SystemModeEnum systemMode = chip::app::Clusters::Thermostat::SystemModeEnum::kOff; + app::Clusters::Thermostat::Attributes::SystemMode::Get(1, &systemMode); + if (systemMode != chip::app::Clusters::Thermostat::SystemModeEnum::kAuto) { - ESP_LOGI(TAG, "Running mode can be changed only for system mode auto. Current system mode %d", systemMode); + ESP_LOGI(TAG, "Running mode can be changed only for system mode auto. Current system mode %d", + static_cast(systemMode)); } else { uint8_t mode = n; + chip::app::Clusters::Thermostat::ThermostatRunningModeEnum modeEnum = + chip::app::Clusters::Thermostat::ThermostatRunningModeEnum::kUnknownEnumValue; // update the running mode here for hardcoded endpoint 1 if (isValidThermostatRunningMode(mode)) { ESP_LOGI(TAG, "Running Mode changed to : %d", mode); - app::Clusters::Thermostat::Attributes::ThermostatRunningMode::Set(1, static_cast(mode)); + switch (n) + { + case 0: + modeEnum = chip::app::Clusters::Thermostat::ThermostatRunningModeEnum::kOff; + break; + case 3: + modeEnum = chip::app::Clusters::Thermostat::ThermostatRunningModeEnum::kCool; + break; + case 4: + modeEnum = chip::app::Clusters::Thermostat::ThermostatRunningModeEnum::kHeat; + break; + default: + modeEnum = chip::app::Clusters::Thermostat::ThermostatRunningModeEnum::kUnknownEnumValue; + break; + } + app::Clusters::Thermostat::Attributes::ThermostatRunningMode::Set(1, modeEnum); } else { @@ -607,15 +678,15 @@ void SetupPretendDevices() app::Clusters::TemperatureMeasurement::Attributes::MeasuredValue::Set(1, static_cast(21 * 100)); app::Clusters::Thermostat::Attributes::LocalTemperature::Set(1, static_cast(21 * 100)); AddAttribute("SystemMode", "4"); - app::Clusters::Thermostat::Attributes::SystemMode::Set( - 1, static_cast(chip::app::Clusters::Thermostat::ThermostatSystemMode::kHeat)); + app::Clusters::Thermostat::Attributes::SystemMode::Set(1, chip::app::Clusters::Thermostat::SystemModeEnum::kHeat); + AddAttribute("CoolSetpoint", "19"); app::Clusters::Thermostat::Attributes::OccupiedCoolingSetpoint::Set(1, static_cast(19 * 100)); AddAttribute("HeatSetpoint", "25"); app::Clusters::Thermostat::Attributes::OccupiedHeatingSetpoint::Set(1, static_cast(25 * 100)); AddAttribute("RunningMode", "4"); app::Clusters::Thermostat::Attributes::ThermostatRunningMode::Set( - 1, static_cast(chip::app::Clusters::Thermostat::ThermostatRunningMode::kHeat)); + 1, chip::app::Clusters::Thermostat::ThermostatRunningModeEnum::kHeat); AddDevice("Humidity Sensor"); AddEndpoint("External"); diff --git a/examples/all-clusters-app/esp32/main/QRCodeScreen.cpp b/examples/all-clusters-app/esp32/main/QRCodeScreen.cpp index 2130da0107f31d..578f44003f435e 100644 --- a/examples/all-clusters-app/esp32/main/QRCodeScreen.cpp +++ b/examples/all-clusters-app/esp32/main/QRCodeScreen.cpp @@ -43,7 +43,7 @@ #include // TODO need sensible library tag when put in library -extern const char * TAG; +extern const char TAG[]; namespace { diff --git a/examples/all-clusters-app/esp32/main/WiFiWidget.cpp b/examples/all-clusters-app/esp32/main/WiFiWidget.cpp index 06a47a6f8532c7..b644662ae33dbd 100644 --- a/examples/all-clusters-app/esp32/main/WiFiWidget.cpp +++ b/examples/all-clusters-app/esp32/main/WiFiWidget.cpp @@ -31,7 +31,7 @@ #include "ScreenManager.h" #endif -extern const char * TAG; +extern const char TAG[]; void WiFiWidget::Init() { diff --git a/examples/all-clusters-app/esp32/main/main.cpp b/examples/all-clusters-app/esp32/main/main.cpp index a90ff6327628fb..9972f95b95f546 100644 --- a/examples/all-clusters-app/esp32/main/main.cpp +++ b/examples/all-clusters-app/esp32/main/main.cpp @@ -72,7 +72,7 @@ using namespace ::chip::Credentials; // Used to indicate that an IP address has been added to the QRCode #define EXAMPLE_VENDOR_TAG_IP 1 -const char * TAG = "all-clusters-app"; +extern const char TAG[] = "all-clusters-app"; static AppDeviceCallbacks EchoCallbacks; static AppDeviceCallbacksDelegate sAppDeviceCallbacksDelegate; diff --git a/examples/all-clusters-app/infineon/psoc6/BUILD.gn b/examples/all-clusters-app/infineon/psoc6/BUILD.gn index d61814767374d2..b99dc84405e841 100644 --- a/examples/all-clusters-app/infineon/psoc6/BUILD.gn +++ b/examples/all-clusters-app/infineon/psoc6/BUILD.gn @@ -107,9 +107,12 @@ psoc6_executable("clusters_app") { output_name = "chip-psoc6-clusters-example.out" sources = [ + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/EnergyEvseDelegateImpl.cpp", + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/EnergyEvseManager.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/air-quality-instance.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/concentration-measurement-instances.cpp", + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/energy-evse-stub.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/fan-stub.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/resource-monitoring-delegates.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/smco-stub.cpp", diff --git a/examples/all-clusters-app/infineon/psoc6/src/AppTask.cpp b/examples/all-clusters-app/infineon/psoc6/src/AppTask.cpp index 3fde24f3817d04..e9f9dc1a171484 100644 --- a/examples/all-clusters-app/infineon/psoc6/src/AppTask.cpp +++ b/examples/all-clusters-app/infineon/psoc6/src/AppTask.cpp @@ -163,7 +163,7 @@ CHIP_ERROR AppTask::Init() if (rc != 0) { P6_LOG("boot_set_confirmed failed"); - appError(CHIP_ERROR_WELL_UNINITIALIZED); + appError(CHIP_ERROR_UNINITIALIZED); } #endif // Register the callback to init the MDNS server when connectivity is available diff --git a/examples/all-clusters-app/linux/BUILD.gn b/examples/all-clusters-app/linux/BUILD.gn index 215f79f7540241..b3eb61c29f875a 100644 --- a/examples/all-clusters-app/linux/BUILD.gn +++ b/examples/all-clusters-app/linux/BUILD.gn @@ -21,15 +21,19 @@ import("${chip_root}/src/platform/device.gni") source_set("chip-all-clusters-common") { sources = [ + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/EnergyEvseDelegateImpl.cpp", + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/EnergyEvseManager.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/air-quality-instance.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/binding-handler.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/concentration-measurement-instances.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/dishwasher-alarm-stub.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/dishwasher-mode.cpp", + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/energy-evse-stub.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/fan-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/laundry-washer-mode.cpp", + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/microwave-oven-mode.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/operational-state-delegate-impl.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/resource-monitoring-delegates.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/rvc-modes.cpp", diff --git a/examples/all-clusters-app/linux/main-common.cpp b/examples/all-clusters-app/linux/main-common.cpp index b477555a3643c3..f53b6aa68c8057 100644 --- a/examples/all-clusters-app/linux/main-common.cpp +++ b/examples/all-clusters-app/linux/main-common.cpp @@ -23,6 +23,7 @@ #include "include/tv-callbacks.h" #include "laundry-washer-controls-delegate-impl.h" #include "laundry-washer-mode.h" +#include "microwave-oven-mode.h" #include "operational-state-delegate-impl.h" #include "resource-monitoring-delegates.h" #include "rvc-modes.h" @@ -53,7 +54,7 @@ using namespace chip::DeviceLayer; namespace { -constexpr const char kChipEventFifoPathPrefix[] = "/tmp/chip_all_clusters_fifo_"; +constexpr char kChipEventFifoPathPrefix[] = "/tmp/chip_all_clusters_fifo_"; LowPowerManager sLowPowerManager; NamedPipeCommands sChipNamedPipeCommands; AllClustersCommandDelegate sAllClustersCommandDelegate; @@ -226,6 +227,7 @@ void ApplicationShutdown() Clusters::LaundryWasherMode::Shutdown(); Clusters::RvcCleanMode::Shutdown(); Clusters::RvcRunMode::Shutdown(); + Clusters::MicrowaveOvenMode::Shutdown(); Clusters::RefrigeratorAndTemperatureControlledCabinetMode::Shutdown(); Clusters::HepaFilterMonitoring::Shutdown(); Clusters::ActivatedCarbonFilterMonitoring::Shutdown(); diff --git a/examples/all-clusters-app/mbed/CMakeLists.txt b/examples/all-clusters-app/mbed/CMakeLists.txt index 486901342dbb08..79a48c85938f78 100644 --- a/examples/all-clusters-app/mbed/CMakeLists.txt +++ b/examples/all-clusters-app/mbed/CMakeLists.txt @@ -63,6 +63,9 @@ target_sources(${APP_TARGET} PRIVATE ${ALL_CLUSTERS_COMMON}/src/air-quality-instance.cpp ${ALL_CLUSTERS_COMMON}/src/concentration-measurement-instances.cpp ${ALL_CLUSTERS_COMMON}/src/fan-stub.cpp + ${ALL_CLUSTERS_COMMON}/src/EnergyEvseDelegateImpl.cpp + ${ALL_CLUSTERS_COMMON}/src/EnergyEvseManager.cpp + ${ALL_CLUSTERS_COMMON}/src/energy-evse-stub.cpp ${ALL_CLUSTERS_COMMON}/src/resource-monitoring-delegates.cpp ${ALL_CLUSTERS_COMMON}/src/smco-stub.cpp ${ALL_CLUSTERS_COMMON}/src/static-supported-modes-manager.cpp diff --git a/examples/all-clusters-app/nrfconnect/CMakeLists.txt b/examples/all-clusters-app/nrfconnect/CMakeLists.txt index 029210cbf28720..72b93e0647724c 100644 --- a/examples/all-clusters-app/nrfconnect/CMakeLists.txt +++ b/examples/all-clusters-app/nrfconnect/CMakeLists.txt @@ -61,6 +61,9 @@ target_sources(app PRIVATE ${ALL_CLUSTERS_COMMON_DIR}/src/static-supported-temperature-levels.cpp ${ALL_CLUSTERS_COMMON_DIR}/src/bridged-actions-stub.cpp ${ALL_CLUSTERS_COMMON_DIR}/src/fan-stub.cpp + ${ALL_CLUSTERS_COMMON_DIR}/src/EnergyEvseDelegateImpl.cpp + ${ALL_CLUSTERS_COMMON_DIR}/src/EnergyEvseManager.cpp + ${ALL_CLUSTERS_COMMON_DIR}/src/energy-evse-stub.cpp ${ALL_CLUSTERS_COMMON_DIR}/src/binding-handler.cpp ${ALL_CLUSTERS_COMMON_DIR}/src/air-quality-instance.cpp ${ALL_CLUSTERS_COMMON_DIR}/src/concentration-measurement-instances.cpp diff --git a/examples/all-clusters-app/nxp/common/main/AppTask.cpp b/examples/all-clusters-app/nxp/common/main/AppTask.cpp index 3ca3af76b96349..9dc60db217cf9a 100644 --- a/examples/all-clusters-app/nxp/common/main/AppTask.cpp +++ b/examples/all-clusters-app/nxp/common/main/AppTask.cpp @@ -473,5 +473,7 @@ void AppTask::SwitchCommissioningStateHandler(void) void AppTask::FactoryResetHandler(void) { - ConfigurationMgr().InitiateFactoryReset(); + /* Emit the ShutDown event before factory reset */ + chip::Server::GetInstance().GenerateShutDownEvent(); + chip::Server::GetInstance().ScheduleFactoryReset(); } diff --git a/examples/all-clusters-app/nxp/mw320/BUILD.gn b/examples/all-clusters-app/nxp/mw320/BUILD.gn index f7f415961a7481..ab7be5a04d64c1 100644 --- a/examples/all-clusters-app/nxp/mw320/BUILD.gn +++ b/examples/all-clusters-app/nxp/mw320/BUILD.gn @@ -74,9 +74,12 @@ mw320_executable("shell_mw320") { "${chip_root}/examples/all-clusters-app/nxp/mw320/include", ] sources = [ + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/EnergyEvseDelegateImpl.cpp", + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/EnergyEvseManager.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/air-quality-instance.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/concentration-measurement-instances.cpp", + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/energy-evse-stub.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/fan-stub.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/resource-monitoring-delegates.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/smco-stub.cpp", diff --git a/examples/all-clusters-app/nxp/mw320/main.cpp b/examples/all-clusters-app/nxp/mw320/main.cpp index 5e29a11cc9b290..e103359f593400 100644 --- a/examples/all-clusters-app/nxp/mw320/main.cpp +++ b/examples/all-clusters-app/nxp/mw320/main.cpp @@ -111,7 +111,7 @@ enum }; static int Matter_Selection = MAX_SELECTION; #define RUN_RST_LT_DELAY 10 -static const char * TAG = "mw320"; +static const char TAG[] = "mw320"; /******************************************************************************* * Variables diff --git a/examples/all-clusters-app/nxp/rt/rw61x/BUILD.gn b/examples/all-clusters-app/nxp/rt/rw61x/BUILD.gn index 4c0ccba283249b..6f167c92ce5be2 100644 --- a/examples/all-clusters-app/nxp/rt/rw61x/BUILD.gn +++ b/examples/all-clusters-app/nxp/rt/rw61x/BUILD.gn @@ -117,7 +117,10 @@ rt_executable("all_cluster_app") { if (nxp_device_type == "all-clusters") { defines += [ "DEVICE_TYPE_ALL_CLUSTERS" ] sources += [ + "${chip_root}/examples/${app_common_folder}/src/EnergyEvseDelegateImpl.cpp", + "${chip_root}/examples/${app_common_folder}/src/EnergyEvseManager.cpp", "${chip_root}/examples/${app_common_folder}/src/bridged-actions-stub.cpp", + "${chip_root}/examples/${app_common_folder}/src/energy-evse-stub.cpp", "${chip_root}/examples/${app_common_folder}/src/smco-stub.cpp", "${chip_root}/examples/${app_common_folder}/src/static-supported-modes-manager.cpp", ] diff --git a/examples/all-clusters-app/openiotsdk/CMakeLists.txt b/examples/all-clusters-app/openiotsdk/CMakeLists.txt index 6b2e7cc87b3157..dce8295b300cb4 100644 --- a/examples/all-clusters-app/openiotsdk/CMakeLists.txt +++ b/examples/all-clusters-app/openiotsdk/CMakeLists.txt @@ -57,6 +57,9 @@ target_sources(${APP_TARGET} ${ALL_CLUSTERS_COMMON}/src/air-quality-instance.cpp ${ALL_CLUSTERS_COMMON}/src/concentration-measurement-instances.cpp ${ALL_CLUSTERS_COMMON}/src/fan-stub.cpp + ${ALL_CLUSTERS_COMMON}/src/EnergyEvseDelegateImpl.cpp + ${ALL_CLUSTERS_COMMON}/src/EnergyEvseManager.cpp + ${ALL_CLUSTERS_COMMON}/src/energy-evse-stub.cpp ${ALL_CLUSTERS_COMMON}/src/resource-monitoring-delegates.cpp ${ALL_CLUSTERS_COMMON}/src/static-supported-modes-manager.cpp ${ALL_CLUSTERS_COMMON}/src/binding-handler.cpp diff --git a/examples/all-clusters-app/telink/CMakeLists.txt b/examples/all-clusters-app/telink/CMakeLists.txt index 46b7b72960b65b..fa279aa4c8a90f 100644 --- a/examples/all-clusters-app/telink/CMakeLists.txt +++ b/examples/all-clusters-app/telink/CMakeLists.txt @@ -84,6 +84,9 @@ target_sources(app PRIVATE ${ALL_CLUSTERS_COMMON_DIR}/src/air-quality-instance.cpp ${ALL_CLUSTERS_COMMON_DIR}/src/concentration-measurement-instances.cpp ${ALL_CLUSTERS_COMMON_DIR}/src/fan-stub.cpp + ${ALL_CLUSTERS_COMMON_DIR}/src/EnergyEvseDelegateImpl.cpp + ${ALL_CLUSTERS_COMMON_DIR}/src/EnergyEvseManager.cpp + ${ALL_CLUSTERS_COMMON_DIR}/src/energy-evse-stub.cpp ${ALL_CLUSTERS_COMMON_DIR}/src/resource-monitoring-delegates.cpp ${TELINK_COMMON}/common/src/mainCommon.cpp ${TELINK_COMMON}/common/src/AppTaskCommon.cpp diff --git a/examples/all-clusters-app/telink/include/AppConfig.h b/examples/all-clusters-app/telink/include/AppConfig.h index 0329fd5f8a4392..68263bbda460db 100644 --- a/examples/all-clusters-app/telink/include/AppConfig.h +++ b/examples/all-clusters-app/telink/include/AppConfig.h @@ -24,4 +24,6 @@ #define APP_USE_THREAD_START_BUTTON 1 #define APP_SET_DEVICE_INFO_PROVIDER 1 #define APP_SET_NETWORK_COMM_ENDPOINT_SEC 1 +#if defined(CONFIG_BOARD_TLSR9518ADK80D) || defined(CONFIG_BOARD_TLSR9528A) #define APP_USE_IDENTIFY_PWM 1 +#endif diff --git a/examples/all-clusters-app/tizen/BUILD.gn b/examples/all-clusters-app/tizen/BUILD.gn index 1f40d96500c012..6960ec6aa6d516 100644 --- a/examples/all-clusters-app/tizen/BUILD.gn +++ b/examples/all-clusters-app/tizen/BUILD.gn @@ -23,10 +23,13 @@ assert(chip_build_tools) source_set("chip-all-clusters-common") { sources = [ + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/EnergyEvseDelegateImpl.cpp", + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/EnergyEvseManager.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/air-quality-instance.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/binding-handler.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/concentration-measurement-instances.cpp", + "${chip_root}/examples/all-clusters-app/all-clusters-common/src/energy-evse-stub.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/fan-stub.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/resource-monitoring-delegates.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/smco-stub.cpp", diff --git a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter index b24248a1c49ba4..1e2f06d1039962 100644 --- a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter +++ b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter @@ -2,7 +2,9 @@ // It is for view/code review purposes only. /** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */ -server cluster Identify = 3 { +cluster Identify = 3 { + revision 4; + enum EffectIdentifierEnum : enum8 { kBlink = 0; kBreathe = 1; @@ -43,12 +45,16 @@ server cluster Identify = 3 { EffectVariantEnum effectVariant = 1; } + /** Command description for Identify */ command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0; + /** Command description for TriggerEffect */ command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64; } /** Attributes and commands for group configuration and manipulation. */ -server cluster Groups = 4 { +cluster Groups = 4 { + revision 4; + bitmap Feature : bitmap32 { kGroupNames = 0x1; } @@ -70,54 +76,62 @@ server cluster Groups = 4 { char_string<16> groupName = 1; } - request struct ViewGroupRequest { - group_id groupID = 0; - } - - request struct GetGroupMembershipRequest { - group_id groupList[] = 0; - } - - request struct RemoveGroupRequest { - group_id groupID = 0; - } - - request struct AddGroupIfIdentifyingRequest { - group_id groupID = 0; - char_string<16> groupName = 1; - } - response struct AddGroupResponse = 0 { enum8 status = 0; group_id groupID = 1; } + request struct ViewGroupRequest { + group_id groupID = 0; + } + response struct ViewGroupResponse = 1 { enum8 status = 0; group_id groupID = 1; char_string<16> groupName = 2; } + request struct GetGroupMembershipRequest { + group_id groupList[] = 0; + } + response struct GetGroupMembershipResponse = 2 { nullable int8u capacity = 0; group_id groupList[] = 1; } + request struct RemoveGroupRequest { + group_id groupID = 0; + } + response struct RemoveGroupResponse = 3 { enum8 status = 0; group_id groupID = 1; } + request struct AddGroupIfIdentifyingRequest { + group_id groupID = 0; + char_string<16> groupName = 1; + } + + /** Command description for AddGroup */ fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + /** Command description for ViewGroup */ fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + /** Command description for GetGroupMembership */ fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + /** Command description for RemoveGroup */ fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + /** Command description for RemoveAllGroups */ fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + /** Command description for AddGroupIfIdentifying */ fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } /** Attributes and commands for scene configuration and manipulation. */ -provisional server cluster Scenes = 5 { +provisional cluster Scenes = 5 { + revision 5; + bitmap CopyModeBitmap : bitmap8 { kCopyAllScenes = 0x1; } @@ -152,8 +166,12 @@ provisional server cluster Scenes = 5 { fabric_idx fabricIndex = 254; } + readonly attribute optional int8u sceneCount = 0; + readonly attribute optional int8u currentScene = 1; + readonly attribute optional group_id currentGroup = 2; + readonly attribute optional boolean sceneValid = 3; readonly attribute NameSupportBitmap nameSupport = 4; - readonly attribute nullable node_id lastConfiguredBy = 5; + readonly attribute optional nullable node_id lastConfiguredBy = 5; readonly attribute int16u sceneTableSize = 6; readonly attribute SceneInfoStruct fabricSceneInfo[] = 7; readonly attribute command_id generatedCommandList[] = 65528; @@ -171,25 +189,57 @@ provisional server cluster Scenes = 5 { ExtensionFieldSet extensionFieldSets[] = 4; } + response struct AddSceneResponse = 0 { + status status = 0; + group_id groupID = 1; + int8u sceneID = 2; + } + request struct ViewSceneRequest { group_id groupID = 0; int8u sceneID = 1; } + response struct ViewSceneResponse = 1 { + status status = 0; + group_id groupID = 1; + int8u sceneID = 2; + optional int16u transitionTime = 3; + optional char_string sceneName = 4; + optional ExtensionFieldSet extensionFieldSets[] = 5; + } + request struct RemoveSceneRequest { group_id groupID = 0; int8u sceneID = 1; } + response struct RemoveSceneResponse = 2 { + status status = 0; + group_id groupID = 1; + int8u sceneID = 2; + } + request struct RemoveAllScenesRequest { group_id groupID = 0; } + response struct RemoveAllScenesResponse = 3 { + status status = 0; + group_id groupID = 1; + } + request struct StoreSceneRequest { group_id groupID = 0; int8u sceneID = 1; } + response struct StoreSceneResponse = 4 { + status status = 0; + group_id groupID = 1; + int8u sceneID = 2; + } + request struct RecallSceneRequest { group_id groupID = 0; int8u sceneID = 1; @@ -200,56 +250,81 @@ provisional server cluster Scenes = 5 { group_id groupID = 0; } - response struct AddSceneResponse = 0 { + response struct GetSceneMembershipResponse = 6 { status status = 0; - group_id groupID = 1; - int8u sceneID = 2; + nullable int8u capacity = 1; + group_id groupID = 2; + optional int8u sceneList[] = 3; } - response struct ViewSceneResponse = 1 { - status status = 0; - group_id groupID = 1; - int8u sceneID = 2; - optional int16u transitionTime = 3; - optional char_string sceneName = 4; - optional ExtensionFieldSet extensionFieldSets[] = 5; + request struct EnhancedAddSceneRequest { + group_id groupID = 0; + int8u sceneID = 1; + int16u transitionTime = 2; + char_string sceneName = 3; + ExtensionFieldSet extensionFieldSets[] = 4; } - response struct RemoveSceneResponse = 2 { + response struct EnhancedAddSceneResponse = 64 { status status = 0; group_id groupID = 1; int8u sceneID = 2; } - response struct RemoveAllScenesResponse = 3 { - status status = 0; - group_id groupID = 1; + request struct EnhancedViewSceneRequest { + group_id groupID = 0; + int8u sceneID = 1; } - response struct StoreSceneResponse = 4 { + response struct EnhancedViewSceneResponse = 65 { status status = 0; group_id groupID = 1; int8u sceneID = 2; + optional int16u transitionTime = 3; + optional char_string sceneName = 4; + optional ExtensionFieldSet extensionFieldSets[] = 5; } - response struct GetSceneMembershipResponse = 6 { + request struct CopySceneRequest { + CopyModeBitmap mode = 0; + group_id groupIdentifierFrom = 1; + int8u sceneIdentifierFrom = 2; + group_id groupIdentifierTo = 3; + int8u sceneIdentifierTo = 4; + } + + response struct CopySceneResponse = 66 { status status = 0; - nullable int8u capacity = 1; - group_id groupID = 2; - optional int8u sceneList[] = 3; + group_id groupIdentifierFrom = 1; + int8u sceneIdentifierFrom = 2; } + /** Add a scene to the scene table. Extension field sets are supported, and are inputed as '{"ClusterID": VALUE, "AttributeValueList":[{"AttributeId": VALUE, "AttributeValue": VALUE}]}' */ fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; + /** Retrieves the requested scene entry from its Scene table. */ fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; + /** Removes the requested scene entry, corresponding to the value of the GroupID field, from its Scene Table */ fabric command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; + /** Remove all scenes, corresponding to the value of the GroupID field, from its Scene Table */ fabric command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; + /** Adds the scene entry into its Scene Table along with all extension field sets corresponding to the current state of other clusters on the same endpoint */ fabric command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; + /** Set the attributes and corresponding state for each other cluster implemented on the endpoint accordingly to the resquested scene entry in the Scene Table */ fabric command RecallScene(RecallSceneRequest): DefaultSuccess = 5; + /** Get an unused scene identifier when no commissioning tool is in the network, or for a commissioning tool to get the used scene identifiers within a certain group */ fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; + /** Allows a scene to be added using a finer scene transition time than the AddScene command. */ + fabric command EnhancedAddScene(EnhancedAddSceneRequest): EnhancedAddSceneResponse = 64; + /** Allows a scene to be retrieved using a finer scene transition time than the ViewScene command */ + fabric command EnhancedViewScene(EnhancedViewSceneRequest): EnhancedViewSceneResponse = 65; + /** Allows a client to efficiently copy scenes from one group/scene identifier pair to another group/scene identifier pair. */ + fabric command CopyScene(CopySceneRequest): CopySceneResponse = 66; } /** Attributes and commands for switching devices between 'On' and 'Off' states. */ -server cluster OnOff = 6 { +cluster OnOff = 6 { + revision 6; + enum DelayedAllOffEffectVariantEnum : enum8 { kDelayedOffFastFade = 0; kNoFade = 1; @@ -282,10 +357,10 @@ server cluster OnOff = 6 { } readonly attribute boolean onOff = 0; - readonly attribute boolean globalSceneControl = 16384; - attribute int16u onTime = 16385; - attribute int16u offWaitTime = 16386; - attribute access(write: manage) nullable StartUpOnOffEnum startUpOnOff = 16387; + readonly attribute optional boolean globalSceneControl = 16384; + attribute optional int16u onTime = 16385; + attribute optional int16u offWaitTime = 16386; + attribute access(write: manage) optional nullable StartUpOnOffEnum startUpOnOff = 16387; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -304,16 +379,24 @@ server cluster OnOff = 6 { int16u offWaitTime = 2; } + /** On receipt of this command, a device SHALL enter its ‘Off’ state. This state is device dependent, but it is recommended that it is used for power off or similar functions. On receipt of the Off command, the OnTime attribute SHALL be set to 0. */ command Off(): DefaultSuccess = 0; + /** On receipt of this command, a device SHALL enter its ‘On’ state. This state is device dependent, but it is recommended that it is used for power on or similar functions. On receipt of the On command, if the value of the OnTime attribute is equal to 0, the device SHALL set the OffWaitTime attribute to 0. */ command On(): DefaultSuccess = 1; + /** On receipt of this command, if a device is in its ‘Off’ state it SHALL enter its ‘On’ state. Otherwise, if it is in its ‘On’ state it SHALL enter its ‘Off’ state. On receipt of the Toggle command, if the value of the OnOff attribute is equal to FALSE and if the value of the OnTime attribute is equal to 0, the device SHALL set the OffWaitTime attribute to 0. If the value of the OnOff attribute is equal to TRUE, the OnTime attribute SHALL be set to 0. */ command Toggle(): DefaultSuccess = 2; + /** The OffWithEffect command allows devices to be turned off using enhanced ways of fading. */ command OffWithEffect(OffWithEffectRequest): DefaultSuccess = 64; + /** The OnWithRecallGlobalScene command allows the recall of the settings when the device was turned off. */ command OnWithRecallGlobalScene(): DefaultSuccess = 65; + /** The OnWithTimedOff command allows devices to be turned on for a specific duration with a guarded off duration so that SHOULD the device be subsequently switched off, further OnWithTimedOff commands, received during this time, are prevented from turning the devices back on. */ command OnWithTimedOff(OnWithTimedOffRequest): DefaultSuccess = 66; } /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ -server cluster LevelControl = 8 { +cluster LevelControl = 8 { + revision 5; + enum MoveModeEnum : enum8 { kUp = 0; kDown = 1; @@ -336,10 +419,19 @@ server cluster LevelControl = 8 { } readonly attribute nullable int8u currentLevel = 0; - readonly attribute int16u remainingTime = 1; + readonly attribute optional int16u remainingTime = 1; + readonly attribute optional int8u minLevel = 2; + readonly attribute optional int8u maxLevel = 3; + readonly attribute optional int16u currentFrequency = 4; + readonly attribute optional int16u minFrequency = 5; + readonly attribute optional int16u maxFrequency = 6; attribute OptionsBitmap options = 15; + attribute optional int16u onOffTransitionTime = 16; attribute nullable int8u onLevel = 17; - attribute access(write: manage) nullable int8u startUpCurrentLevel = 16384; + attribute optional nullable int16u onTransitionTime = 18; + attribute optional nullable int16u offTransitionTime = 19; + attribute optional nullable int8u defaultMoveRate = 20; + attribute access(write: manage) optional nullable int8u startUpCurrentLevel = 16384; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -401,18 +493,35 @@ server cluster LevelControl = 8 { OptionsBitmap optionsOverride = 1; } + request struct MoveToClosestFrequencyRequest { + int16u frequency = 0; + } + + /** Command description for MoveToLevel */ command MoveToLevel(MoveToLevelRequest): DefaultSuccess = 0; + /** Command description for Move */ command Move(MoveRequest): DefaultSuccess = 1; + /** Command description for Step */ command Step(StepRequest): DefaultSuccess = 2; + /** Command description for Stop */ command Stop(StopRequest): DefaultSuccess = 3; + /** Command description for MoveToLevelWithOnOff */ command MoveToLevelWithOnOff(MoveToLevelWithOnOffRequest): DefaultSuccess = 4; + /** Command description for MoveWithOnOff */ command MoveWithOnOff(MoveWithOnOffRequest): DefaultSuccess = 5; + /** Command description for StepWithOnOff */ command StepWithOnOff(StepWithOnOffRequest): DefaultSuccess = 6; + /** Command description for StopWithOnOff */ command StopWithOnOff(StopWithOnOffRequest): DefaultSuccess = 7; + /** Change the currrent frequency to the provided one, or a close + approximation if the exact provided one is not possible. */ + command MoveToClosestFrequency(MoveToClosestFrequencyRequest): DefaultSuccess = 8; } /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ -server cluster Descriptor = 29 { +cluster Descriptor = 29 { + revision 2; + bitmap Feature : bitmap32 { kTagList = 0x1; } @@ -433,6 +542,7 @@ server cluster Descriptor = 29 { readonly attribute cluster_id serverList[] = 1; readonly attribute cluster_id clientList[] = 2; readonly attribute endpoint_no partsList[] = 3; + readonly attribute optional SemanticTagStruct tagList[] = 4; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -442,7 +552,9 @@ server cluster Descriptor = 29 { } /** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ -server cluster Binding = 30 { +cluster Binding = 30 { + revision 1; // NOTE: Default/not specifically set + fabric_scoped struct TargetStruct { optional node_id node = 1; optional group_id group = 2; @@ -464,7 +576,9 @@ server cluster Binding = 30 { Node's Access Control List (ACL), which codifies the rules used to manage and enforce Access Control for the Node's endpoints and their associated cluster instances. */ -server cluster AccessControl = 31 { +cluster AccessControl = 31 { + revision 1; // NOTE: Default/not specifically set + enum AccessControlEntryAuthModeEnum : enum8 { kPASE = 1; kCASE = 2; @@ -521,7 +635,7 @@ server cluster AccessControl = 31 { } attribute access(read: administer, write: administer) AccessControlEntryStruct acl[] = 0; - attribute access(read: administer, write: administer) AccessControlExtensionStruct extension[] = 1; + attribute access(read: administer, write: administer) optional AccessControlExtensionStruct extension[] = 1; readonly attribute int16u subjectsPerAccessControlEntry = 2; readonly attribute int16u targetsPerAccessControlEntry = 3; readonly attribute int16u accessControlEntriesPerFabric = 4; @@ -534,7 +648,9 @@ server cluster AccessControl = 31 { } /** This cluster provides a standardized way for a Node (typically a Bridge, but could be any Node) to expose action information. */ -server cluster Actions = 37 { +cluster Actions = 37 { + revision 1; // NOTE: Default/not specifically set + enum ActionErrorEnum : enum8 { kUnknown = 0; kInterrupted = 1; @@ -609,18 +725,111 @@ server cluster Actions = 37 { readonly attribute ActionStruct actionList[] = 0; readonly attribute EndpointListStruct endpointLists[] = 1; + readonly attribute optional long_char_string<512> setupURL = 2; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; readonly attribute attrib_id attributeList[] = 65531; readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + + request struct InstantActionRequest { + int16u actionID = 0; + optional int32u invokeID = 1; + } + + request struct InstantActionWithTransitionRequest { + int16u actionID = 0; + optional int32u invokeID = 1; + int16u transitionTime = 2; + } + + request struct StartActionRequest { + int16u actionID = 0; + optional int32u invokeID = 1; + } + + request struct StartActionWithDurationRequest { + int16u actionID = 0; + optional int32u invokeID = 1; + int32u duration = 2; + } + + request struct StopActionRequest { + int16u actionID = 0; + optional int32u invokeID = 1; + } + + request struct PauseActionRequest { + int16u actionID = 0; + optional int32u invokeID = 1; + } + + request struct PauseActionWithDurationRequest { + int16u actionID = 0; + optional int32u invokeID = 1; + int32u duration = 2; + } + + request struct ResumeActionRequest { + int16u actionID = 0; + optional int32u invokeID = 1; + } + + request struct EnableActionRequest { + int16u actionID = 0; + optional int32u invokeID = 1; + } + + request struct EnableActionWithDurationRequest { + int16u actionID = 0; + optional int32u invokeID = 1; + int32u duration = 2; + } + + request struct DisableActionRequest { + int16u actionID = 0; + optional int32u invokeID = 1; + } + + request struct DisableActionWithDurationRequest { + int16u actionID = 0; + optional int32u invokeID = 1; + int32u duration = 2; + } + + /** This command triggers an action (state change) on the involved endpoints. */ + command InstantAction(InstantActionRequest): DefaultSuccess = 0; + /** This command triggers an action (state change) on the involved endpoints, with a specified time to transition from the current state to the new state. */ + command InstantActionWithTransition(InstantActionWithTransitionRequest): DefaultSuccess = 1; + /** This command triggers the commencement of an action on the involved endpoints. */ + command StartAction(StartActionRequest): DefaultSuccess = 2; + /** This command triggers the commencement of an action (with a duration) on the involved endpoints. */ + command StartActionWithDuration(StartActionWithDurationRequest): DefaultSuccess = 3; + /** This command stops the ongoing action on the involved endpoints. */ + command StopAction(StopActionRequest): DefaultSuccess = 4; + /** This command pauses an ongoing action. */ + command PauseAction(PauseActionRequest): DefaultSuccess = 5; + /** This command pauses an ongoing action with a duration. */ + command PauseActionWithDuration(PauseActionWithDurationRequest): DefaultSuccess = 6; + /** This command resumes a previously paused action. */ + command ResumeAction(ResumeActionRequest): DefaultSuccess = 7; + /** This command enables a certain action or automation. */ + command EnableAction(EnableActionRequest): DefaultSuccess = 8; + /** This command enables a certain action or automation with a duration. */ + command EnableActionWithDuration(EnableActionWithDurationRequest): DefaultSuccess = 9; + /** This command disables a certain action or automation. */ + command DisableAction(DisableActionRequest): DefaultSuccess = 10; + /** This command disables a certain action or automation with a duration. */ + command DisableActionWithDuration(DisableActionWithDurationRequest): DefaultSuccess = 11; } /** This cluster provides attributes and events for determining basic information about Nodes, which supports both Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, which apply to the whole Node. Also allows setting user device information such as location. */ -server cluster BasicInformation = 40 { +cluster BasicInformation = 40 { + revision 3; + enum ColorEnum : enum8 { kBlack = 0; kNavy = 1; @@ -690,7 +899,16 @@ server cluster BasicInformation = 40 { readonly attribute char_string<64> hardwareVersionString = 8; readonly attribute int32u softwareVersion = 9; readonly attribute char_string<64> softwareVersionString = 10; + readonly attribute optional char_string<16> manufacturingDate = 11; + readonly attribute optional char_string<32> partNumber = 12; + readonly attribute optional long_char_string<256> productURL = 13; + readonly attribute optional char_string<64> productLabel = 14; + readonly attribute optional char_string<32> serialNumber = 15; + attribute access(write: manage) optional boolean localConfigDisabled = 16; + readonly attribute optional boolean reachable = 17; + readonly attribute optional char_string<32> uniqueID = 18; readonly attribute CapabilityMinimaStruct capabilityMinima = 19; + readonly attribute optional ProductAppearanceStruct productAppearance = 20; readonly attribute int32u specificationVersion = 21; readonly attribute int16u maxPathsPerInvoke = 22; readonly attribute command_id generatedCommandList[] = 65528; @@ -699,10 +917,14 @@ server cluster BasicInformation = 40 { readonly attribute attrib_id attributeList[] = 65531; readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + + command MfgSpecificPing(): DefaultSuccess = 0; } /** Provides an interface for providing OTA software updates */ -client cluster OtaSoftwareUpdateProvider = 41 { +cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + enum ApplyUpdateActionEnum : enum8 { kProceed = 0; kAwaitNextAction = 1; @@ -776,7 +998,9 @@ client cluster OtaSoftwareUpdateProvider = 41 { } /** Provides an interface for downloading and applying OTA software updates */ -server cluster OtaSoftwareUpdateRequestor = 42 { +cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + enum AnnouncementReasonEnum : enum8 { kSimpleAnnouncement = 0; kUpdateAvailable = 1; @@ -828,7 +1052,7 @@ server cluster OtaSoftwareUpdateRequestor = 42 { nullable int64s platformCode = 3; } - attribute ProviderLocation defaultOTAProviders[] = 0; + attribute access(write: administer) ProviderLocation defaultOTAProviders[] = 0; readonly attribute boolean updatePossible = 1; readonly attribute UpdateStateEnum updateState = 2; readonly attribute nullable int8u updateStateProgress = 3; @@ -847,6 +1071,7 @@ server cluster OtaSoftwareUpdateRequestor = 42 { endpoint_no endpoint = 4; } + /** Announce the presence of an OTA Provider */ command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } @@ -854,7 +1079,9 @@ server cluster OtaSoftwareUpdateRequestor = 42 { may have differing common languages, units of measurements, and numerical formatting standards. As such, Nodes that visually or audibly convey information need a mechanism by which they can be configured to use a user’s preferred language, units, etc */ -server cluster LocalizationConfiguration = 43 { +cluster LocalizationConfiguration = 43 { + revision 1; // NOTE: Default/not specifically set + attribute access(write: manage) char_string<35> activeLocale = 0; readonly attribute char_string supportedLocales[] = 1; readonly attribute command_id generatedCommandList[] = 65528; @@ -869,7 +1096,9 @@ server cluster LocalizationConfiguration = 43 { may have differing preferences for how dates and times are conveyed. As such, Nodes that visually or audibly convey time information need a mechanism by which they can be configured to use a user’s preferred format. */ -server cluster TimeFormatLocalization = 44 { +cluster TimeFormatLocalization = 44 { + revision 1; // NOTE: Default/not specifically set + enum CalendarTypeEnum : enum8 { kBuddhist = 0; kChinese = 1; @@ -883,11 +1112,13 @@ server cluster TimeFormatLocalization = 44 { kKorean = 9; kPersian = 10; kTaiwanese = 11; + kUseActiveLocale = 255; } enum HourFormatEnum : enum8 { k12hr = 0; k24hr = 1; + kUseActiveLocale = 255; } bitmap Feature : bitmap32 { @@ -895,6 +1126,8 @@ server cluster TimeFormatLocalization = 44 { } attribute access(write: manage) HourFormatEnum hourFormat = 0; + attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; + readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -907,7 +1140,9 @@ server cluster TimeFormatLocalization = 44 { may have differing preferences for the units in which values are conveyed in communication to a user. As such, Nodes that visually or audibly convey measurable values to the user need a mechanism by which they can be configured to use a user’s preferred unit. */ -server cluster UnitLocalization = 45 { +cluster UnitLocalization = 45 { + revision 1; + enum TempUnitEnum : enum8 { kFahrenheit = 0; kCelsius = 1; @@ -918,6 +1153,7 @@ server cluster UnitLocalization = 45 { kTemperatureUnit = 0x1; } + attribute access(write: manage) optional TempUnitEnum temperatureUnit = 0; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -927,7 +1163,9 @@ server cluster UnitLocalization = 45 { } /** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ -server cluster PowerSource = 47 { +cluster PowerSource = 47 { + revision 1; // NOTE: Default/not specifically set + enum BatApprovedChemistryEnum : enum16 { kUnspecified = 0; kAlkaline = 1; @@ -1146,6 +1384,34 @@ server cluster PowerSource = 47 { readonly attribute PowerSourceStatusEnum status = 0; readonly attribute int8u order = 1; readonly attribute char_string<60> description = 2; + readonly attribute optional nullable int32u wiredAssessedInputVoltage = 3; + readonly attribute optional nullable int16u wiredAssessedInputFrequency = 4; + readonly attribute optional WiredCurrentTypeEnum wiredCurrentType = 5; + readonly attribute optional nullable int32u wiredAssessedCurrent = 6; + readonly attribute optional int32u wiredNominalVoltage = 7; + readonly attribute optional int32u wiredMaximumCurrent = 8; + readonly attribute optional boolean wiredPresent = 9; + readonly attribute optional WiredFaultEnum activeWiredFaults[] = 10; + readonly attribute optional nullable int32u batVoltage = 11; + readonly attribute optional nullable int8u batPercentRemaining = 12; + readonly attribute optional nullable int32u batTimeRemaining = 13; + readonly attribute optional BatChargeLevelEnum batChargeLevel = 14; + readonly attribute optional boolean batReplacementNeeded = 15; + readonly attribute optional BatReplaceabilityEnum batReplaceability = 16; + readonly attribute optional boolean batPresent = 17; + readonly attribute optional BatFaultEnum activeBatFaults[] = 18; + readonly attribute optional char_string<60> batReplacementDescription = 19; + readonly attribute optional BatCommonDesignationEnum batCommonDesignation = 20; + readonly attribute optional char_string<20> batANSIDesignation = 21; + readonly attribute optional char_string<20> batIECDesignation = 22; + readonly attribute optional BatApprovedChemistryEnum batApprovedChemistry = 23; + readonly attribute optional int32u batCapacity = 24; + readonly attribute optional int8u batQuantity = 25; + readonly attribute optional BatChargeStateEnum batChargeState = 26; + readonly attribute optional nullable int32u batTimeToFullCharge = 27; + readonly attribute optional boolean batFunctionalWhileCharging = 28; + readonly attribute optional nullable int32u batChargingCurrent = 29; + readonly attribute optional BatChargeFaultEnum activeBatChargeFaults[] = 30; readonly attribute endpoint_no endpointList[] = 31; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; @@ -1156,7 +1422,9 @@ server cluster PowerSource = 47 { } /** This cluster is used to manage global aspects of the Commissioning flow. */ -server cluster GeneralCommissioning = 48 { +cluster GeneralCommissioning = 48 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningErrorEnum : enum8 { kOK = 0; kValueOutsideRange = 1; @@ -1193,17 +1461,17 @@ server cluster GeneralCommissioning = 48 { int64u breadcrumb = 1; } + response struct ArmFailSafeResponse = 1 { + CommissioningErrorEnum errorCode = 0; + char_string<128> debugText = 1; + } + request struct SetRegulatoryConfigRequest { RegulatoryLocationTypeEnum newRegulatoryConfig = 0; char_string<2> countryCode = 1; int64u breadcrumb = 2; } - response struct ArmFailSafeResponse = 1 { - CommissioningErrorEnum errorCode = 0; - char_string<128> debugText = 1; - } - response struct SetRegulatoryConfigResponse = 3 { CommissioningErrorEnum errorCode = 0; char_string debugText = 1; @@ -1214,13 +1482,18 @@ server cluster GeneralCommissioning = 48 { char_string debugText = 1; } + /** Arm the persistent fail-safe timer with an expiry time of now + ExpiryLengthSeconds using device clock */ command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; + /** Set the regulatory configuration to be used during commissioning */ command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; + /** Signals the Server that the Client has successfully completed all steps of Commissioning/Recofiguration needed during fail-safe period. */ fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } /** Functionality to configure, enable, disable network credentials and access on a Matter device. */ -server cluster NetworkCommissioning = 49 { +cluster NetworkCommissioning = 49 { + revision 1; // NOTE: Default/not specifically set + enum NetworkCommissioningStatusEnum : enum8 { kSuccess = 0; kOutOfRange = 1; @@ -1299,12 +1572,15 @@ server cluster NetworkCommissioning = 49 { readonly attribute access(read: administer) int8u maxNetworks = 0; readonly attribute access(read: administer) NetworkInfoStruct networks[] = 1; - readonly attribute int8u scanMaxTimeSeconds = 2; - readonly attribute int8u connectMaxTimeSeconds = 3; + readonly attribute optional int8u scanMaxTimeSeconds = 2; + readonly attribute optional int8u connectMaxTimeSeconds = 3; attribute access(write: administer) boolean interfaceEnabled = 4; readonly attribute access(read: administer) nullable NetworkCommissioningStatusEnum lastNetworkingStatus = 5; readonly attribute access(read: administer) nullable octet_string<32> lastNetworkID = 6; readonly attribute access(read: administer) nullable int32s lastConnectErrorValue = 7; + readonly attribute optional WiFiBandEnum supportedWiFiBands[] = 8; + readonly attribute optional ThreadCapabilitiesBitmap supportedThreadFeatures = 9; + readonly attribute optional int16u threadVersion = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1317,6 +1593,13 @@ server cluster NetworkCommissioning = 49 { optional int64u breadcrumb = 1; } + response struct ScanNetworksResponse = 1 { + NetworkCommissioningStatusEnum networkingStatus = 0; + optional char_string debugText = 1; + optional WiFiInterfaceScanResultStruct wiFiScanResults[] = 2; + optional ThreadInterfaceScanResultStruct threadScanResults[] = 3; + } + request struct AddOrUpdateWiFiNetworkRequest { octet_string<32> ssid = 0; octet_string<64> credentials = 1; @@ -1336,48 +1619,61 @@ server cluster NetworkCommissioning = 49 { optional int64u breadcrumb = 1; } + response struct NetworkConfigResponse = 5 { + NetworkCommissioningStatusEnum networkingStatus = 0; + optional char_string<512> debugText = 1; + optional int8u networkIndex = 2; + optional octet_string<140> clientIdentity = 3; + optional octet_string<64> possessionSignature = 4; + } + request struct ConnectNetworkRequest { octet_string<32> networkID = 0; optional int64u breadcrumb = 1; } + response struct ConnectNetworkResponse = 7 { + NetworkCommissioningStatusEnum networkingStatus = 0; + optional char_string debugText = 1; + nullable int32s errorValue = 2; + } + request struct ReorderNetworkRequest { octet_string<32> networkID = 0; int8u networkIndex = 1; optional int64u breadcrumb = 2; } - response struct ScanNetworksResponse = 1 { - NetworkCommissioningStatusEnum networkingStatus = 0; - optional char_string debugText = 1; - optional WiFiInterfaceScanResultStruct wiFiScanResults[] = 2; - optional ThreadInterfaceScanResultStruct threadScanResults[] = 3; + request struct QueryIdentityRequest { + octet_string<20> keyIdentifier = 0; + optional octet_string<32> possessionNonce = 1; } - response struct NetworkConfigResponse = 5 { - NetworkCommissioningStatusEnum networkingStatus = 0; - optional char_string<512> debugText = 1; - optional int8u networkIndex = 2; - optional octet_string<140> clientIdentity = 3; - optional octet_string<64> possessionSignature = 4; - } - - response struct ConnectNetworkResponse = 7 { - NetworkCommissioningStatusEnum networkingStatus = 0; - optional char_string debugText = 1; - nullable int32s errorValue = 2; + response struct QueryIdentityResponse = 10 { + octet_string<140> identity = 0; + optional octet_string<64> possessionSignature = 1; } + /** Detemine the set of networks the device sees as available. */ command access(invoke: administer) ScanNetworks(ScanNetworksRequest): ScanNetworksResponse = 0; + /** Add or update the credentials for a given Wi-Fi network. */ command access(invoke: administer) AddOrUpdateWiFiNetwork(AddOrUpdateWiFiNetworkRequest): NetworkConfigResponse = 2; + /** Add or update the credentials for a given Thread network. */ command access(invoke: administer) AddOrUpdateThreadNetwork(AddOrUpdateThreadNetworkRequest): NetworkConfigResponse = 3; + /** Remove the definition of a given network (including its credentials). */ command access(invoke: administer) RemoveNetwork(RemoveNetworkRequest): NetworkConfigResponse = 4; + /** Connect to the specified network, using previously-defined credentials. */ command access(invoke: administer) ConnectNetwork(ConnectNetworkRequest): ConnectNetworkResponse = 6; + /** Modify the order in which networks will be presented in the Networks attribute. */ command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; + /** Retrieve details about and optionally proof of possession of a network client identity. */ + command access(invoke: administer) QueryIdentity(QueryIdentityRequest): QueryIdentityResponse = 9; } /** The cluster provides commands for retrieving unstructured diagnostic logs from a Node that may be used to aid in diagnostics. */ -server cluster DiagnosticLogs = 50 { +cluster DiagnosticLogs = 50 { + revision 1; // NOTE: Default/not specifically set + enum IntentEnum : enum8 { kEndUserSupport = 0; kNetworkDiag = 1; @@ -1410,11 +1706,21 @@ server cluster DiagnosticLogs = 50 { optional char_string<32> transferFileDesignator = 2; } + response struct RetrieveLogsResponse = 1 { + StatusEnum status = 0; + long_octet_string logContent = 1; + optional epoch_us UTCTimeStamp = 2; + optional systime_us timeSinceBoot = 3; + } + + /** Retrieving diagnostic logs from a Node */ command RetrieveLogsRequest(RetrieveLogsRequestRequest): RetrieveLogsResponse = 0; } /** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ -server cluster GeneralDiagnostics = 51 { +cluster GeneralDiagnostics = 51 { + revision 2; + enum BootReasonEnum : enum8 { kUnspecified = 0; kPowerOnReboot = 1; @@ -1496,7 +1802,12 @@ server cluster GeneralDiagnostics = 51 { readonly attribute NetworkInterface networkInterfaces[] = 0; readonly attribute int16u rebootCount = 1; - readonly attribute int64u upTime = 2; + readonly attribute optional int64u upTime = 2; + readonly attribute optional int32u totalOperationalHours = 3; + readonly attribute optional BootReasonEnum bootReason = 4; + readonly attribute optional HardwareFaultEnum activeHardwareFaults[] = 5; + readonly attribute optional RadioFaultEnum activeRadioFaults[] = 6; + readonly attribute optional NetworkFaultEnum activeNetworkFaults[] = 7; readonly attribute boolean testEventTriggersEnabled = 8; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; @@ -1511,16 +1822,20 @@ server cluster GeneralDiagnostics = 51 { } response struct TimeSnapshotResponse = 2 { - systime_us systemTimeUs = 0; - nullable epoch_us UTCTimeUs = 1; + systime_ms systemTimeMs = 0; + nullable posix_ms posixTimeMs = 1; } + /** Provide a means for certification tests to trigger some test-plan-specific events */ command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; + /** Take a snapshot of system time and epoch time. */ command TimeSnapshot(): TimeSnapshotResponse = 1; } /** The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ -server cluster SoftwareDiagnostics = 52 { +cluster SoftwareDiagnostics = 52 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kWatermarks = 0x1; } @@ -1539,16 +1854,25 @@ server cluster SoftwareDiagnostics = 52 { optional octet_string faultRecording = 2; } + readonly attribute optional ThreadMetricsStruct threadMetrics[] = 0; + readonly attribute optional int64u currentHeapFree = 1; + readonly attribute optional int64u currentHeapUsed = 2; + readonly attribute optional int64u currentHeapHighWatermark = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; readonly attribute attrib_id attributeList[] = 65531; readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + + /** Reception of this command SHALL reset the values: The StackFreeMinimum field of the ThreadMetrics attribute, CurrentHeapHighWaterMark attribute. */ + command access(invoke: manage) ResetWatermarks(): DefaultSuccess = 0; } /** The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems */ -server cluster ThreadNetworkDiagnostics = 53 { +cluster ThreadNetworkDiagnostics = 53 { + revision 1; // NOTE: Default/not specifically set + enum ConnectionStatusEnum : enum8 { kConnected = 0; kNotConnected = 1; @@ -1643,6 +1967,7 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute nullable int16u panId = 3; readonly attribute nullable int64u extendedPanId = 4; readonly attribute nullable octet_string<17> meshLocalPrefix = 5; + readonly attribute optional int64u overrunCount = 6; readonly attribute NeighborTableStruct neighborTable[] = 7; readonly attribute RouteTableStruct routeTable[] = 8; readonly attribute nullable int32u partitionId = 9; @@ -1650,6 +1975,51 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute nullable int16u dataVersion = 11; readonly attribute nullable int16u stableDataVersion = 12; readonly attribute nullable int8u leaderRouterId = 13; + readonly attribute optional int16u detachedRoleCount = 14; + readonly attribute optional int16u childRoleCount = 15; + readonly attribute optional int16u routerRoleCount = 16; + readonly attribute optional int16u leaderRoleCount = 17; + readonly attribute optional int16u attachAttemptCount = 18; + readonly attribute optional int16u partitionIdChangeCount = 19; + readonly attribute optional int16u betterPartitionAttachAttemptCount = 20; + readonly attribute optional int16u parentChangeCount = 21; + readonly attribute optional int32u txTotalCount = 22; + readonly attribute optional int32u txUnicastCount = 23; + readonly attribute optional int32u txBroadcastCount = 24; + readonly attribute optional int32u txAckRequestedCount = 25; + readonly attribute optional int32u txAckedCount = 26; + readonly attribute optional int32u txNoAckRequestedCount = 27; + readonly attribute optional int32u txDataCount = 28; + readonly attribute optional int32u txDataPollCount = 29; + readonly attribute optional int32u txBeaconCount = 30; + readonly attribute optional int32u txBeaconRequestCount = 31; + readonly attribute optional int32u txOtherCount = 32; + readonly attribute optional int32u txRetryCount = 33; + readonly attribute optional int32u txDirectMaxRetryExpiryCount = 34; + readonly attribute optional int32u txIndirectMaxRetryExpiryCount = 35; + readonly attribute optional int32u txErrCcaCount = 36; + readonly attribute optional int32u txErrAbortCount = 37; + readonly attribute optional int32u txErrBusyChannelCount = 38; + readonly attribute optional int32u rxTotalCount = 39; + readonly attribute optional int32u rxUnicastCount = 40; + readonly attribute optional int32u rxBroadcastCount = 41; + readonly attribute optional int32u rxDataCount = 42; + readonly attribute optional int32u rxDataPollCount = 43; + readonly attribute optional int32u rxBeaconCount = 44; + readonly attribute optional int32u rxBeaconRequestCount = 45; + readonly attribute optional int32u rxOtherCount = 46; + readonly attribute optional int32u rxAddressFilteredCount = 47; + readonly attribute optional int32u rxDestAddrFilteredCount = 48; + readonly attribute optional int32u rxDuplicatedCount = 49; + readonly attribute optional int32u rxErrNoFrameCount = 50; + readonly attribute optional int32u rxErrUnknownNeighborCount = 51; + readonly attribute optional int32u rxErrInvalidSrcAddrCount = 52; + readonly attribute optional int32u rxErrSecCount = 53; + readonly attribute optional int32u rxErrFcsCount = 54; + readonly attribute optional int32u rxErrOtherCount = 55; + readonly attribute optional nullable int64u activeTimestamp = 56; + readonly attribute optional nullable int64u pendingTimestamp = 57; + readonly attribute optional nullable int32u delay = 58; readonly attribute nullable SecurityPolicy securityPolicy = 59; readonly attribute nullable octet_string<4> channelPage0Mask = 60; readonly attribute nullable OperationalDatasetComponents operationalDatasetComponents = 61; @@ -1660,10 +2030,15 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute attrib_id attributeList[] = 65531; readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + + /** Reception of this command SHALL reset the OverrunCount attributes to 0 */ + command access(invoke: manage) ResetCounts(): DefaultSuccess = 0; } /** The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ -server cluster WiFiNetworkDiagnostics = 54 { +cluster WiFiNetworkDiagnostics = 54 { + revision 1; // NOTE: Default/not specifically set + enum AssociationFailureCauseEnum : enum8 { kUnknown = 0; kAssociationFailed = 1; @@ -1718,16 +2093,29 @@ server cluster WiFiNetworkDiagnostics = 54 { readonly attribute nullable WiFiVersionEnum wiFiVersion = 2; readonly attribute nullable int16u channelNumber = 3; readonly attribute nullable int8s rssi = 4; + readonly attribute optional nullable int32u beaconLostCount = 5; + readonly attribute optional nullable int32u beaconRxCount = 6; + readonly attribute optional nullable int32u packetMulticastRxCount = 7; + readonly attribute optional nullable int32u packetMulticastTxCount = 8; + readonly attribute optional nullable int32u packetUnicastRxCount = 9; + readonly attribute optional nullable int32u packetUnicastTxCount = 10; + readonly attribute optional nullable int64u currentMaxRate = 11; + readonly attribute optional nullable int64u overrunCount = 12; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; readonly attribute attrib_id attributeList[] = 65531; readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + + /** Reception of this command SHALL reset the Breacon and Packet related count attributes to 0 */ + command ResetCounts(): DefaultSuccess = 0; } /** The Ethernet Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */ -server cluster EthernetNetworkDiagnostics = 55 { +cluster EthernetNetworkDiagnostics = 55 { + revision 1; // NOTE: Default/not specifically set + enum PHYRateEnum : enum8 { kRate10M = 0; kRate100M = 1; @@ -1746,15 +2134,15 @@ server cluster EthernetNetworkDiagnostics = 55 { kErrorCounts = 0x2; } - readonly attribute nullable PHYRateEnum PHYRate = 0; - readonly attribute nullable boolean fullDuplex = 1; - readonly attribute int64u packetRxCount = 2; - readonly attribute int64u packetTxCount = 3; - readonly attribute int64u txErrCount = 4; - readonly attribute int64u collisionCount = 5; - readonly attribute int64u overrunCount = 6; - readonly attribute nullable boolean carrierDetect = 7; - readonly attribute int64u timeSinceReset = 8; + readonly attribute optional nullable PHYRateEnum PHYRate = 0; + readonly attribute optional nullable boolean fullDuplex = 1; + readonly attribute optional int64u packetRxCount = 2; + readonly attribute optional int64u packetTxCount = 3; + readonly attribute optional int64u txErrCount = 4; + readonly attribute optional int64u collisionCount = 5; + readonly attribute optional int64u overrunCount = 6; + readonly attribute optional nullable boolean carrierDetect = 7; + readonly attribute optional int64u timeSinceReset = 8; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1762,13 +2150,16 @@ server cluster EthernetNetworkDiagnostics = 55 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + /** Reception of this command SHALL reset the attributes: PacketRxCount, PacketTxCount, TxErrCount, CollisionCount, OverrunCount to 0 */ command access(invoke: manage) ResetCounts(): DefaultSuccess = 0; } /** This cluster exposes interactions with a switch device, for the purpose of using those interactions by other devices. Two types of switch devices are supported: latching switch (e.g. rocker switch) and momentary switch (e.g. push button), distinguished with their feature flags. Interactions with the switch device are exposed as attributes (for the latching switch) and as events (for both types of switches). An interested party MAY subscribe to these attributes/events and thus be informed of the interactions, and can perform actions based on this, for example by sending commands to perform an action such as controlling a light or a window shade. */ -server cluster Switch = 59 { +cluster Switch = 59 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kLatchingSwitch = 0x1; kMomentarySwitch = 0x2; @@ -1809,6 +2200,7 @@ server cluster Switch = 59 { readonly attribute int8u numberOfPositions = 0; readonly attribute int8u currentPosition = 1; + readonly attribute optional int8u multiPressMax = 2; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1818,7 +2210,9 @@ server cluster Switch = 59 { } /** Commands to trigger a Node to allow a new Administrator to commission it. */ -server cluster AdministratorCommissioning = 60 { +cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + enum CommissioningWindowStatusEnum : enum8 { kWindowNotOpen = 0; kEnhancedWindowOpen = 1; @@ -1853,12 +2247,22 @@ server cluster AdministratorCommissioning = 60 { octet_string<32> salt = 4; } + request struct OpenBasicCommissioningWindowRequest { + int16u commissioningTimeout = 0; + } + + /** This command is used by a current Administrator to instruct a Node to go into commissioning mode using enhanced commissioning method. */ timed command access(invoke: administer) OpenCommissioningWindow(OpenCommissioningWindowRequest): DefaultSuccess = 0; + /** This command is used by a current Administrator to instruct a Node to go into commissioning mode using basic commissioning method, if the node supports it. */ + timed command access(invoke: administer) OpenBasicCommissioningWindow(OpenBasicCommissioningWindowRequest): DefaultSuccess = 1; + /** This command is used by a current Administrator to instruct a Node to revoke any active Open Commissioning Window or Open Basic Commissioning Window command. */ timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; } /** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ -server cluster OperationalCredentials = 62 { +cluster OperationalCredentials = 62 { + revision 1; // NOTE: Default/not specifically set + enum CertificateChainTypeEnum : enum8 { kDACCertificate = 1; kPAICertificate = 2; @@ -1909,15 +2313,29 @@ server cluster OperationalCredentials = 62 { octet_string<32> attestationNonce = 0; } + response struct AttestationResponse = 1 { + octet_string<900> attestationElements = 0; + octet_string<64> attestationSignature = 1; + } + request struct CertificateChainRequestRequest { CertificateChainTypeEnum certificateType = 0; } + response struct CertificateChainResponse = 3 { + octet_string<600> certificate = 0; + } + request struct CSRRequestRequest { octet_string<32> CSRNonce = 0; optional boolean isForUpdateNOC = 1; } + response struct CSRResponse = 5 { + octet_string NOCSRElements = 0; + octet_string attestationSignature = 1; + } + request struct AddNOCRequest { octet_string<400> NOCValue = 0; optional octet_string<400> ICACValue = 1; @@ -1931,6 +2349,12 @@ server cluster OperationalCredentials = 62 { optional octet_string ICACValue = 1; } + response struct NOCResponse = 8 { + NodeOperationalCertStatusEnum statusCode = 0; + optional fabric_idx fabricIndex = 1; + optional char_string<128> debugText = 2; + } + request struct UpdateFabricLabelRequest { char_string<32> label = 0; } @@ -1943,38 +2367,28 @@ server cluster OperationalCredentials = 62 { octet_string rootCACertificate = 0; } - response struct AttestationResponse = 1 { - octet_string<900> attestationElements = 0; - octet_string<64> attestationSignature = 1; - } - - response struct CertificateChainResponse = 3 { - octet_string<600> certificate = 0; - } - - response struct CSRResponse = 5 { - octet_string NOCSRElements = 0; - octet_string attestationSignature = 1; - } - - response struct NOCResponse = 8 { - NodeOperationalCertStatusEnum statusCode = 0; - optional fabric_idx fabricIndex = 1; - optional char_string<128> debugText = 2; - } - + /** Sender is requesting attestation information from the receiver. */ command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0; + /** Sender is requesting a device attestation certificate from the receiver. */ command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; + /** Sender is requesting a certificate signing request (CSR) from the receiver. */ command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; + /** Sender is requesting to add the new node operational certificates. */ command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; + /** Sender is requesting to update the node operational certificates. */ fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + /** This command SHALL be used by an Administrative Node to set the user-visible Label field for a given Fabric, as reflected by entries in the Fabrics attribute. */ fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + /** This command is used by Administrative Nodes to remove a given fabric index and delete all associated fabric-scoped data. */ command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; + /** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */ command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } /** The Group Key Management Cluster is the mechanism by which group keys are managed. */ -server cluster GroupKeyManagement = 63 { +cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + enum GroupKeySecurityPolicyEnum : enum8 { kTrustFirst = 0; kCacheAndSync = 1; @@ -2027,27 +2441,33 @@ server cluster GroupKeyManagement = 63 { int16u groupKeySetID = 0; } - request struct KeySetRemoveRequest { - int16u groupKeySetID = 0; - } - response struct KeySetReadResponse = 2 { GroupKeySetStruct groupKeySet = 0; } + request struct KeySetRemoveRequest { + int16u groupKeySetID = 0; + } + response struct KeySetReadAllIndicesResponse = 5 { int16u groupKeySetIDs[] = 0; } + /** Write a new set of keys for the given key set id. */ fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + /** Read the keys for a given key set id. */ fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + /** Revoke a Root Key from a Group */ fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + /** Return the list of Group Key Sets associated with the accessing fabric */ fabric command access(invoke: administer) KeySetReadAllIndices(): KeySetReadAllIndicesResponse = 4; } /** The Fixed Label Cluster provides a feature for the device to tag an endpoint with zero or more read only labels. */ -server cluster FixedLabel = 64 { +cluster FixedLabel = 64 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -2063,7 +2483,9 @@ server cluster FixedLabel = 64 { } /** The User Label Cluster provides a feature to tag an endpoint with zero or more labels. */ -server cluster UserLabel = 65 { +cluster UserLabel = 65 { + revision 1; // NOTE: Default/not specifically set + struct LabelStruct { char_string<16> label = 0; char_string<16> value = 1; @@ -2079,7 +2501,9 @@ server cluster UserLabel = 65 { } /** This cluster provides an interface to a boolean state called StateValue. */ -server cluster BooleanState = 69 { +cluster BooleanState = 69 { + revision 1; + info event StateChange = 0 { boolean stateValue = 0; } @@ -2094,7 +2518,9 @@ server cluster BooleanState = 69 { } /** Attributes and commands for selecting a mode from a list of supported options. */ -server cluster ModeSelect = 80 { +cluster ModeSelect = 80 { + revision 2; + bitmap Feature : bitmap32 { kOnOff = 0x1; } @@ -2114,6 +2540,8 @@ server cluster ModeSelect = 80 { readonly attribute nullable enum16 standardNamespace = 1; readonly attribute ModeOptionStruct supportedModes[] = 2; readonly attribute int8u currentMode = 3; + attribute optional nullable int8u startUpMode = 4; + attribute optional nullable int8u onMode = 5; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2125,19 +2553,26 @@ server cluster ModeSelect = 80 { int8u newMode = 0; } + /** On receipt of this command, if the NewMode field matches the Mode field in an entry of the SupportedModes list, the server SHALL set the CurrentMode attribute to the NewMode value, otherwise, the server SHALL respond with an INVALID_COMMAND status response. */ command ChangeToMode(ChangeToModeRequest): DefaultSuccess = 0; } /** Attributes and commands for configuring the temperature control, and reporting temperature. */ -server cluster TemperatureControl = 86 { +cluster TemperatureControl = 86 { + revision 1; // NOTE: Default/not specifically set + bitmap Feature : bitmap32 { kTemperatureNumber = 0x1; kTemperatureLevel = 0x2; kTemperatureStep = 0x4; } - readonly attribute int8u selectedTemperatureLevel = 4; - readonly attribute char_string supportedTemperatureLevels[] = 5; + readonly attribute optional temperature temperatureSetpoint = 0; + readonly attribute optional temperature minTemperature = 1; + readonly attribute optional temperature maxTemperature = 2; + readonly attribute optional temperature step = 3; + readonly attribute optional int8u selectedTemperatureLevel = 4; + readonly attribute optional char_string supportedTemperatureLevels[] = 5; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2150,11 +2585,14 @@ server cluster TemperatureControl = 86 { optional int8u targetTemperatureLevel = 1; } + /** Set Temperature */ command SetTemperature(SetTemperatureRequest): DefaultSuccess = 0; } /** An interface to a generic way to secure a door */ -server cluster DoorLock = 257 { +cluster DoorLock = 257 { + revision 7; + enum AlarmCodeEnum : enum8 { kLockJammed = 0; kLockFactoryReset = 1; @@ -2535,9 +2973,39 @@ server cluster DoorLock = 257 { readonly attribute nullable DlLockState lockState = 0; readonly attribute DlLockType lockType = 1; readonly attribute boolean actuatorEnabled = 2; + readonly attribute optional nullable DoorStateEnum doorState = 3; + attribute access(write: manage) optional int32u doorOpenEvents = 4; + attribute access(write: manage) optional int32u doorClosedEvents = 5; + attribute access(write: manage) optional int16u openPeriod = 6; + readonly attribute optional int16u numberOfTotalUsersSupported = 17; + readonly attribute optional int16u numberOfPINUsersSupported = 18; + readonly attribute optional int16u numberOfRFIDUsersSupported = 19; + readonly attribute optional int8u numberOfWeekDaySchedulesSupportedPerUser = 20; + readonly attribute optional int8u numberOfYearDaySchedulesSupportedPerUser = 21; + readonly attribute optional int8u numberOfHolidaySchedulesSupported = 22; + readonly attribute optional int8u maxPINCodeLength = 23; + readonly attribute optional int8u minPINCodeLength = 24; + readonly attribute optional int8u maxRFIDCodeLength = 25; + readonly attribute optional int8u minRFIDCodeLength = 26; + readonly attribute optional DlCredentialRuleMask credentialRulesSupport = 27; + readonly attribute optional int8u numberOfCredentialsSupportedPerUser = 28; + attribute access(write: manage) optional char_string<3> language = 33; + attribute access(write: manage) optional int8u LEDSettings = 34; attribute access(write: manage) int32u autoRelockTime = 35; + attribute access(write: manage) optional int8u soundVolume = 36; attribute access(write: manage) OperatingModeEnum operatingMode = 37; readonly attribute DlSupportedOperatingModes supportedOperatingModes = 38; + readonly attribute optional DlDefaultConfigurationRegister defaultConfigurationRegister = 39; + attribute access(write: administer) optional boolean enableLocalProgramming = 40; + attribute access(write: manage) optional boolean enableOneTouchLocking = 41; + attribute access(write: manage) optional boolean enableInsideStatusLED = 42; + attribute access(write: manage) optional boolean enablePrivacyModeButton = 43; + attribute access(write: administer) optional DlLocalProgrammingFeatures localProgrammingFeatures = 44; + attribute access(write: administer) optional int8u wrongCodeEntryLimit = 48; + attribute access(write: administer) optional int8u userCodeTemporaryDisableTime = 49; + attribute access(write: administer) optional boolean sendPINOverTheAir = 50; + attribute access(write: administer) optional boolean requirePINforRemoteOperation = 51; + attribute access(write: administer) optional int16u expiringUserTimeout = 53; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2553,12 +3021,200 @@ server cluster DoorLock = 257 { optional octet_string PINCode = 0; } + request struct UnlockWithTimeoutRequest { + int16u timeout = 0; + optional octet_string PINCode = 1; + } + + request struct SetWeekDayScheduleRequest { + int8u weekDayIndex = 0; + int16u userIndex = 1; + DaysMaskMap daysMask = 2; + int8u startHour = 3; + int8u startMinute = 4; + int8u endHour = 5; + int8u endMinute = 6; + } + + request struct GetWeekDayScheduleRequest { + int8u weekDayIndex = 0; + int16u userIndex = 1; + } + + response struct GetWeekDayScheduleResponse = 12 { + int8u weekDayIndex = 0; + int16u userIndex = 1; + DlStatus status = 2; + optional DaysMaskMap daysMask = 3; + optional int8u startHour = 4; + optional int8u startMinute = 5; + optional int8u endHour = 6; + optional int8u endMinute = 7; + } + + request struct ClearWeekDayScheduleRequest { + int8u weekDayIndex = 0; + int16u userIndex = 1; + } + + request struct SetYearDayScheduleRequest { + int8u yearDayIndex = 0; + int16u userIndex = 1; + epoch_s localStartTime = 2; + epoch_s localEndTime = 3; + } + + request struct GetYearDayScheduleRequest { + int8u yearDayIndex = 0; + int16u userIndex = 1; + } + + response struct GetYearDayScheduleResponse = 15 { + int8u yearDayIndex = 0; + int16u userIndex = 1; + DlStatus status = 2; + optional epoch_s localStartTime = 3; + optional epoch_s localEndTime = 4; + } + + request struct ClearYearDayScheduleRequest { + int8u yearDayIndex = 0; + int16u userIndex = 1; + } + + request struct SetHolidayScheduleRequest { + int8u holidayIndex = 0; + epoch_s localStartTime = 1; + epoch_s localEndTime = 2; + OperatingModeEnum operatingMode = 3; + } + + request struct GetHolidayScheduleRequest { + int8u holidayIndex = 0; + } + + response struct GetHolidayScheduleResponse = 18 { + int8u holidayIndex = 0; + DlStatus status = 1; + optional epoch_s localStartTime = 2; + optional epoch_s localEndTime = 3; + optional OperatingModeEnum operatingMode = 4; + } + + request struct ClearHolidayScheduleRequest { + int8u holidayIndex = 0; + } + + request struct SetUserRequest { + DataOperationTypeEnum operationType = 0; + int16u userIndex = 1; + nullable char_string userName = 2; + nullable int32u userUniqueID = 3; + nullable UserStatusEnum userStatus = 4; + nullable UserTypeEnum userType = 5; + nullable CredentialRuleEnum credentialRule = 6; + } + + request struct GetUserRequest { + int16u userIndex = 0; + } + + response struct GetUserResponse = 28 { + int16u userIndex = 0; + nullable char_string userName = 1; + nullable int32u userUniqueID = 2; + nullable UserStatusEnum userStatus = 3; + nullable UserTypeEnum userType = 4; + nullable CredentialRuleEnum credentialRule = 5; + nullable CredentialStruct credentials[] = 6; + nullable fabric_idx creatorFabricIndex = 7; + nullable fabric_idx lastModifiedFabricIndex = 8; + nullable int16u nextUserIndex = 9; + } + + request struct ClearUserRequest { + int16u userIndex = 0; + } + + request struct SetCredentialRequest { + DataOperationTypeEnum operationType = 0; + CredentialStruct credential = 1; + long_octet_string credentialData = 2; + nullable int16u userIndex = 3; + nullable UserStatusEnum userStatus = 4; + nullable UserTypeEnum userType = 5; + } + + response struct SetCredentialResponse = 35 { + DlStatus status = 0; + nullable int16u userIndex = 1; + nullable int16u nextCredentialIndex = 2; + } + + request struct GetCredentialStatusRequest { + CredentialStruct credential = 0; + } + + response struct GetCredentialStatusResponse = 37 { + boolean credentialExists = 0; + nullable int16u userIndex = 1; + nullable fabric_idx creatorFabricIndex = 2; + nullable fabric_idx lastModifiedFabricIndex = 3; + nullable int16u nextCredentialIndex = 4; + } + + request struct ClearCredentialRequest { + nullable CredentialStruct credential = 0; + } + + request struct UnboltDoorRequest { + optional octet_string PINCode = 0; + } + + /** This command causes the lock device to lock the door. */ timed command LockDoor(LockDoorRequest): DefaultSuccess = 0; + /** This command causes the lock device to unlock the door. */ timed command UnlockDoor(UnlockDoorRequest): DefaultSuccess = 1; + /** This command causes the lock device to unlock the door with a timeout parameter. */ + timed command UnlockWithTimeout(UnlockWithTimeoutRequest): DefaultSuccess = 3; + /** Set a weekly repeating schedule for a specified user. */ + command access(invoke: administer) SetWeekDaySchedule(SetWeekDayScheduleRequest): DefaultSuccess = 11; + /** Retrieve the specific weekly schedule for the specific user. */ + command access(invoke: administer) GetWeekDaySchedule(GetWeekDayScheduleRequest): GetWeekDayScheduleResponse = 12; + /** Clear the specific weekly schedule or all weekly schedules for the specific user. */ + command access(invoke: administer) ClearWeekDaySchedule(ClearWeekDayScheduleRequest): DefaultSuccess = 13; + /** Set a time-specific schedule ID for a specified user. */ + command access(invoke: administer) SetYearDaySchedule(SetYearDayScheduleRequest): DefaultSuccess = 14; + /** Returns the year day schedule data for the specified schedule and user indexes. */ + command access(invoke: administer) GetYearDaySchedule(GetYearDayScheduleRequest): GetYearDayScheduleResponse = 15; + /** Clears the specific year day schedule or all year day schedules for the specific user. */ + command access(invoke: administer) ClearYearDaySchedule(ClearYearDayScheduleRequest): DefaultSuccess = 16; + /** Set the holiday Schedule by specifying local start time and local end time with respect to any Lock Operating Mode. */ + command access(invoke: administer) SetHolidaySchedule(SetHolidayScheduleRequest): DefaultSuccess = 17; + /** Get the holiday schedule for the specified index. */ + command access(invoke: administer) GetHolidaySchedule(GetHolidayScheduleRequest): GetHolidayScheduleResponse = 18; + /** Clears the holiday schedule or all holiday schedules. */ + command access(invoke: administer) ClearHolidaySchedule(ClearHolidayScheduleRequest): DefaultSuccess = 19; + /** Set User into the lock. */ + timed command access(invoke: administer) SetUser(SetUserRequest): DefaultSuccess = 26; + /** Retrieve User. */ + command access(invoke: administer) GetUser(GetUserRequest): GetUserResponse = 27; + /** Clears a User or all Users. */ + timed command access(invoke: administer) ClearUser(ClearUserRequest): DefaultSuccess = 29; + /** Set a credential (e.g. PIN, RFID, Fingerprint, etc.) into the lock for a new user, existing user, or ProgrammingUser. */ + timed command access(invoke: administer) SetCredential(SetCredentialRequest): SetCredentialResponse = 34; + /** Retrieve the status of a particular credential (e.g. PIN, RFID, Fingerprint, etc.) by index. */ + command access(invoke: administer) GetCredentialStatus(GetCredentialStatusRequest): GetCredentialStatusResponse = 36; + /** Clear one, one type, or all credentials except ProgrammingPIN credential. */ + timed command access(invoke: administer) ClearCredential(ClearCredentialRequest): DefaultSuccess = 38; + /** This command causes the lock device to unlock the door without pulling the latch. */ + timed command UnboltDoor(UnboltDoorRequest): DefaultSuccess = 39; } /** Provides an interface for controlling and adjusting automatic window coverings. */ -server cluster WindowCovering = 258 { +cluster WindowCovering = 258 { + revision 5; + enum EndProductType : enum8 { kRollerShade = 0; kRomanShade = 1; @@ -2648,10 +3304,27 @@ server cluster WindowCovering = 258 { } readonly attribute Type type = 0; + readonly attribute optional int16u physicalClosedLimitLift = 1; + readonly attribute optional int16u physicalClosedLimitTilt = 2; + readonly attribute optional nullable int16u currentPositionLift = 3; + readonly attribute optional nullable int16u currentPositionTilt = 4; + readonly attribute optional int16u numberOfActuationsLift = 5; + readonly attribute optional int16u numberOfActuationsTilt = 6; readonly attribute ConfigStatus configStatus = 7; + readonly attribute optional nullable percent currentPositionLiftPercentage = 8; + readonly attribute optional nullable percent currentPositionTiltPercentage = 9; readonly attribute OperationalStatus operationalStatus = 10; + readonly attribute optional nullable percent100ths targetPositionLiftPercent100ths = 11; + readonly attribute optional nullable percent100ths targetPositionTiltPercent100ths = 12; readonly attribute EndProductType endProductType = 13; + readonly attribute optional nullable percent100ths currentPositionLiftPercent100ths = 14; + readonly attribute optional nullable percent100ths currentPositionTiltPercent100ths = 15; + readonly attribute optional int16u installedOpenLimitLift = 16; + readonly attribute optional int16u installedClosedLimitLift = 17; + readonly attribute optional int16u installedOpenLimitTilt = 18; + readonly attribute optional int16u installedClosedLimitTilt = 19; attribute access(write: manage) Mode mode = 23; + readonly attribute optional SafetyStatus safetyStatus = 26; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2659,13 +3332,42 @@ server cluster WindowCovering = 258 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + request struct GoToLiftValueRequest { + int16u liftValue = 0; + } + + request struct GoToLiftPercentageRequest { + percent100ths liftPercent100thsValue = 0; + } + + request struct GoToTiltValueRequest { + int16u tiltValue = 0; + } + + request struct GoToTiltPercentageRequest { + percent100ths tiltPercent100thsValue = 0; + } + + /** Moves window covering to InstalledOpenLimitLift and InstalledOpenLimitTilt */ command UpOrOpen(): DefaultSuccess = 0; + /** Moves window covering to InstalledClosedLimitLift and InstalledCloseLimitTilt */ command DownOrClose(): DefaultSuccess = 1; + /** Stop any adjusting of window covering */ command StopMotion(): DefaultSuccess = 2; + /** Go to lift value specified */ + command GoToLiftValue(GoToLiftValueRequest): DefaultSuccess = 4; + /** Go to lift percentage specified */ + command GoToLiftPercentage(GoToLiftPercentageRequest): DefaultSuccess = 5; + /** Go to tilt value specified */ + command GoToTiltValue(GoToTiltValueRequest): DefaultSuccess = 7; + /** Go to tilt percentage specified */ + command GoToTiltPercentage(GoToTiltPercentageRequest): DefaultSuccess = 8; } /** An interface for configuring and controlling pumps. */ -server cluster PumpConfigurationAndControl = 512 { +cluster PumpConfigurationAndControl = 512 { + revision 3; + enum ControlModeEnum : enum8 { kConstantSpeed = 0; kConstantPressure = 1; @@ -2758,12 +3460,26 @@ server cluster PumpConfigurationAndControl = 512 { readonly attribute nullable int16s maxPressure = 0; readonly attribute nullable int16u maxSpeed = 1; readonly attribute nullable int16u maxFlow = 2; - readonly attribute nullable int16s minConstPressure = 3; - readonly attribute nullable int16s maxConstPressure = 4; + readonly attribute optional nullable int16s minConstPressure = 3; + readonly attribute optional nullable int16s maxConstPressure = 4; + readonly attribute optional nullable int16s minCompPressure = 5; + readonly attribute optional nullable int16s maxCompPressure = 6; + readonly attribute optional nullable int16u minConstSpeed = 7; + readonly attribute optional nullable int16u maxConstSpeed = 8; + readonly attribute optional nullable int16u minConstFlow = 9; + readonly attribute optional nullable int16u maxConstFlow = 10; + readonly attribute optional nullable int16s minConstTemp = 11; + readonly attribute optional nullable int16s maxConstTemp = 12; + readonly attribute optional PumpStatusBitmap pumpStatus = 16; readonly attribute OperationModeEnum effectiveOperationMode = 17; readonly attribute ControlModeEnum effectiveControlMode = 18; readonly attribute nullable int16s capacity = 19; + readonly attribute optional nullable int16u speed = 20; + attribute access(write: manage) optional nullable int24u lifetimeRunningHours = 21; + readonly attribute optional nullable int24u power = 22; + attribute access(write: manage) optional nullable int32u lifetimeEnergyConsumed = 23; attribute access(write: manage) OperationModeEnum operationMode = 32; + attribute access(write: manage) optional ControlModeEnum controlMode = 33; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2773,14 +3489,44 @@ server cluster PumpConfigurationAndControl = 512 { } /** An interface for configuring and controlling the functionality of a thermostat. */ -server cluster Thermostat = 513 { - enum SetpointAdjustMode : enum8 { - kHeat = 0; - kCool = 1; - kBoth = 2; +cluster Thermostat = 513 { + revision 6; + + enum ACCapacityFormatEnum : enum8 { + kBTUh = 0; + } + + enum ACCompressorTypeEnum : enum8 { + kUnknown = 0; + kT1 = 1; + kT2 = 2; + kT3 = 3; + } + + enum ACLouverPositionEnum : enum8 { + kClosed = 1; + kOpen = 2; + kQuarter = 3; + kHalf = 4; + kThreeQuarters = 5; + } + + enum ACRefrigerantTypeEnum : enum8 { + kUnknown = 0; + kR22 = 1; + kR410a = 2; + kR407c = 3; } - enum ThermostatControlSequence : enum8 { + enum ACTypeEnum : enum8 { + kUnknown = 0; + kCoolingFixed = 1; + kHeatPumpFixed = 2; + kCoolingInverter = 3; + kHeatPumpInverter = 4; + } + + enum ControlSequenceOfOperationEnum : enum8 { kCoolingOnly = 0; kCoolingWithReheat = 1; kHeatingOnly = 2; @@ -2789,13 +3535,29 @@ server cluster Thermostat = 513 { kCoolingAndHeatingWithReheat = 5; } - enum ThermostatRunningMode : enum8 { - kOff = 0; - kCool = 3; - kHeat = 4; + enum SetpointChangeSourceEnum : enum8 { + kManual = 0; + kSchedule = 1; + kExternal = 2; + } + + enum SetpointRaiseLowerModeEnum : enum8 { + kHeat = 0; + kCool = 1; + kBoth = 2; } - enum ThermostatSystemMode : enum8 { + enum StartOfWeekEnum : enum8 { + kSunday = 0; + kMonday = 1; + kTuesday = 2; + kWednesday = 3; + kThursday = 4; + kFriday = 5; + kSaturday = 6; + } + + enum SystemModeEnum : enum8 { kOff = 0; kAuto = 1; kCool = 3; @@ -2807,15 +3569,23 @@ server cluster Thermostat = 513 { kSleep = 9; } - bitmap DayOfWeek : bitmap8 { - kSunday = 0x1; - kMonday = 0x2; - kTuesday = 0x4; - kWednesday = 0x8; - kThursday = 0x10; - kFriday = 0x20; - kSaturday = 0x40; - kAway = 0x80; + enum TemperatureSetpointHoldEnum : enum8 { + kSetpointHoldOff = 0; + kSetpointHoldOn = 1; + } + + enum ThermostatRunningModeEnum : enum8 { + kOff = 0; + kCool = 3; + kHeat = 4; + } + + bitmap ACErrorCodeBitmap : bitmap32 { + kCompressorFail = 0x1; + kRoomSensorFail = 0x2; + kOutdoorSensorFail = 0x4; + kCoilSensorFail = 0x8; + kFanFail = 0x10; } bitmap Feature : bitmap32 { @@ -2828,21 +3598,106 @@ server cluster Thermostat = 513 { kLocalTemperatureNotExposed = 0x40; } - bitmap ModeForSequence : bitmap8 { + bitmap HVACSystemTypeBitmap : bitmap8 { + kCoolingStage = 0x3; + kHeatingStage = 0xC; + kHeatingIsHeatPump = 0x10; + kHeatingUsesFuel = 0x20; + } + + bitmap ProgrammingOperationModeBitmap : bitmap8 { + kScheduleActive = 0x1; + kAutoRecovery = 0x2; + kEconomy = 0x4; + } + + bitmap RelayStateBitmap : bitmap16 { + kHeat = 0x1; + kCool = 0x2; + kFan = 0x4; + kHeatStage2 = 0x8; + kCoolStage2 = 0x10; + kFanStage2 = 0x20; + kFanStage3 = 0x40; + } + + bitmap RemoteSensingBitmap : bitmap8 { + kLocalTemperature = 0x1; + kOutdoorTemperature = 0x2; + kOccupancy = 0x4; + } + + bitmap ScheduleDayOfWeekBitmap : bitmap8 { + kSunday = 0x1; + kMonday = 0x2; + kTuesday = 0x4; + kWednesday = 0x8; + kThursday = 0x10; + kFriday = 0x20; + kSaturday = 0x40; + kAway = 0x80; + } + + bitmap ScheduleModeBitmap : bitmap8 { kHeatSetpointPresent = 0x1; kCoolSetpointPresent = 0x2; } - struct ThermostatScheduleTransition { + struct WeeklyScheduleTransitionStruct { int16u transitionTime = 0; - nullable int16s heatSetpoint = 1; - nullable int16s coolSetpoint = 2; - } - - readonly attribute nullable int16s localTemperature = 0; - attribute int16s occupiedHeatingSetpoint = 18; - attribute access(write: manage) ThermostatControlSequence controlSequenceOfOperation = 27; - attribute access(write: manage) enum8 systemMode = 28; + nullable temperature heatSetpoint = 1; + nullable temperature coolSetpoint = 2; + } + + readonly attribute nullable temperature localTemperature = 0; + readonly attribute optional nullable temperature outdoorTemperature = 1; + readonly attribute optional bitmap8 occupancy = 2; + readonly attribute optional temperature absMinHeatSetpointLimit = 3; + readonly attribute optional temperature absMaxHeatSetpointLimit = 4; + readonly attribute optional temperature absMinCoolSetpointLimit = 5; + readonly attribute optional temperature absMaxCoolSetpointLimit = 6; + readonly attribute optional int8u PICoolingDemand = 7; + readonly attribute optional int8u PIHeatingDemand = 8; + attribute access(write: manage) optional bitmap8 HVACSystemTypeConfiguration = 9; + attribute access(write: manage) optional int8s localTemperatureCalibration = 16; + attribute optional int16s occupiedCoolingSetpoint = 17; + attribute optional int16s occupiedHeatingSetpoint = 18; + attribute optional int16s unoccupiedCoolingSetpoint = 19; + attribute optional int16s unoccupiedHeatingSetpoint = 20; + attribute access(write: manage) optional int16s minHeatSetpointLimit = 21; + attribute access(write: manage) optional int16s maxHeatSetpointLimit = 22; + attribute access(write: manage) optional int16s minCoolSetpointLimit = 23; + attribute access(write: manage) optional int16s maxCoolSetpointLimit = 24; + attribute access(write: manage) optional int8s minSetpointDeadBand = 25; + attribute access(write: manage) optional RemoteSensingBitmap remoteSensing = 26; + attribute access(write: manage) ControlSequenceOfOperationEnum controlSequenceOfOperation = 27; + attribute access(write: manage) SystemModeEnum systemMode = 28; + readonly attribute optional ThermostatRunningModeEnum thermostatRunningMode = 30; + readonly attribute optional StartOfWeekEnum startOfWeek = 32; + readonly attribute optional int8u numberOfWeeklyTransitions = 33; + readonly attribute optional int8u numberOfDailyTransitions = 34; + attribute access(write: manage) optional TemperatureSetpointHoldEnum temperatureSetpointHold = 35; + attribute access(write: manage) optional nullable int16u temperatureSetpointHoldDuration = 36; + attribute access(write: manage) optional ProgrammingOperationModeBitmap thermostatProgrammingOperationMode = 37; + readonly attribute optional RelayStateBitmap thermostatRunningState = 41; + readonly attribute optional SetpointChangeSourceEnum setpointChangeSource = 48; + readonly attribute optional nullable int16s setpointChangeAmount = 49; + readonly attribute optional epoch_s setpointChangeSourceTimestamp = 50; + attribute access(write: manage) optional nullable int8u occupiedSetback = 52; + readonly attribute optional nullable int8u occupiedSetbackMin = 53; + readonly attribute optional nullable int8u occupiedSetbackMax = 54; + attribute access(write: manage) optional nullable int8u unoccupiedSetback = 55; + readonly attribute optional nullable int8u unoccupiedSetbackMin = 56; + readonly attribute optional nullable int8u unoccupiedSetbackMax = 57; + attribute access(write: manage) optional int8u emergencyHeatDelta = 58; + attribute access(write: manage) optional ACTypeEnum ACType = 64; + attribute access(write: manage) optional int16u ACCapacity = 65; + attribute access(write: manage) optional ACRefrigerantTypeEnum ACRefrigerantType = 66; + attribute access(write: manage) optional ACCompressorTypeEnum ACCompressorType = 67; + attribute access(write: manage) optional ACErrorCodeBitmap ACErrorCode = 68; + attribute access(write: manage) optional ACLouverPositionEnum ACLouverPosition = 69; + readonly attribute optional nullable temperature ACCoilTemperature = 70; + attribute access(write: manage) optional ACCapacityFormatEnum ACCapacityformat = 71; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2851,15 +3706,43 @@ server cluster Thermostat = 513 { readonly attribute int16u clusterRevision = 65533; request struct SetpointRaiseLowerRequest { - SetpointAdjustMode mode = 0; + SetpointRaiseLowerModeEnum mode = 0; int8s amount = 1; } + response struct GetWeeklyScheduleResponse = 0 { + int8u numberOfTransitionsForSequence = 0; + ScheduleDayOfWeekBitmap dayOfWeekForSequence = 1; + ScheduleModeBitmap modeForSequence = 2; + WeeklyScheduleTransitionStruct transitions[] = 3; + } + + request struct SetWeeklyScheduleRequest { + int8u numberOfTransitionsForSequence = 0; + ScheduleDayOfWeekBitmap dayOfWeekForSequence = 1; + ScheduleModeBitmap modeForSequence = 2; + WeeklyScheduleTransitionStruct transitions[] = 3; + } + + request struct GetWeeklyScheduleRequest { + ScheduleDayOfWeekBitmap daysToReturn = 0; + ScheduleModeBitmap modeToReturn = 1; + } + + /** Command description for SetpointRaiseLower */ command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0; + /** Command description for SetWeeklySchedule */ + command access(invoke: manage) SetWeeklySchedule(SetWeeklyScheduleRequest): DefaultSuccess = 1; + /** Command description for GetWeeklySchedule */ + command GetWeeklySchedule(GetWeeklyScheduleRequest): GetWeeklyScheduleResponse = 2; + /** The Clear Weekly Schedule command is used to clear the weekly schedule. */ + command access(invoke: manage) ClearWeeklySchedule(): DefaultSuccess = 3; } /** An interface for controlling a fan in a heating/cooling system. */ -provisional server cluster FanControl = 514 { +provisional cluster FanControl = 514 { + revision 4; + enum AirflowDirectionEnum : enum8 { kForward = 0; kReverse = 1; @@ -2913,16 +3796,35 @@ provisional server cluster FanControl = 514 { readonly attribute FanModeSequenceEnum fanModeSequence = 1; attribute nullable percent percentSetting = 2; readonly attribute percent percentCurrent = 3; + readonly attribute optional int8u speedMax = 4; + attribute optional nullable int8u speedSetting = 5; + readonly attribute optional int8u speedCurrent = 6; + readonly attribute optional RockBitmap rockSupport = 7; + attribute optional RockBitmap rockSetting = 8; + readonly attribute optional WindBitmap windSupport = 9; + attribute optional WindBitmap windSetting = 10; + attribute optional AirflowDirectionEnum airflowDirection = 11; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; readonly attribute attrib_id attributeList[] = 65531; readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + + request struct StepRequest { + StepDirectionEnum direction = 0; + optional boolean wrap = 1; + optional boolean lowestOff = 2; + } + + /** The Step command speeds up or slows down the fan, in steps. */ + command Step(StepRequest): DefaultSuccess = 0; } /** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */ -server cluster ThermostatUserInterfaceConfiguration = 516 { +cluster ThermostatUserInterfaceConfiguration = 516 { + revision 2; + enum KeypadLockoutEnum : enum8 { kNoLockout = 0; kLockout1 = 1; @@ -2944,6 +3846,7 @@ server cluster ThermostatUserInterfaceConfiguration = 516 { attribute TemperatureDisplayModeEnum temperatureDisplayMode = 0; attribute access(write: manage) KeypadLockoutEnum keypadLockout = 1; + attribute access(write: manage) optional ScheduleProgrammingVisibilityEnum scheduleProgrammingVisibility = 2; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2953,7 +3856,9 @@ server cluster ThermostatUserInterfaceConfiguration = 516 { } /** Attributes and commands for controlling the color properties of a color-capable light. */ -server cluster ColorControl = 768 { +cluster ColorControl = 768 { + revision 6; + enum ColorLoopAction : enum8 { kDeactivate = 0; kActivateFromColorLoopStartEnhancedHue = 1; @@ -3023,21 +3928,257 @@ server cluster ColorControl = 768 { kColorTemperature = 0x10; } + readonly attribute optional int8u currentHue = 0; + readonly attribute optional int8u currentSaturation = 1; + readonly attribute optional int16u remainingTime = 2; + readonly attribute optional int16u currentX = 3; + readonly attribute optional int16u currentY = 4; + readonly attribute optional enum8 driftCompensation = 5; + readonly attribute optional char_string<254> compensationText = 6; + readonly attribute optional int16u colorTemperatureMireds = 7; readonly attribute enum8 colorMode = 8; attribute bitmap8 options = 15; readonly attribute nullable int8u numberOfPrimaries = 16; + readonly attribute optional int16u primary1X = 17; + readonly attribute optional int16u primary1Y = 18; + readonly attribute optional nullable int8u primary1Intensity = 19; + readonly attribute optional int16u primary2X = 21; + readonly attribute optional int16u primary2Y = 22; + readonly attribute optional nullable int8u primary2Intensity = 23; + readonly attribute optional int16u primary3X = 25; + readonly attribute optional int16u primary3Y = 26; + readonly attribute optional nullable int8u primary3Intensity = 27; + readonly attribute optional int16u primary4X = 32; + readonly attribute optional int16u primary4Y = 33; + readonly attribute optional nullable int8u primary4Intensity = 34; + readonly attribute optional int16u primary5X = 36; + readonly attribute optional int16u primary5Y = 37; + readonly attribute optional nullable int8u primary5Intensity = 38; + readonly attribute optional int16u primary6X = 40; + readonly attribute optional int16u primary6Y = 41; + readonly attribute optional nullable int8u primary6Intensity = 42; + attribute access(write: manage) optional int16u whitePointX = 48; + attribute access(write: manage) optional int16u whitePointY = 49; + attribute access(write: manage) optional int16u colorPointRX = 50; + attribute access(write: manage) optional int16u colorPointRY = 51; + attribute access(write: manage) optional nullable int8u colorPointRIntensity = 52; + attribute access(write: manage) optional int16u colorPointGX = 54; + attribute access(write: manage) optional int16u colorPointGY = 55; + attribute access(write: manage) optional nullable int8u colorPointGIntensity = 56; + attribute access(write: manage) optional int16u colorPointBX = 58; + attribute access(write: manage) optional int16u colorPointBY = 59; + attribute access(write: manage) optional nullable int8u colorPointBIntensity = 60; + readonly attribute optional int16u enhancedCurrentHue = 16384; readonly attribute enum8 enhancedColorMode = 16385; + readonly attribute optional int8u colorLoopActive = 16386; + readonly attribute optional int8u colorLoopDirection = 16387; + readonly attribute optional int16u colorLoopTime = 16388; + readonly attribute optional int16u colorLoopStartEnhancedHue = 16389; + readonly attribute optional int16u colorLoopStoredEnhancedHue = 16390; readonly attribute bitmap16 colorCapabilities = 16394; + readonly attribute optional int16u colorTempPhysicalMinMireds = 16395; + readonly attribute optional int16u colorTempPhysicalMaxMireds = 16396; + readonly attribute optional int16u coupleColorTempToLevelMinMireds = 16397; + attribute access(write: manage) optional nullable int16u startUpColorTemperatureMireds = 16400; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; readonly attribute attrib_id attributeList[] = 65531; readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + + request struct MoveToHueRequest { + int8u hue = 0; + HueDirection direction = 1; + int16u transitionTime = 2; + bitmap8 optionsMask = 3; + bitmap8 optionsOverride = 4; + } + + request struct MoveHueRequest { + HueMoveMode moveMode = 0; + int8u rate = 1; + bitmap8 optionsMask = 2; + bitmap8 optionsOverride = 3; + } + + request struct StepHueRequest { + HueStepMode stepMode = 0; + int8u stepSize = 1; + int8u transitionTime = 2; + bitmap8 optionsMask = 3; + bitmap8 optionsOverride = 4; + } + + request struct MoveToSaturationRequest { + int8u saturation = 0; + int16u transitionTime = 1; + bitmap8 optionsMask = 2; + bitmap8 optionsOverride = 3; + } + + request struct MoveSaturationRequest { + SaturationMoveMode moveMode = 0; + int8u rate = 1; + bitmap8 optionsMask = 2; + bitmap8 optionsOverride = 3; + } + + request struct StepSaturationRequest { + SaturationStepMode stepMode = 0; + int8u stepSize = 1; + int8u transitionTime = 2; + bitmap8 optionsMask = 3; + bitmap8 optionsOverride = 4; + } + + request struct MoveToHueAndSaturationRequest { + int8u hue = 0; + int8u saturation = 1; + int16u transitionTime = 2; + bitmap8 optionsMask = 3; + bitmap8 optionsOverride = 4; + } + + request struct MoveToColorRequest { + int16u colorX = 0; + int16u colorY = 1; + int16u transitionTime = 2; + bitmap8 optionsMask = 3; + bitmap8 optionsOverride = 4; + } + + request struct MoveColorRequest { + int16s rateX = 0; + int16s rateY = 1; + bitmap8 optionsMask = 2; + bitmap8 optionsOverride = 3; + } + + request struct StepColorRequest { + int16s stepX = 0; + int16s stepY = 1; + int16u transitionTime = 2; + bitmap8 optionsMask = 3; + bitmap8 optionsOverride = 4; + } + + request struct MoveToColorTemperatureRequest { + int16u colorTemperatureMireds = 0; + int16u transitionTime = 1; + bitmap8 optionsMask = 2; + bitmap8 optionsOverride = 3; + } + + request struct EnhancedMoveToHueRequest { + int16u enhancedHue = 0; + HueDirection direction = 1; + int16u transitionTime = 2; + bitmap8 optionsMask = 3; + bitmap8 optionsOverride = 4; + } + + request struct EnhancedMoveHueRequest { + HueMoveMode moveMode = 0; + int16u rate = 1; + bitmap8 optionsMask = 2; + bitmap8 optionsOverride = 3; + } + + request struct EnhancedStepHueRequest { + HueStepMode stepMode = 0; + int16u stepSize = 1; + int16u transitionTime = 2; + bitmap8 optionsMask = 3; + bitmap8 optionsOverride = 4; + } + + request struct EnhancedMoveToHueAndSaturationRequest { + int16u enhancedHue = 0; + int8u saturation = 1; + int16u transitionTime = 2; + bitmap8 optionsMask = 3; + bitmap8 optionsOverride = 4; + } + + request struct ColorLoopSetRequest { + ColorLoopUpdateFlags updateFlags = 0; + ColorLoopAction action = 1; + ColorLoopDirection direction = 2; + int16u time = 3; + int16u startHue = 4; + bitmap8 optionsMask = 5; + bitmap8 optionsOverride = 6; + } + + request struct StopMoveStepRequest { + bitmap8 optionsMask = 0; + bitmap8 optionsOverride = 1; + } + + request struct MoveColorTemperatureRequest { + HueMoveMode moveMode = 0; + int16u rate = 1; + int16u colorTemperatureMinimumMireds = 2; + int16u colorTemperatureMaximumMireds = 3; + bitmap8 optionsMask = 4; + bitmap8 optionsOverride = 5; + } + + request struct StepColorTemperatureRequest { + HueStepMode stepMode = 0; + int16u stepSize = 1; + int16u transitionTime = 2; + int16u colorTemperatureMinimumMireds = 3; + int16u colorTemperatureMaximumMireds = 4; + bitmap8 optionsMask = 5; + bitmap8 optionsOverride = 6; + } + + /** Move to specified hue. */ + command MoveToHue(MoveToHueRequest): DefaultSuccess = 0; + /** Move hue up or down at specified rate. */ + command MoveHue(MoveHueRequest): DefaultSuccess = 1; + /** Step hue up or down by specified size at specified rate. */ + command StepHue(StepHueRequest): DefaultSuccess = 2; + /** Move to specified saturation. */ + command MoveToSaturation(MoveToSaturationRequest): DefaultSuccess = 3; + /** Move saturation up or down at specified rate. */ + command MoveSaturation(MoveSaturationRequest): DefaultSuccess = 4; + /** Step saturation up or down by specified size at specified rate. */ + command StepSaturation(StepSaturationRequest): DefaultSuccess = 5; + /** Move to hue and saturation. */ + command MoveToHueAndSaturation(MoveToHueAndSaturationRequest): DefaultSuccess = 6; + /** Move to specified color. */ + command MoveToColor(MoveToColorRequest): DefaultSuccess = 7; + /** Moves the color. */ + command MoveColor(MoveColorRequest): DefaultSuccess = 8; + /** Steps the lighting to a specific color. */ + command StepColor(StepColorRequest): DefaultSuccess = 9; + /** Move to a specific color temperature. */ + command MoveToColorTemperature(MoveToColorTemperatureRequest): DefaultSuccess = 10; + /** Command description for EnhancedMoveToHue */ + command EnhancedMoveToHue(EnhancedMoveToHueRequest): DefaultSuccess = 64; + /** Command description for EnhancedMoveHue */ + command EnhancedMoveHue(EnhancedMoveHueRequest): DefaultSuccess = 65; + /** Command description for EnhancedStepHue */ + command EnhancedStepHue(EnhancedStepHueRequest): DefaultSuccess = 66; + /** Command description for EnhancedMoveToHueAndSaturation */ + command EnhancedMoveToHueAndSaturation(EnhancedMoveToHueAndSaturationRequest): DefaultSuccess = 67; + /** Command description for ColorLoopSet */ + command ColorLoopSet(ColorLoopSetRequest): DefaultSuccess = 68; + /** Command description for StopMoveStep */ + command StopMoveStep(StopMoveStepRequest): DefaultSuccess = 71; + /** Command description for MoveColorTemperature */ + command MoveColorTemperature(MoveColorTemperatureRequest): DefaultSuccess = 75; + /** Command description for StepColorTemperature */ + command StepColorTemperature(StepColorTemperatureRequest): DefaultSuccess = 76; } /** Attributes and commands for configuring a lighting ballast. */ -provisional server cluster BallastConfiguration = 769 { +provisional cluster BallastConfiguration = 769 { + revision 4; + bitmap BallastStatusBitmap : bitmap8 { kBallastNonOperational = 0x1; kLampFailure = 0x2; @@ -3049,9 +4190,18 @@ provisional server cluster BallastConfiguration = 769 { readonly attribute int8u physicalMinLevel = 0; readonly attribute int8u physicalMaxLevel = 1; + readonly attribute optional BallastStatusBitmap ballastStatus = 2; attribute access(write: manage) int8u minLevel = 16; attribute access(write: manage) int8u maxLevel = 17; + attribute access(write: manage) optional nullable int8u intrinsicBallastFactor = 20; + attribute access(write: manage) optional nullable int8u ballastFactorAdjustment = 21; readonly attribute int8u lampQuantity = 32; + attribute access(write: manage) optional char_string<16> lampType = 48; + attribute access(write: manage) optional char_string<16> lampManufacturer = 49; + attribute access(write: manage) optional nullable int24u lampRatedHours = 50; + attribute access(write: manage) optional nullable int24u lampBurnHours = 51; + attribute access(write: manage) optional LampAlarmModeBitmap lampAlarmMode = 52; + attribute access(write: manage) optional nullable int24u lampBurnHoursTripPoint = 53; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3061,7 +4211,9 @@ provisional server cluster BallastConfiguration = 769 { } /** Attributes and commands for configuring the measurement of illuminance, and reporting illuminance measurements. */ -server cluster IlluminanceMeasurement = 1024 { +cluster IlluminanceMeasurement = 1024 { + revision 3; + enum LightSensorTypeEnum : enum8 { kPhotodiode = 0; kCMOS = 1; @@ -3070,6 +4222,8 @@ server cluster IlluminanceMeasurement = 1024 { readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; + readonly attribute optional int16u tolerance = 3; + readonly attribute optional nullable LightSensorTypeEnum lightSensorType = 4; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3079,10 +4233,13 @@ server cluster IlluminanceMeasurement = 1024 { } /** Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements. */ -server cluster TemperatureMeasurement = 1026 { +cluster TemperatureMeasurement = 1026 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable temperature measuredValue = 0; readonly attribute nullable temperature minMeasuredValue = 1; readonly attribute nullable temperature maxMeasuredValue = 2; + readonly attribute optional int16u tolerance = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3092,7 +4249,9 @@ server cluster TemperatureMeasurement = 1026 { } /** Attributes and commands for configuring the measurement of pressure, and reporting pressure measurements. */ -server cluster PressureMeasurement = 1027 { +cluster PressureMeasurement = 1027 { + revision 3; + bitmap Feature : bitmap32 { kExtended = 0x1; } @@ -3100,6 +4259,12 @@ server cluster PressureMeasurement = 1027 { readonly attribute nullable int16s measuredValue = 0; readonly attribute nullable int16s minMeasuredValue = 1; readonly attribute nullable int16s maxMeasuredValue = 2; + readonly attribute optional int16u tolerance = 3; + readonly attribute optional nullable int16s scaledValue = 16; + readonly attribute optional nullable int16s minScaledValue = 17; + readonly attribute optional nullable int16s maxScaledValue = 18; + readonly attribute optional int16u scaledTolerance = 19; + readonly attribute optional int8s scale = 20; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3109,10 +4274,13 @@ server cluster PressureMeasurement = 1027 { } /** Attributes and commands for configuring the measurement of flow, and reporting flow measurements. */ -server cluster FlowMeasurement = 1028 { +cluster FlowMeasurement = 1028 { + revision 1; // NOTE: Default/not specifically set + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; + readonly attribute optional int16u tolerance = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3122,10 +4290,13 @@ server cluster FlowMeasurement = 1028 { } /** Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements. */ -server cluster RelativeHumidityMeasurement = 1029 { +cluster RelativeHumidityMeasurement = 1029 { + revision 3; + readonly attribute nullable int16u measuredValue = 0; readonly attribute nullable int16u minMeasuredValue = 1; readonly attribute nullable int16u maxMeasuredValue = 2; + readonly attribute optional int16u tolerance = 3; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3135,7 +4306,9 @@ server cluster RelativeHumidityMeasurement = 1029 { } /** Attributes and commands for configuring occupancy sensing, and reporting occupancy status. */ -server cluster OccupancySensing = 1030 { +cluster OccupancySensing = 1030 { + revision 3; + enum OccupancySensorTypeEnum : enum8 { kPIR = 0; kUltrasonic = 1; @@ -3156,6 +4329,15 @@ server cluster OccupancySensing = 1030 { readonly attribute OccupancyBitmap occupancy = 0; readonly attribute OccupancySensorTypeEnum occupancySensorType = 1; readonly attribute OccupancySensorTypeBitmap occupancySensorTypeBitmap = 2; + attribute access(write: manage) optional int16u PIROccupiedToUnoccupiedDelay = 16; + attribute access(write: manage) optional int16u PIRUnoccupiedToOccupiedDelay = 17; + attribute access(write: manage) optional int8u PIRUnoccupiedToOccupiedThreshold = 18; + attribute access(write: manage) optional int16u ultrasonicOccupiedToUnoccupiedDelay = 32; + attribute access(write: manage) optional int16u ultrasonicUnoccupiedToOccupiedDelay = 33; + attribute access(write: manage) optional int8u ultrasonicUnoccupiedToOccupiedThreshold = 34; + attribute access(write: manage) optional int16u physicalContactOccupiedToUnoccupiedDelay = 48; + attribute access(write: manage) optional int16u physicalContactUnoccupiedToOccupiedDelay = 49; + attribute access(write: manage) optional int8u physicalContactUnoccupiedToOccupiedThreshold = 50; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3165,7 +4347,11 @@ server cluster OccupancySensing = 1030 { } /** This cluster provides an interface for managing low power mode on a device that supports the Wake On LAN protocol. */ -server cluster WakeOnLan = 1283 { +cluster WakeOnLan = 1283 { + revision 1; // NOTE: Default/not specifically set + + readonly attribute optional char_string<12> MACAddress = 0; + readonly attribute optional octet_string<16> linkLocalAddress = 1; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3175,7 +4361,15 @@ server cluster WakeOnLan = 1283 { } /** This cluster provides an interface for controlling the current Channel on a device. */ -server cluster Channel = 1284 { +cluster Channel = 1284 { + revision 1; // NOTE: Default/not specifically set + + enum ChannelTypeEnum : enum8 { + kSatellite = 0; + kCable = 1; + kTerrestrial = 2; + } + enum LineupInfoTypeEnum : enum8 { kMSO = 0; } @@ -3189,6 +4383,29 @@ server cluster Channel = 1284 { bitmap Feature : bitmap32 { kChannelList = 0x1; kLineupInfo = 0x2; + kElectronicGuide = 0x3; + kRecordProgram = 0x4; + } + + bitmap RecordingFlagBitmap : bitmap32 { + kScheduled = 0x1; + kRecordSeries = 0x2; + kRecorded = 0x3; + } + + struct ProgramCastStruct { + char_string name = 0; + char_string role = 1; + } + + struct ProgramCategoryStruct { + char_string category = 0; + optional char_string subCategory = 1; + } + + struct SeriesInfoStruct { + char_string season = 0; + char_string episode = 1; } struct ChannelInfoStruct { @@ -3197,6 +4414,46 @@ server cluster Channel = 1284 { optional char_string name = 2; optional char_string callSign = 3; optional char_string affiliateCallSign = 4; + optional char_string identifier = 5; + optional ChannelTypeEnum type = 6; + } + + struct ProgramStruct { + char_string identifier = 0; + ChannelInfoStruct channel = 1; + epoch_s startTime = 2; + epoch_s endTime = 3; + char_string title = 4; + optional char_string subtitle = 5; + optional char_string description = 6; + optional char_string audioLanguages[] = 7; + optional char_string ratings[] = 8; + optional char_string thumbnailUrl = 9; + optional char_string posterArtUrl = 10; + optional char_string dvbiUrl = 11; + optional char_string releaseDate = 12; + optional char_string parentalGuidanceText = 13; + optional RecordingFlagBitmap recordingFlag = 14; + optional nullable SeriesInfoStruct seriesInfo = 15; + optional ProgramCategoryStruct categoryList[] = 16; + optional ProgramCastStruct castList[] = 17; + optional ProgramCastStruct externalIDList[] = 18; + } + + struct PageTokenStruct { + optional int16u limit = 0; + optional char_string after = 1; + optional char_string before = 2; + } + + struct ChannelPagingStruct { + optional nullable PageTokenStruct previousToken = 0; + optional nullable PageTokenStruct nextToken = 1; + } + + struct AdditionalInfoStruct { + char_string name = 0; + char_string value = 1; } struct LineupInfoStruct { @@ -3206,6 +4463,9 @@ server cluster Channel = 1284 { LineupInfoTypeEnum lineupInfoType = 3; } + readonly attribute optional ChannelInfoStruct channelList[] = 0; + readonly attribute optional nullable LineupInfoStruct lineup = 1; + readonly attribute optional nullable ChannelInfoStruct currentChannel = 2; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3213,6 +4473,15 @@ server cluster Channel = 1284 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + request struct ChangeChannelRequest { + char_string match = 0; + } + + response struct ChangeChannelResponse = 1 { + StatusEnum status = 0; + optional char_string data = 1; + } + request struct ChangeChannelByNumberRequest { int16u majorNumber = 0; int16u minorNumber = 1; @@ -3222,12 +4491,53 @@ server cluster Channel = 1284 { int16s count = 0; } + request struct GetProgramGuideRequest { + optional epoch_s startTime = 0; + optional epoch_s endTime = 1; + optional ChannelInfoStruct channelList[] = 2; + optional PageTokenStruct pageToken = 3; + optional RecordingFlagBitmap recordingFlag = 4; + optional AdditionalInfoStruct externalIDList[] = 5; + optional octet_string data = 6; + } + + response struct ProgramGuideResponse = 5 { + int16s channelPagingStruct = 0; + ProgramStruct programList[] = 1; + } + + request struct RecordProgramRequest { + char_string programIdentifier = 0; + boolean shouldRecordSeries = 1; + AdditionalInfoStruct externalIDList[] = 2; + octet_string data = 3; + } + + request struct CancelRecordProgramRequest { + char_string programIdentifier = 0; + boolean shouldRecordSeries = 1; + AdditionalInfoStruct externalIDList[] = 2; + octet_string data = 3; + } + + /** Change the channel on the media player to the channel case-insensitive exact matching the value passed as an argument. */ + command ChangeChannel(ChangeChannelRequest): ChangeChannelResponse = 0; + /** Change the channel on the media plaeyer to the channel with the given Number in the ChannelList attribute. */ command ChangeChannelByNumber(ChangeChannelByNumberRequest): DefaultSuccess = 2; + /** This command provides channel up and channel down functionality, but allows channel index jumps of size Count. When the value of the increase or decrease is larger than the number of channels remaining in the given direction, then the behavior SHALL be to return to the beginning (or end) of the channel list and continue. For example, if the current channel is at index 0 and count value of -1 is given, then the current channel should change to the last channel. */ command SkipChannel(SkipChannelRequest): DefaultSuccess = 3; + /** This command retrieves the program guide. It accepts several filter parameters to return specific schedule and program information from a content app. The command shall receive in response a ProgramGuideResponse. */ + command GetProgramGuide(GetProgramGuideRequest): ProgramGuideResponse = 4; + /** Record a specific program or series when it goes live. This functionality enables DVR recording features. */ + command RecordProgram(RecordProgramRequest): DefaultSuccess = 6; + /** Cancel recording for a specific program or series. */ + command CancelRecordProgram(CancelRecordProgramRequest): DefaultSuccess = 7; } /** This cluster provides an interface for UX navigation within a set of targets on a device or endpoint. */ -server cluster TargetNavigator = 1285 { +cluster TargetNavigator = 1285 { + revision 1; // NOTE: Default/not specifically set + enum StatusEnum : enum8 { kSuccess = 0; kTargetNotFound = 1; @@ -3239,7 +4549,14 @@ server cluster TargetNavigator = 1285 { char_string name = 1; } + info event TargetUpdated = 0 { + TargetInfoStruct targetList[] = 0; + int8u currentTarget = 1; + octet_string data = 2; + } + readonly attribute TargetInfoStruct targetList[] = 0; + readonly attribute optional int8u currentTarget = 1; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3257,11 +4574,35 @@ server cluster TargetNavigator = 1285 { optional char_string data = 1; } + /** Upon receipt, this SHALL navigation the UX to the target identified. */ command NavigateTarget(NavigateTargetRequest): NavigateTargetResponse = 0; } /** This cluster provides an interface for controlling Media Playback (PLAY, PAUSE, etc) on a media device such as a TV or Speaker. */ -server cluster MediaPlayback = 1286 { +cluster MediaPlayback = 1286 { + revision 1; // NOTE: Default/not specifically set + + enum CharacteristicEnum : enum8 { + kForcedSubtitles = 0; + kDescribesVideo = 1; + kEasyToRead = 2; + kFrameBased = 3; + kMainProgram = 4; + kOriginalContent = 5; + kVoiceOverTranslation = 6; + kCaption = 7; + kSubtitle = 8; + kAlternate = 9; + kSupplementary = 10; + kCommentary = 11; + kDubbedTranslation = 12; + kDescription = 13; + kMetadata = 14; + kEnhancedAudioIntelligibility = 15; + kEmergency = 16; + kKaraoke = 17; + } + enum PlaybackStateEnum : enum8 { kPlaying = 0; kPaused = 1; @@ -3281,6 +4622,19 @@ server cluster MediaPlayback = 1286 { bitmap Feature : bitmap32 { kAdvancedSeek = 0x1; kVariableSpeed = 0x2; + kTextTracks = 0x3; + kAudioTracks = 0x4; + kAudioAdvance = 0x5; + } + + struct TrackAttributesStruct { + char_string<32> languageCode = 0; + optional nullable char_string displayName = 1; + } + + struct TrackStruct { + char_string<32> id = 0; + nullable TrackAttributesStruct trackAttributes = 1; } struct PlaybackPositionStruct { @@ -3288,7 +4642,29 @@ server cluster MediaPlayback = 1286 { nullable int64u position = 1; } + info event StateChanged = 0 { + PlaybackStateEnum currentState = 0; + EPOCH_US startTime = 1; + INT64U duration = 2; + PlaybackPositionStruct sampledPosition = 3; + single playbackSpeed = 4; + INT64U seekRangeEnd = 5; + INT64U seekRangeStart = 6; + optional OCTET_STRING data = 7; + boolean audioAdvanceUnmuted = 8; + } + readonly attribute PlaybackStateEnum currentState = 0; + readonly attribute optional nullable epoch_us startTime = 1; + readonly attribute optional nullable int64u duration = 2; + readonly attribute optional nullable PlaybackPositionStruct sampledPosition = 3; + readonly attribute optional single playbackSpeed = 4; + readonly attribute optional nullable int64u seekRangeEnd = 5; + readonly attribute optional nullable int64u seekRangeStart = 6; + readonly attribute optional nullable TrackStruct activeAudioTrack = 7; + readonly attribute optional nullable TrackStruct availableAudioTracks[] = 8; + readonly attribute optional nullable TrackStruct activeTextTrack = 9; + readonly attribute optional nullable TrackStruct availableTextTracks[] = 10; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3296,18 +4672,74 @@ server cluster MediaPlayback = 1286 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + request struct RewindRequest { + optional boolean audioAdvanceUnmuted = 0; + } + + request struct FastForwardRequest { + optional boolean audioAdvanceUnmuted = 0; + } + + request struct SkipForwardRequest { + int64u deltaPositionMilliseconds = 0; + } + + request struct SkipBackwardRequest { + int64u deltaPositionMilliseconds = 0; + } + response struct PlaybackResponse = 10 { StatusEnum status = 0; optional char_string data = 1; } + request struct SeekRequest { + int64u position = 0; + } + + request struct ActivateAudioTrackRequest { + CHAR_STRING trackID = 0; + INT8U audioOutputIndex = 1; + } + + request struct ActivateTextTrackRequest { + CHAR_STRING trackID = 0; + } + + /** Upon receipt, this SHALL play media. */ command Play(): PlaybackResponse = 0; + /** Upon receipt, this SHALL pause media. */ command Pause(): PlaybackResponse = 1; + /** Upon receipt, this SHALL stop media. User experience is context-specific. This will often navigate the user back to the location where media was originally launched. */ command Stop(): PlaybackResponse = 2; + /** Upon receipt, this SHALL Start Over with the current media playback item. */ + command StartOver(): PlaybackResponse = 3; + /** Upon receipt, this SHALL cause the handler to be invoked for "Previous". User experience is context-specific. This will often Go back to the previous media playback item. */ + command Previous(): PlaybackResponse = 4; + /** Upon receipt, this SHALL cause the handler to be invoked for "Next". User experience is context-specific. This will often Go forward to the next media playback item. */ + command Next(): PlaybackResponse = 5; + /** Upon receipt, this SHALL Rewind through media. Different Rewind speeds can be used on the TV based upon the number of sequential calls to this function. This is to avoid needing to define every speed now (multiple fast, slow motion, etc). */ + command Rewind(RewindRequest): PlaybackResponse = 6; + /** Upon receipt, this SHALL Advance through media. Different FF speeds can be used on the TV based upon the number of sequential calls to this function. This is to avoid needing to define every speed now (multiple fast, slow motion, etc). */ + command FastForward(FastForwardRequest): PlaybackResponse = 7; + /** Upon receipt, this SHALL Skip forward in the media by the given number of seconds, using the data as follows: */ + command SkipForward(SkipForwardRequest): PlaybackResponse = 8; + /** Upon receipt, this SHALL Skip backward in the media by the given number of seconds, using the data as follows: */ + command SkipBackward(SkipBackwardRequest): PlaybackResponse = 9; + /** Upon receipt, this SHALL Skip backward in the media by the given number of seconds, using the data as follows: */ + command Seek(SeekRequest): PlaybackResponse = 11; + /** Upon receipt, the server SHALL set the active Audio Track to the one identified by the TrackID in the Track catalog for the streaming media. If the TrackID does not exist in the Track catalog, OR does not correspond to the streaming media OR no media is being streamed at the time of receipt of this command, the server will return an error status of INVALID_ARGUMENT. */ + command ActivateAudioTrack(ActivateAudioTrackRequest): DefaultSuccess = 12; + /** Upon receipt, the server SHALL set the active Text Track to the one identified by the TrackID in the Track catalog for the streaming media. If the TrackID does not exist in the Track catalog, OR does not correspond to the streaming media OR no media is being streamed at the time of receipt of this command, the server SHALL return an error status of INVALID_ARGUMENT. */ + command ActivateTextTrack(ActivateTextTrackRequest): DefaultSuccess = 13; + /** If a Text Track is active (i.e. being displayed), upon receipt of this command, the server SHALL stop displaying it. */ + command DeactivateTextTrack(): DefaultSuccess = 14; } /** This cluster provides an interface for controlling the Input Selector on a media device such as a TV. */ -server cluster MediaInput = 1287 { +cluster MediaInput = 1287 { + revision 1; // NOTE: Default/not specifically set + enum InputTypeEnum : enum8 { kInternal = 0; kAux = 1; @@ -3347,13 +4779,25 @@ server cluster MediaInput = 1287 { int8u index = 0; } + request struct RenameInputRequest { + int8u index = 0; + char_string name = 1; + } + + /** Upon receipt, this SHALL change the input on the media device to the input at a specific index in the Input List. */ command SelectInput(SelectInputRequest): DefaultSuccess = 0; + /** Upon receipt, this SHALL display the active status of the input list on screen. */ command ShowInputStatus(): DefaultSuccess = 1; + /** Upon receipt, this SHALL hide the input list from the screen. */ command HideInputStatus(): DefaultSuccess = 2; + /** Upon receipt, this SHALL rename the input at a specific index in the Input List. Updates to the input name SHALL appear in the TV settings menus. */ + command access(invoke: manage) RenameInput(RenameInputRequest): DefaultSuccess = 3; } /** This cluster provides an interface for managing low power mode on a device. */ -server cluster LowPower = 1288 { +cluster LowPower = 1288 { + revision 1; // NOTE: Default/not specifically set + readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3361,11 +4805,14 @@ server cluster LowPower = 1288 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + /** This command shall put the device into low power mode. */ command Sleep(): DefaultSuccess = 0; } /** This cluster provides an interface for controlling a device like a TV using action commands such as UP, DOWN, and SELECT. */ -server cluster KeypadInput = 1289 { +cluster KeypadInput = 1289 { + revision 1; // NOTE: Default/not specifically set + enum CECKeyCodeEnum : enum8 { kSelect = 0; kUp = 1; @@ -3482,11 +4929,35 @@ server cluster KeypadInput = 1289 { StatusEnum status = 0; } + /** Upon receipt, this SHALL process a keycode as input to the media device. */ command SendKey(SendKeyRequest): SendKeyResponse = 0; } /** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ -server cluster ContentLauncher = 1290 { +cluster ContentLauncher = 1290 { + revision 1; + + enum CharacteristicEnum : enum8 { + kForcedSubtitles = 0; + kDescribesVideo = 1; + kEasyToRead = 2; + kFrameBased = 3; + kMainProgram = 4; + kOriginalContent = 5; + kVoiceOverTranslation = 6; + kCaption = 7; + kSubtitle = 8; + kAlternate = 9; + kSupplementary = 10; + kCommentary = 11; + kDubbedTranslation = 12; + kDescription = 13; + kMetadata = 14; + kEnhancedAudioIntelligibility = 15; + kEmergency = 16; + kKaraoke = 17; + } + enum MetricTypeEnum : enum8 { kPixels = 0; kPercentage = 1; @@ -3507,22 +4978,31 @@ server cluster ContentLauncher = 1290 { kSportsTeam = 11; kType = 12; kVideo = 13; + kSeason = 14; + kEpisode = 15; + kAny = 16; } enum StatusEnum : enum8 { kSuccess = 0; kURLNotAvailable = 1; kAuthFailed = 2; + kTextTrackNotAvailable = 3; + kAudioTrackNotAvailable = 4; } bitmap Feature : bitmap32 { kContentSearch = 0x1; kURLPlayback = 0x2; + kAdvancedSeek = 0x3; + kTextTracks = 0x4; + kAudioTracks = 0x5; } bitmap SupportedProtocolsBitmap : bitmap32 { kDASH = 0x1; kHLS = 0x2; + kWebRTC = 0x2; } struct DimensionStruct { @@ -3531,6 +5011,18 @@ server cluster ContentLauncher = 1290 { MetricTypeEnum metric = 2; } + struct TrackPreferenceStruct { + char_string<32> languageCode = 0; + optional CharacteristicEnum characteristics[] = 1; + int8u audioOutputIndex = 2; + } + + struct PlaybackPreferencesStruct { + int64u playbackPosition = 0; + TrackPreferenceStruct textTrack = 1; + optional TrackPreferenceStruct audioTracks[] = 2; + } + struct AdditionalInfoStruct { char_string<256> name = 0; char_string<8192> value = 1; @@ -3561,16 +5053,44 @@ server cluster ContentLauncher = 1290 { optional StyleInformationStruct waterMark = 5; } + readonly attribute optional char_string acceptHeader[] = 0; + readonly attribute optional SupportedProtocolsBitmap supportedStreamingProtocols = 1; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; readonly attribute attrib_id attributeList[] = 65531; readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + + request struct LaunchContentRequest { + ContentSearchStruct search = 0; + boolean autoPlay = 1; + optional char_string data = 2; + optional PlaybackPreferencesStruct playbackPreferences = 3; + optional boolean useCurrentContext = 4; + } + + request struct LaunchURLRequest { + char_string contentURL = 0; + optional char_string displayString = 1; + optional BrandingInformationStruct brandingInformation = 2; + } + + response struct LauncherResponse = 2 { + StatusEnum status = 0; + optional char_string data = 1; + } + + /** Upon receipt, this SHALL launch the specified content with optional search criteria. */ + command LaunchContent(LaunchContentRequest): LauncherResponse = 0; + /** Upon receipt, this SHALL launch content from the specified URL. */ + command LaunchURL(LaunchURLRequest): LauncherResponse = 1; } /** This cluster provides an interface for controlling the Output on a media device such as a TV. */ -server cluster AudioOutput = 1291 { +cluster AudioOutput = 1291 { + revision 1; // NOTE: Default/not specifically set + enum OutputTypeEnum : enum8 { kHDMI = 0; kBT = 1; @@ -3603,11 +5123,21 @@ server cluster AudioOutput = 1291 { int8u index = 0; } + request struct RenameOutputRequest { + int8u index = 0; + char_string name = 1; + } + + /** Upon receipt, this SHALL change the output on the media device to the output at a specific index in the Output List. */ command SelectOutput(SelectOutputRequest): DefaultSuccess = 0; + /** Upon receipt, this SHALL rename the output at a specific index in the Output List. Updates to the output name SHALL appear in the TV settings menus. */ + command access(invoke: manage) RenameOutput(RenameOutputRequest): DefaultSuccess = 1; } /** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */ -server cluster ApplicationLauncher = 1292 { +cluster ApplicationLauncher = 1292 { + revision 1; // NOTE: Default/not specifically set + enum StatusEnum : enum8 { kSuccess = 0; kAppNotAvailable = 1; @@ -3628,6 +5158,8 @@ server cluster ApplicationLauncher = 1292 { optional endpoint_no endpoint = 1; } + readonly attribute optional int16u catalogList[] = 0; + readonly attribute optional nullable ApplicationEPStruct currentApp = 1; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3653,13 +5185,18 @@ server cluster ApplicationLauncher = 1292 { optional octet_string data = 1; } + /** Upon receipt, this SHALL launch the specified app with optional data. The TV Device SHALL launch and bring to foreground the identified application in the command if the application is not already launched and in foreground. The TV Device SHALL update state attribute on the Application Basic cluster of the Endpoint corresponding to the launched application. This command returns a Launch Response. */ command LaunchApp(LaunchAppRequest): LauncherResponse = 0; + /** Upon receipt on a Video Player endpoint this SHALL stop the specified application if it is running. */ command StopApp(StopAppRequest): LauncherResponse = 1; + /** Upon receipt on a Video Player endpoint this SHALL hide the specified application if it is running and visible. */ command HideApp(HideAppRequest): LauncherResponse = 2; } /** This cluster provides information about an application running on a TV or media player device which is represented as an endpoint. */ -server cluster ApplicationBasic = 1293 { +cluster ApplicationBasic = 1293 { + revision 1; // NOTE: Default/not specifically set + enum ApplicationStatusEnum : enum8 { kStopped = 0; kActiveVisibleFocus = 1; @@ -3672,7 +5209,10 @@ server cluster ApplicationBasic = 1293 { char_string applicationID = 1; } + readonly attribute optional char_string<32> vendorName = 0; + readonly attribute optional vendor_id vendorID = 1; readonly attribute long_char_string<256> applicationName = 2; + readonly attribute optional int16u productID = 3; readonly attribute ApplicationStruct application = 4; readonly attribute ApplicationStatusEnum status = 5; readonly attribute char_string<32> applicationVersion = 6; @@ -3686,7 +5226,13 @@ server cluster ApplicationBasic = 1293 { } /** This cluster provides commands that facilitate user account login on a Content App or a node. For example, a Content App running on a Video Player device, which is represented as an endpoint (see [TV Architecture]), can use this cluster to help make the user account on the Content App match the user account on the Client. */ -server cluster AccountLogin = 1294 { +cluster AccountLogin = 1294 { + revision 1; // NOTE: Default/not specifically set + + critical event LoggedOut = 0 { + optional node_id node = 0; + } + readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3698,22 +5244,32 @@ server cluster AccountLogin = 1294 { char_string<100> tempAccountIdentifier = 0; } + response struct GetSetupPINResponse = 1 { + char_string setupPIN = 0; + } + request struct LoginRequest { char_string<100> tempAccountIdentifier = 0; char_string setupPIN = 1; + optional node_id node = 2; } - response struct GetSetupPINResponse = 1 { - char_string setupPIN = 0; + request struct LogoutRequest { + optional node_id node = 0; } + /** Upon receipt, the Content App checks if the account associated with the client Temp Account Identifier Rotating ID is the same acount that is active on the given Content App. If the accounts are the same, then the Content App includes the Setup PIN in the GetSetupPIN Response. */ fabric timed command access(invoke: administer) GetSetupPIN(GetSetupPINRequest): GetSetupPINResponse = 0; + /** Upon receipt, the Content App checks if the account associated with the client’s Temp Account Identifier (Rotating ID) has a current active Setup PIN with the given value. If the Setup PIN is valid for the user account associated with the Temp Account Identifier, then the Content App MAY make that user account active. */ fabric timed command access(invoke: administer) Login(LoginRequest): DefaultSuccess = 2; - fabric timed command Logout(): DefaultSuccess = 3; + /** The purpose of this command is to instruct the Content App to clear the current user account. This command SHOULD be used by clients of a Content App to indicate the end of a user session. */ + fabric timed command Logout(LogoutRequest): DefaultSuccess = 3; } /** The Test Cluster is meant to validate the generated code */ -internal server cluster UnitTesting = 4294048773 { +internal cluster UnitTesting = 4294048773 { + revision 1; // NOTE: Default/not specifically set + enum SimpleEnum : enum8 { kUnspecified = 0; kValueA = 1; @@ -3872,11 +5428,12 @@ internal server cluster UnitTesting = 4294048773 { attribute int8s rangeRestrictedInt8s = 39; attribute int16u rangeRestrictedInt16u = 40; attribute int16s rangeRestrictedInt16s = 41; - attribute LONG_OCTET_STRING listLongOctetString[] = 42; + attribute long_octet_string listLongOctetString[] = 42; attribute TestFabricScoped listFabricScoped[] = 43; timedwrite attribute boolean timedWriteBoolean = 48; attribute boolean generalErrorBoolean = 49; attribute boolean clusterErrorBoolean = 50; + attribute optional boolean unsupported = 255; attribute nullable boolean nullableBoolean = 16384; attribute nullable Bitmap8MaskMap nullableBitmap8 = 16385; attribute nullable Bitmap16MaskMap nullableBitmap16 = 16386; @@ -3910,6 +5467,7 @@ internal server cluster UnitTesting = 4294048773 { attribute nullable int8s nullableRangeRestrictedInt8s = 16423; attribute nullable int16u nullableRangeRestrictedInt16u = 16424; attribute nullable int16s nullableRangeRestrictedInt16s = 16425; + attribute optional int8u writeOnlyInt8u = 16426; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3917,31 +5475,128 @@ internal server cluster UnitTesting = 4294048773 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + response struct TestSpecificResponse = 0 { + int8u returnValue = 0; + } + + response struct TestAddArgumentsResponse = 1 { + int8u returnValue = 0; + } + + response struct TestSimpleArgumentResponse = 2 { + boolean returnValue = 0; + } + + response struct TestStructArrayArgumentResponse = 3 { + NestedStructList arg1[] = 0; + SimpleStruct arg2[] = 1; + SimpleEnum arg3[] = 2; + boolean arg4[] = 3; + SimpleEnum arg5 = 4; + boolean arg6 = 5; + } + request struct TestAddArgumentsRequest { int8u arg1 = 0; int8u arg2 = 1; } + response struct TestListInt8UReverseResponse = 4 { + int8u arg1[] = 0; + } + + request struct TestSimpleArgumentRequestRequest { + boolean arg1 = 0; + } + + response struct TestEnumsResponse = 5 { + vendor_id arg1 = 0; + SimpleEnum arg2 = 1; + } + + request struct TestStructArrayArgumentRequestRequest { + NestedStructList arg1[] = 0; + SimpleStruct arg2[] = 1; + SimpleEnum arg3[] = 2; + boolean arg4[] = 3; + SimpleEnum arg5 = 4; + boolean arg6 = 5; + } + + response struct TestNullableOptionalResponse = 6 { + boolean wasPresent = 0; + optional boolean wasNull = 1; + optional int8u value = 2; + optional nullable int8u originalValue = 3; + } + request struct TestStructArgumentRequestRequest { SimpleStruct arg1 = 0; } + response struct TestComplexNullableOptionalResponse = 7 { + boolean nullableIntWasNull = 0; + optional int16u nullableIntValue = 1; + boolean optionalIntWasPresent = 2; + optional int16u optionalIntValue = 3; + boolean nullableOptionalIntWasPresent = 4; + optional boolean nullableOptionalIntWasNull = 5; + optional int16u nullableOptionalIntValue = 6; + boolean nullableStringWasNull = 7; + optional char_string nullableStringValue = 8; + boolean optionalStringWasPresent = 9; + optional char_string optionalStringValue = 10; + boolean nullableOptionalStringWasPresent = 11; + optional boolean nullableOptionalStringWasNull = 12; + optional char_string nullableOptionalStringValue = 13; + boolean nullableStructWasNull = 14; + optional SimpleStruct nullableStructValue = 15; + boolean optionalStructWasPresent = 16; + optional SimpleStruct optionalStructValue = 17; + boolean nullableOptionalStructWasPresent = 18; + optional boolean nullableOptionalStructWasNull = 19; + optional SimpleStruct nullableOptionalStructValue = 20; + boolean nullableListWasNull = 21; + optional SimpleEnum nullableListValue[] = 22; + boolean optionalListWasPresent = 23; + optional SimpleEnum optionalListValue[] = 24; + boolean nullableOptionalListWasPresent = 25; + optional boolean nullableOptionalListWasNull = 26; + optional SimpleEnum nullableOptionalListValue[] = 27; + } + request struct TestNestedStructArgumentRequestRequest { NestedStruct arg1 = 0; } + response struct BooleanResponse = 8 { + boolean value = 0; + } + request struct TestListStructArgumentRequestRequest { SimpleStruct arg1[] = 0; } + response struct SimpleStructResponse = 9 { + SimpleStruct arg1 = 0; + } + request struct TestListInt8UArgumentRequestRequest { int8u arg1[] = 0; } + response struct TestEmitTestEventResponse = 10 { + int64u value = 0; + } + request struct TestNestedStructListArgumentRequestRequest { NestedStructList arg1 = 0; } + response struct TestEmitTestFabricScopedEventResponse = 11 { + int64u value = 0; + } + request struct TestListNestedStructListArgumentRequestRequest { NestedStructList arg1[] = 0; } @@ -3959,6 +5614,21 @@ internal server cluster UnitTesting = 4294048773 { optional nullable int8u arg1 = 0; } + request struct TestComplexNullableOptionalRequestRequest { + nullable int16u nullableInt = 0; + optional int16u optionalInt = 1; + optional nullable int16u nullableOptionalInt = 2; + nullable char_string nullableString = 3; + optional char_string optionalString = 4; + optional nullable char_string nullableOptionalString = 5; + nullable SimpleStruct nullableStruct = 6; + optional SimpleStruct optionalStruct = 7; + optional nullable SimpleStruct nullableOptionalStruct = 8; + nullable SimpleEnum nullableList[] = 9; + optional SimpleEnum optionalList[] = 10; + optional nullable SimpleEnum nullableOptionalList[] = 11; + } + request struct SimpleStructEchoRequestRequest { SimpleStruct arg1 = 0; } @@ -3977,59 +5647,70 @@ internal server cluster UnitTesting = 4294048773 { int8u arg1 = 0; } - response struct TestSpecificResponse = 0 { - int8u returnValue = 0; - } - - response struct TestAddArgumentsResponse = 1 { - int8u returnValue = 0; - } - - response struct TestListInt8UReverseResponse = 4 { - int8u arg1[] = 0; - } - - response struct TestEnumsResponse = 5 { - vendor_id arg1 = 0; - SimpleEnum arg2 = 1; - } - - response struct TestNullableOptionalResponse = 6 { - boolean wasPresent = 0; - optional boolean wasNull = 1; - optional int8u value = 2; - optional nullable int8u originalValue = 3; - } - - response struct SimpleStructResponse = 9 { - SimpleStruct arg1 = 0; - } - - response struct TestEmitTestEventResponse = 10 { - int64u value = 0; - } - - response struct TestEmitTestFabricScopedEventResponse = 11 { - int64u value = 0; - } - + /** Simple command without any parameters and without a specific response */ command Test(): DefaultSuccess = 0; + /** Simple command without any parameters and without a specific response not handled by the server */ command TestNotHandled(): DefaultSuccess = 1; + /** Simple command without any parameters and with a specific response */ command TestSpecific(): TestSpecificResponse = 2; + /** Simple command that should not be added to the server. */ + command TestUnknownCommand(): DefaultSuccess = 3; + /** Command that takes two arguments and returns their sum. */ command TestAddArguments(TestAddArgumentsRequest): TestAddArgumentsResponse = 4; + /** Command that takes an argument which is bool */ + command TestSimpleArgumentRequest(TestSimpleArgumentRequestRequest): TestSimpleArgumentResponse = 5; + /** Command that takes various arguments that are arrays, including an array of structs which have a list member. */ + command TestStructArrayArgumentRequest(TestStructArrayArgumentRequestRequest): TestStructArrayArgumentResponse = 6; + /** Command that takes an argument which is struct. The response echoes the + 'b' field of the single arg. */ command TestStructArgumentRequest(TestStructArgumentRequestRequest): BooleanResponse = 7; + /** Command that takes an argument which is nested struct. The response + echoes the 'b' field of ar1.c. */ command TestNestedStructArgumentRequest(TestNestedStructArgumentRequestRequest): BooleanResponse = 8; + /** Command that takes an argument which is a list of structs. The response + returns false if there is some struct in the list whose 'b' field is + false, and true otherwise (including if the list is empty). */ command TestListStructArgumentRequest(TestListStructArgumentRequestRequest): BooleanResponse = 9; + /** Command that takes an argument which is a list of INT8U. The response + returns false if the list contains a 0 in it, true otherwise (including + if the list is empty). */ command TestListInt8UArgumentRequest(TestListInt8UArgumentRequestRequest): BooleanResponse = 10; + /** Command that takes an argument which is a Nested Struct List. The + response returns false if there is some struct in arg1 (either directly + in arg1.c or in the arg1.d list) whose 'b' field is false, and true + otherwise. */ command TestNestedStructListArgumentRequest(TestNestedStructListArgumentRequestRequest): BooleanResponse = 11; + /** Command that takes an argument which is a list of Nested Struct List. + The response returns false if there is some struct in arg1 (either + directly in as the 'c' field of an entry 'd' list of an entry) whose 'b' + field is false, and true otherwise (including if the list is empty). */ command TestListNestedStructListArgumentRequest(TestListNestedStructListArgumentRequestRequest): BooleanResponse = 12; + /** Command that takes an argument which is a list of INT8U and expects a + response that reverses the list. */ command TestListInt8UReverseRequest(TestListInt8UReverseRequestRequest): TestListInt8UReverseResponse = 13; + /** Command that sends a vendor id and an enum. The server is expected to + echo them back. */ command TestEnumsRequest(TestEnumsRequestRequest): TestEnumsResponse = 14; + /** Command that takes an argument which is nullable and optional. The + response returns a boolean indicating whether the argument was present, + if that's true a boolean indicating whether the argument was null, and + if that' false the argument it received. */ command TestNullableOptionalRequest(TestNullableOptionalRequestRequest): TestNullableOptionalResponse = 15; + /** Command that takes various arguments which can be nullable and/or optional. The + response returns information about which things were received and what + their state was. */ + command TestComplexNullableOptionalRequest(TestComplexNullableOptionalRequestRequest): TestComplexNullableOptionalResponse = 16; + /** Command that takes an argument which is a struct. The response echoes + the struct back. */ command SimpleStructEchoRequest(SimpleStructEchoRequestRequest): SimpleStructResponse = 17; + /** Command that just responds with a success status if the timed invoke + conditions are met. */ timed command TimedInvokeRequest(): DefaultSuccess = 18; + /** Command that takes an optional argument which is bool. It responds with a success value if the optional is set to any value. */ command TestSimpleOptionalArgumentRequest(TestSimpleOptionalArgumentRequestRequest): DefaultSuccess = 19; + /** Command that takes identical arguments to the fields of the TestEvent and logs the TestEvent to the buffer. Command returns an event ID as the response. */ command TestEmitTestEventRequest(TestEmitTestEventRequestRequest): TestEmitTestEventResponse = 20; + /** Command that takes identical arguments to the fields of the TestFabricScopedEvent and logs the TestFabricScopedEvent to the buffer. Command returns an event ID as the response. */ command TestEmitTestFabricScopedEventRequest(TestEmitTestFabricScopedEventRequestRequest): TestEmitTestFabricScopedEventResponse = 21; } @@ -4075,7 +5756,7 @@ endpoint 0 { callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 0; - callback attribute clusterRevision default = 1; + callback attribute clusterRevision; } server cluster Binding { @@ -4088,29 +5769,29 @@ endpoint 0 { emits event AccessControlEntryChanged; callback attribute acl; callback attribute extension; - callback attribute subjectsPerAccessControlEntry default = 4; - callback attribute targetsPerAccessControlEntry default = 3; - callback attribute accessControlEntriesPerFabric default = 4; + callback attribute subjectsPerAccessControlEntry; + callback attribute targetsPerAccessControlEntry; + callback attribute accessControlEntriesPerFabric; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 0; - callback attribute clusterRevision default = 1; + callback attribute clusterRevision; } server cluster BasicInformation { emits event StartUp; - callback attribute dataModelRevision default = 10; + callback attribute dataModelRevision; callback attribute vendorName; callback attribute vendorID; callback attribute productName; callback attribute productID; persist attribute nodeLabel; - callback attribute location default = "XX"; - callback attribute hardwareVersion default = 0; + callback attribute location; + callback attribute hardwareVersion; callback attribute hardwareVersionString; - callback attribute softwareVersion default = 0; + callback attribute softwareVersion; callback attribute softwareVersionString; callback attribute capabilityMinima; callback attribute specificationVersion; @@ -4127,7 +5808,7 @@ endpoint 0 { emits event StateTransition; emits event VersionApplied; emits event DownloadError; - callback attribute defaultOTAProviders default = 0; + callback attribute defaultOTAProviders; ram attribute updatePossible default = 1; ram attribute updateState default = 0; ram attribute updateStateProgress default = 0; @@ -4183,9 +5864,9 @@ endpoint 0 { server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; - callback attribute regulatoryConfig default = 0; - callback attribute locationCapability default = 0; - callback attribute supportsConcurrentConnection default = 1; + callback attribute regulatoryConfig; + callback attribute locationCapability; + callback attribute supportsConcurrentConnection; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute eventList; @@ -4237,8 +5918,8 @@ endpoint 0 { server cluster GeneralDiagnostics { callback attribute networkInterfaces; - callback attribute rebootCount default = 0x0000; - callback attribute upTime default = 0x0000000000000000; + callback attribute rebootCount; + callback attribute upTime; callback attribute testEventTriggersEnabled; callback attribute generatedCommandList; callback attribute acceptedCommandList; @@ -4253,16 +5934,16 @@ endpoint 0 { } server cluster SoftwareDiagnostics { - callback attribute featureMap default = 0; + callback attribute featureMap; ram attribute clusterRevision default = 1; } server cluster ThreadNetworkDiagnostics { callback attribute channel; callback attribute routingRole; - callback attribute networkName default = "0"; - callback attribute panId default = 0x0000; - callback attribute extendedPanId default = 0x0000000000000000; + callback attribute networkName; + callback attribute panId; + callback attribute extendedPanId; callback attribute meshLocalPrefix; callback attribute neighborTable; callback attribute routeTable; @@ -4272,7 +5953,7 @@ endpoint 0 { callback attribute stableDataVersion; callback attribute leaderRouterId; callback attribute securityPolicy; - callback attribute channelPage0Mask default = "0x0000"; + callback attribute channelPage0Mask; callback attribute operationalDatasetComponents; callback attribute activeNetworkFaultsList; ram attribute featureMap default = 0; @@ -4283,22 +5964,22 @@ endpoint 0 { callback attribute bssid; callback attribute securityType; callback attribute wiFiVersion; - callback attribute channelNumber default = 0x0000; - callback attribute rssi default = 0x00; + callback attribute channelNumber; + callback attribute rssi; ram attribute featureMap default = 0; ram attribute clusterRevision default = 1; } server cluster EthernetNetworkDiagnostics { callback attribute PHYRate; - callback attribute fullDuplex default = 0x00; - callback attribute packetRxCount default = 0x0000000000000000; - callback attribute packetTxCount default = 0x0000000000000000; - callback attribute txErrCount default = 0x0000000000000000; - callback attribute collisionCount default = 0x0000000000000000; - callback attribute overrunCount default = 0x0000000000000000; - callback attribute carrierDetect default = 0x00; - callback attribute timeSinceReset default = 0x0000000000000000; + callback attribute fullDuplex; + callback attribute packetRxCount; + callback attribute packetTxCount; + callback attribute txErrCount; + callback attribute collisionCount; + callback attribute overrunCount; + callback attribute carrierDetect; + callback attribute timeSinceReset; ram attribute featureMap default = 3; ram attribute clusterRevision default = 1; @@ -4306,9 +5987,9 @@ endpoint 0 { } server cluster AdministratorCommissioning { - callback attribute windowStatus default = 0; - callback attribute adminFabricIndex default = 1; - callback attribute adminVendorId default = 0; + callback attribute windowStatus; + callback attribute adminFabricIndex; + callback attribute adminVendorId; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute eventList; @@ -4357,8 +6038,8 @@ endpoint 0 { callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - callback attribute featureMap default = 0; - callback attribute clusterRevision default = 1; + callback attribute featureMap; + callback attribute clusterRevision; handle command KeySetWrite; handle command KeySetRead; @@ -4505,7 +6186,7 @@ endpoint 1 { callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 0; - callback attribute clusterRevision default = 1; + callback attribute clusterRevision; } server cluster Binding { @@ -4562,7 +6243,7 @@ endpoint 1 { server cluster ModeSelect { ram attribute description default = "Coffee"; ram attribute standardNamespace default = 0; - callback attribute supportedModes default = 0; + callback attribute supportedModes; persist attribute currentMode default = 0; callback attribute generatedCommandList; callback attribute acceptedCommandList; @@ -5045,7 +6726,7 @@ endpoint 2 { callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 0; - callback attribute clusterRevision default = 1; + callback attribute clusterRevision; } server cluster PowerSource { @@ -5083,7 +6764,7 @@ endpoint 65534 { callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 0; - callback attribute clusterRevision default = 1; + callback attribute clusterRevision; } server cluster NetworkCommissioning { diff --git a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap index bd54cab550e1c3..2ca83ff224c938 100644 --- a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap +++ b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap @@ -310,7 +310,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -326,7 +326,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -342,7 +342,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -358,7 +358,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -374,7 +374,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -390,7 +390,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -406,7 +406,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -422,7 +422,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -454,7 +454,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -480,7 +480,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -538,7 +538,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65534, @@ -554,7 +554,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65534, @@ -570,7 +570,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "4", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -586,7 +586,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "3", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -602,7 +602,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "4", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -618,7 +618,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -634,7 +634,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -650,7 +650,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -666,7 +666,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -698,7 +698,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -733,7 +733,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "10", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -749,7 +749,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -765,7 +765,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -781,7 +781,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -797,7 +797,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -829,7 +829,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "XX", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -845,7 +845,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -861,7 +861,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -877,7 +877,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -893,7 +893,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -909,7 +909,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -925,7 +925,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -941,7 +941,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -957,7 +957,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -973,7 +973,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -989,7 +989,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1005,7 +1005,7 @@ "storageOption": "External", "singleton": 1, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1142,7 +1142,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1287,7 +1287,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1303,7 +1303,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1319,7 +1319,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1335,7 +1335,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1351,7 +1351,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1425,7 +1425,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1441,7 +1441,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1457,7 +1457,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1473,7 +1473,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1531,7 +1531,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1547,7 +1547,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1563,7 +1563,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1579,7 +1579,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1685,7 +1685,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1701,7 +1701,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1717,7 +1717,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1733,7 +1733,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1749,7 +1749,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1873,7 +1873,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1889,7 +1889,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1905,7 +1905,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1921,7 +1921,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1937,7 +1937,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1953,7 +1953,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1969,7 +1969,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -1985,7 +1985,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2133,7 +2133,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2245,7 +2245,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2261,7 +2261,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2277,7 +2277,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2293,7 +2293,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2429,7 +2429,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2445,7 +2445,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2461,7 +2461,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2493,7 +2493,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2509,7 +2509,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2525,7 +2525,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2541,7 +2541,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2599,7 +2599,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2641,7 +2641,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2657,7 +2657,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2673,7 +2673,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2689,7 +2689,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2705,7 +2705,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2721,7 +2721,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2737,7 +2737,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2753,7 +2753,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2769,7 +2769,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2785,7 +2785,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2801,7 +2801,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2817,7 +2817,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2833,7 +2833,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2849,7 +2849,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2865,7 +2865,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2881,7 +2881,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2897,7 +2897,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2955,7 +2955,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2971,7 +2971,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2987,7 +2987,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3003,7 +3003,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3019,7 +3019,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3087,7 +3087,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3103,7 +3103,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3119,7 +3119,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3135,7 +3135,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3151,7 +3151,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3167,7 +3167,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3183,7 +3183,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3199,7 +3199,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3215,7 +3215,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3291,7 +3291,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3307,7 +3307,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3323,7 +3323,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3339,7 +3339,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3355,7 +3355,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3371,7 +3371,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3387,7 +3387,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3543,7 +3543,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3559,7 +3559,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3575,7 +3575,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3591,7 +3591,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3607,7 +3607,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3623,7 +3623,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3639,7 +3639,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3655,7 +3655,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3671,7 +3671,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3687,7 +3687,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3795,7 +3795,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3811,7 +3811,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3827,7 +3827,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3843,7 +3843,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3859,7 +3859,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3875,7 +3875,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3891,7 +3891,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3907,7 +3907,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3923,7 +3923,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3939,7 +3939,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3965,7 +3965,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4023,7 +4023,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4258,7 +4258,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4274,7 +4274,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4290,7 +4290,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4306,7 +4306,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4462,7 +4462,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4478,7 +4478,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4494,7 +4494,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4510,7 +4510,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4720,10 +4720,10 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4739,7 +4739,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4755,7 +4755,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4771,7 +4771,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4787,7 +4787,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4975,7 +4975,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4991,7 +4991,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5007,7 +5007,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5023,7 +5023,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5269,7 +5269,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5285,7 +5285,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5301,7 +5301,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5317,7 +5317,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5333,7 +5333,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5349,7 +5349,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5365,7 +5365,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5381,7 +5381,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5413,7 +5413,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5439,7 +5439,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5497,7 +5497,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5513,7 +5513,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5619,7 +5619,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5635,7 +5635,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5651,7 +5651,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5667,7 +5667,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5683,7 +5683,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5815,7 +5815,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5873,7 +5873,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6031,7 +6031,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6063,7 +6063,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6079,7 +6079,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6095,7 +6095,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6179,7 +6179,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6195,7 +6195,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6211,7 +6211,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6227,7 +6227,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6570,7 +6570,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6586,7 +6586,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6602,7 +6602,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6883,7 +6883,7 @@ "code": 27, "mfgCode": null, "side": "server", - "type": "ThermostatControlSequence", + "type": "ControlSequenceOfOperationEnum", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -7346,7 +7346,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7362,7 +7362,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -7378,7 +7378,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -8096,7 +8096,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -8272,7 +8272,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -8510,7 +8510,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -8676,7 +8676,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -8724,7 +8724,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9485,7 +9485,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -9501,7 +9501,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -9517,7 +9517,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -9629,7 +9629,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9661,7 +9661,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9741,7 +9741,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9757,7 +9757,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9789,7 +9789,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -9805,7 +9805,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -10269,7 +10269,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -10494,7 +10494,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -10510,7 +10510,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -10526,7 +10526,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -10542,7 +10542,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -10698,7 +10698,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -10714,7 +10714,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -10730,7 +10730,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -10746,7 +10746,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -10940,10 +10940,10 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -10959,7 +10959,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -10975,7 +10975,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -10991,7 +10991,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11004,10 +11004,10 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11195,7 +11195,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11211,7 +11211,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11227,7 +11227,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11243,7 +11243,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11301,7 +11301,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11317,7 +11317,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11333,7 +11333,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11349,7 +11349,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11365,7 +11365,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11381,7 +11381,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11397,7 +11397,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11413,7 +11413,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11445,7 +11445,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11519,7 +11519,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11535,7 +11535,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11551,7 +11551,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11567,7 +11567,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11583,7 +11583,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11760,7 +11760,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -11776,7 +11776,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -11792,7 +11792,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -11808,7 +11808,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -11824,7 +11824,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11840,7 +11840,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11856,7 +11856,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11872,7 +11872,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -11904,7 +11904,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": null, "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -12020,7 +12020,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -12132,7 +12132,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -12148,7 +12148,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -12164,7 +12164,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -12180,7 +12180,7 @@ "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -12252,5 +12252,6 @@ "endpointId": 65534, "networkId": 0 } - ] -} + ], + "log": [] +} \ No newline at end of file diff --git a/examples/all-clusters-minimal-app/ameba/main/DeviceCallbacks.cpp b/examples/all-clusters-minimal-app/ameba/main/DeviceCallbacks.cpp index 93092cf59a7a54..67b13d9abb9506 100644 --- a/examples/all-clusters-minimal-app/ameba/main/DeviceCallbacks.cpp +++ b/examples/all-clusters-minimal-app/ameba/main/DeviceCallbacks.cpp @@ -40,7 +40,7 @@ #include "Globals.h" #include "LEDWidget.h" -static const char * TAG = "app-devicecallbacks"; +static const char TAG[] = "app-devicecallbacks"; using namespace ::chip; using namespace ::chip::Inet; diff --git a/examples/all-clusters-minimal-app/esp32/main/AppTask.cpp b/examples/all-clusters-minimal-app/esp32/main/AppTask.cpp index 27c77c94ff90a4..89394e65c2560b 100644 --- a/examples/all-clusters-minimal-app/esp32/main/AppTask.cpp +++ b/examples/all-clusters-minimal-app/esp32/main/AppTask.cpp @@ -41,7 +41,7 @@ #define APP_EVENT_QUEUE_SIZE 10 #define APP_TASK_STACK_SIZE (3072) -static const char * TAG = "app-task"; +static const char TAG[] = "app-task"; namespace { diff --git a/examples/all-clusters-minimal-app/esp32/main/BluetoothWidget.cpp b/examples/all-clusters-minimal-app/esp32/main/BluetoothWidget.cpp index 452fb4ff85bb6f..523bb95585a8c5 100644 --- a/examples/all-clusters-minimal-app/esp32/main/BluetoothWidget.cpp +++ b/examples/all-clusters-minimal-app/esp32/main/BluetoothWidget.cpp @@ -31,7 +31,7 @@ #include "ScreenManager.h" #endif -extern const char * TAG; +extern const char TAG[]; void BluetoothWidget::Init() { diff --git a/examples/all-clusters-minimal-app/esp32/main/Button.cpp b/examples/all-clusters-minimal-app/esp32/main/Button.cpp index dd25966503ba80..fc168aeb5596f4 100644 --- a/examples/all-clusters-minimal-app/esp32/main/Button.cpp +++ b/examples/all-clusters-minimal-app/esp32/main/Button.cpp @@ -38,7 +38,7 @@ #include #include -static const char * TAG = "Button.cpp"; +static const char TAG[] = "Button.cpp"; extern Button gButtons[BUTTON_NUMBER]; diff --git a/examples/all-clusters-minimal-app/esp32/main/DeviceCallbacks.cpp b/examples/all-clusters-minimal-app/esp32/main/DeviceCallbacks.cpp index cff72337968ef4..6748c79a920c85 100644 --- a/examples/all-clusters-minimal-app/esp32/main/DeviceCallbacks.cpp +++ b/examples/all-clusters-minimal-app/esp32/main/DeviceCallbacks.cpp @@ -40,7 +40,7 @@ #include #endif -static const char * TAG = "app-devicecallbacks"; +static const char TAG[] = "app-devicecallbacks"; using namespace ::chip; using namespace ::chip::Inet; diff --git a/examples/all-clusters-minimal-app/esp32/main/DeviceWithDisplay.cpp b/examples/all-clusters-minimal-app/esp32/main/DeviceWithDisplay.cpp index dd85fcda16a152..c588c84bcff2d0 100644 --- a/examples/all-clusters-minimal-app/esp32/main/DeviceWithDisplay.cpp +++ b/examples/all-clusters-minimal-app/esp32/main/DeviceWithDisplay.cpp @@ -27,7 +27,7 @@ using namespace ::chip::Credentials; using namespace ::chip::DeviceManager; using namespace ::chip::DeviceLayer; -static const char * TAG = "DeviceWithDisplay"; +static const char TAG[] = "DeviceWithDisplay"; #if CONFIG_DEVICE_TYPE_M5STACK @@ -544,7 +544,7 @@ void SetupPretendDevices() app::Clusters::TemperatureMeasurement::Attributes::MeasuredValue::Set(1, static_cast(21 * 100)); app::Clusters::Thermostat::Attributes::LocalTemperature::Set(1, static_cast(21 * 100)); AddAttribute("SystemMode", "4"); - app::Clusters::Thermostat::Attributes::SystemMode::Set(1, 4); + app::Clusters::Thermostat::Attributes::SystemMode::Set(1, app::Clusters::Thermostat::SystemModeEnum::kHeat); AddAttribute("OccupiedCoolingSetpoint", "19"); app::Clusters::Thermostat::Attributes::OccupiedCoolingSetpoint::Set(1, static_cast(19 * 100)); AddAttribute("OccupiedHeatingSetpoint", "25"); diff --git a/examples/all-clusters-minimal-app/esp32/main/QRCodeScreen.cpp b/examples/all-clusters-minimal-app/esp32/main/QRCodeScreen.cpp index 2130da0107f31d..578f44003f435e 100644 --- a/examples/all-clusters-minimal-app/esp32/main/QRCodeScreen.cpp +++ b/examples/all-clusters-minimal-app/esp32/main/QRCodeScreen.cpp @@ -43,7 +43,7 @@ #include // TODO need sensible library tag when put in library -extern const char * TAG; +extern const char TAG[]; namespace { diff --git a/examples/all-clusters-minimal-app/esp32/main/WiFiWidget.cpp b/examples/all-clusters-minimal-app/esp32/main/WiFiWidget.cpp index cafc40cbfabf19..13ab2f4866625c 100644 --- a/examples/all-clusters-minimal-app/esp32/main/WiFiWidget.cpp +++ b/examples/all-clusters-minimal-app/esp32/main/WiFiWidget.cpp @@ -30,7 +30,7 @@ #if CONFIG_HAVE_DISPLAY #include "ScreenManager.h" #endif -extern const char * TAG; +extern const char TAG[]; void WiFiWidget::Init() { diff --git a/examples/all-clusters-minimal-app/esp32/main/main.cpp b/examples/all-clusters-minimal-app/esp32/main/main.cpp index 5b2af4cc4b2232..0ac538607efd89 100644 --- a/examples/all-clusters-minimal-app/esp32/main/main.cpp +++ b/examples/all-clusters-minimal-app/esp32/main/main.cpp @@ -70,7 +70,7 @@ using namespace ::chip::DeviceManager; // Used to indicate that an IP address has been added to the QRCode #define EXAMPLE_VENDOR_TAG_IP 1 -const char * TAG = "all-clusters-minimal-app"; +extern const char TAG[] = "all-clusters-minimal-app"; static AppDeviceCallbacks EchoCallbacks; static AppDeviceCallbacksDelegate sAppDeviceCallbacksDelegate; diff --git a/examples/all-clusters-minimal-app/infineon/psoc6/src/AppTask.cpp b/examples/all-clusters-minimal-app/infineon/psoc6/src/AppTask.cpp index efbbb4af9ec705..3fcbc365fbc426 100644 --- a/examples/all-clusters-minimal-app/infineon/psoc6/src/AppTask.cpp +++ b/examples/all-clusters-minimal-app/infineon/psoc6/src/AppTask.cpp @@ -160,7 +160,7 @@ CHIP_ERROR AppTask::Init() if (rc != 0) { P6_LOG("boot_set_confirmed failed"); - appError(CHIP_ERROR_WELL_UNINITIALIZED); + appError(CHIP_ERROR_UNINITIALIZED); } #endif // Register the callback to init the MDNS server when connectivity is available diff --git a/examples/all-clusters-minimal-app/telink/include/AppConfig.h b/examples/all-clusters-minimal-app/telink/include/AppConfig.h index 7cd1d6e62a3fc7..5ef62e04203e1b 100644 --- a/examples/all-clusters-minimal-app/telink/include/AppConfig.h +++ b/examples/all-clusters-minimal-app/telink/include/AppConfig.h @@ -25,4 +25,3 @@ #define APP_USE_THREAD_START_BUTTON 0 #define APP_SET_DEVICE_INFO_PROVIDER 0 #define APP_SET_NETWORK_COMM_ENDPOINT_SEC 1 -#define APP_USE_IDENTIFY_PWM 0 diff --git a/examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/clusterclient/OtaProviderClientFragment.kt b/examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/clusterclient/OtaProviderClientFragment.kt index da7d6791372195..87735856fa4844 100644 --- a/examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/clusterclient/OtaProviderClientFragment.kt +++ b/examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/clusterclient/OtaProviderClientFragment.kt @@ -1,6 +1,7 @@ package com.google.chip.chiptool.clusterclient import android.app.Activity +import android.app.AlertDialog import android.content.Intent import android.net.Uri import android.os.Bundle @@ -9,22 +10,42 @@ import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.AdapterView +import android.widget.ArrayAdapter +import android.widget.Button +import android.widget.EditText +import android.widget.Spinner +import android.widget.Toast import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import chip.devicecontroller.ChipClusters import chip.devicecontroller.ChipClusters.DefaultClusterCallback import chip.devicecontroller.ChipDeviceController +import chip.devicecontroller.ClusterIDMapping import chip.devicecontroller.OTAProviderDelegate +import chip.devicecontroller.OTAProviderDelegate.QueryImageResponseStatusEnum +import chip.devicecontroller.ReportCallback +import chip.devicecontroller.WriteAttributesCallback +import chip.devicecontroller.cluster.structs.AccessControlClusterAccessControlEntryStruct +import chip.devicecontroller.cluster.structs.OtaSoftwareUpdateRequestorClusterProviderLocation +import chip.devicecontroller.model.AttributeWriteRequest +import chip.devicecontroller.model.ChipAttributePath +import chip.devicecontroller.model.ChipEventPath +import chip.devicecontroller.model.NodeState import com.google.chip.chiptool.ChipClient import com.google.chip.chiptool.GenericChipDeviceListener import com.google.chip.chiptool.R import com.google.chip.chiptool.databinding.OtaProviderClientFragmentBinding +import com.google.chip.chiptool.util.toAny import java.io.BufferedInputStream import java.io.IOException import java.io.InputStream import java.util.Optional import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch +import matter.tlv.AnonymousTag +import matter.tlv.TlvReader +import matter.tlv.TlvWriter class OtaProviderClientFragment : Fragment() { private val deviceController: ChipDeviceController @@ -45,6 +66,8 @@ class OtaProviderClientFragment : Fragment() { private val binding get() = _binding!! + private val attributeList = ClusterIDMapping.OtaSoftwareUpdateRequestor.Attribute.values() + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -59,16 +82,312 @@ class OtaProviderClientFragment : Fragment() { childFragmentManager.findFragmentById(R.id.addressUpdateFragment) as AddressUpdateFragment binding.selectFirmwareFileBtn.setOnClickListener { selectFirmwareFileBtnClick() } + binding.updateOTAStatusBtn.setOnClickListener { updateOTAStatusBtnClick() } binding.announceOTAProviderBtn.setOnClickListener { scope.launch { sendAnnounceOTAProviderBtnClick() } } + binding.writeAclBtn.setOnClickListener { scope.launch { sendAclBtnClick() } } + + binding.readAttributeBtn.setOnClickListener { scope.launch { readAttributeBtnClick() } } + + binding.writeAttributeBtn.setOnClickListener { scope.launch { writeAttributeBtnClick() } } + + setQueryImageSpinnerListener() + + val attributeNames = attributeList.map { it.name } + + binding.attributeSp.adapter = + ArrayAdapter(requireContext(), android.R.layout.simple_spinner_dropdown_item, attributeNames) + binding.vendorIdEd.setText(ChipClient.VENDOR_ID.toString()) + binding.delayActionTimeEd.setText("0") deviceController.startOTAProvider(otaProviderCallback) return binding.root } + private suspend fun sendAclBtnClick() { + val endpointId = 0 + val clusterId = ClusterIDMapping.AccessControl.ID + val attributeId = ClusterIDMapping.AccessControl.Attribute.Acl.id + + val attributePath = ChipAttributePath.newInstance(endpointId, clusterId, attributeId) + deviceController.readAttributePath( + object : ReportCallback { + override fun onError( + attributePath: ChipAttributePath?, + eventPath: ChipEventPath?, + e: Exception + ) { + Log.d(TAG, "onError : ", e) + showMessage("Error : $e") + } + + override fun onReport(nodeState: NodeState?) { + Log.d(TAG, "onResponse") + val tlv = + nodeState + ?.getEndpointState(endpointId) + ?.getClusterState(clusterId) + ?.getAttributeState(attributeId) + ?.tlv + requireActivity().runOnUiThread { showAddAccessControlDialog(tlv) } + } + }, + ChipClient.getConnectedDevicePointer(requireContext(), addressUpdateFragment.deviceId), + listOf(attributePath), + 0 + ) + } + + private fun showAddAccessControlDialog(tlv: ByteArray?) { + if (tlv == null) { + Log.d(TAG, "Access Control read fail") + showMessage("Access Control read fail") + return + } + + val dialogView = + requireActivity().layoutInflater.inflate(R.layout.add_access_control_dialog, null) + val groupIdEd = dialogView.findViewById(R.id.groupIdEd) + groupIdEd.visibility = View.GONE + val nodeIdEd = dialogView.findViewById(R.id.nodeIdEd) + nodeIdEd.visibility = View.VISIBLE + val accessControlEntrySp = dialogView.findViewById(R.id.accessControlEntrySp) + accessControlEntrySp.adapter = + ArrayAdapter( + requireContext(), + android.R.layout.simple_spinner_dropdown_item, + GroupSettingFragment.Companion.AccessControlEntry.values() + ) + + val dialog = AlertDialog.Builder(requireContext()).apply { setView(dialogView) }.create() + dialogView.findViewById