diff --git a/.github/workflows/docker_img.yaml b/.github/workflows/docker_img.yaml index b706dbcac39e42..73c45ee303a756 100644 --- a/.github/workflows/docker_img.yaml +++ b/.github/workflows/docker_img.yaml @@ -42,7 +42,12 @@ jobs: - "-esp32" - "-esp32-qemu" - "-infineon" - - "-imx" + # NOTE: imx image requires too much space for GitHub-hosted runners. It fails with: + # ``` + # .... + # ApplyLayer exit status 1 stdout: stderr: write /opt/fsl-imx-xwayland/5.15-kirkstone/sysroots/armv8a-poky-linux/opt/ltp/testcases/bin/fanotify15: no space left on device + # ``` + # - "-imx" - "-k32w" - "-mbed-os" - "-nrf-platform" diff --git a/.github/workflows/examples-cyw30739.yaml b/.github/workflows/examples-cyw30739.yaml deleted file mode 100644 index a3126dbba0442c..00000000000000 --- a/.github/workflows/examples-cyw30739.yaml +++ /dev/null @@ -1,102 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: Build example - Infineon CYW30739 - -on: - push: - pull_request: - -concurrency: - group: ${{ github.ref }}-${{ github.workflow }}-${{ (github.event_name == 'pull_request' && github.event.number) || (github.event_name == 'workflow_dispatch' && github.run_number) || github.sha }} - cancel-in-progress: true - -jobs: - cyw30739: - name: CYW30739 - timeout-minutes: 60 - - runs-on: ubuntu-latest - if: github.actor != 'restyled-io[bot]' - - container: - image: connectedhomeip/chip-build:latest - volumes: - - "/tmp/bloat_reports:/tmp/bloat_reports" - steps: - - uses: Wandalen/wretry.action@v1.0.15 - name: Checkout - with: - action: actions/checkout@v3 - with: | - token: ${{ github.token }} - attempt_limit: 3 - attempt_delay: 2000 - - name: Checkout submodules - run: scripts/checkout_submodules.py --shallow --platform cyw30739 - - - name: Set up environment for size reports - if: ${{ !env.ACT }} - env: - GH_CONTEXT: ${{ toJson(github) }} - run: scripts/tools/memory/gh_sizes_environment.py "${GH_CONTEXT}" - - - name: Bootstrap - timeout-minutes: 25 - run: scripts/build/gn_bootstrap.sh - - name: Uploading bootstrap logs - uses: actions/upload-artifact@v2 - if: ${{ always() && !env.ACT }} - with: - name: bootstrap-logs - path: | - .environment/gn_out/.ninja_log - .environment/pigweed-venv/*.log - - name: Build example CYW30739 Apps - timeout-minutes: 30 - run: | - ./scripts/run_in_build_env.sh \ - "./scripts/build/build_examples.py \ - --target-glob 'cyw30739-cyw930739m2evb_01-{light,lock,ota-requestor-no-progress-logging}' \ - build \ - --copy-artifacts-to out/artifacts \ - " - - name: Get light size stats - timeout-minutes: 5 - run: | - .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ - cyw30739 cyw930739m2evb_01 light \ - out/artifacts/cyw30739-cyw930739m2evb_01-light/chip-cyw30739-lighting-example.elf \ - /tmp/bloat_reports/ - - name: Get lock size stats - timeout-minutes: 5 - run: | - .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ - cyw30739 cyw930739m2evb_01 lock \ - out/artifacts/cyw30739-cyw930739m2evb_01-lock/chip-cyw30739-lock-example.elf \ - /tmp/bloat_reports/ - - name: Get ota-requestor size stats - timeout-minutes: 5 - run: | - .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ - cyw30739 cyw930739m2evb_01 ota-requestor-no-progress-logging \ - out/artifacts/cyw30739-cyw930739m2evb_01-ota-requestor-no-progress-logging/chip-cyw30739-ota-requestor-example.elf \ - /tmp/bloat_reports/ - - name: Uploading Size Reports - uses: actions/upload-artifact@v2 - if: ${{ !env.ACT }} - with: - name: Size,CYW30739-Examples,${{ env.GH_EVENT_PR }},${{ env.GH_EVENT_HASH }},${{ env.GH_EVENT_PARENT }},${{ github.event_name }} - path: | - /tmp/bloat_reports/ diff --git a/.github/workflows/examples-efr32.yaml b/.github/workflows/examples-efr32.yaml index 320dad29dadd31..b8c5134d6e9fcd 100644 --- a/.github/workflows/examples-efr32.yaml +++ b/.github/workflows/examples-efr32.yaml @@ -94,8 +94,8 @@ jobs: - name: Build example EFR32 Lighting App for BRD4161A with RPCs timeout-minutes: 15 run: | - scripts/examples/gn_efr32_example.sh examples/lighting-app/efr32/ out/lighting_app_debug_rpc BRD4161A \ - 'import("//with_pw_rpc.gni")' + scripts/examples/gn_efr32_example.sh examples/lighting-app/efr32/ out/lighting_app_debug_rpc BRD4161A "is_debug=false" \ + disable_lcd=true 'import("//with_pw_rpc.gni")' .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py efr32 BRD4161A+rpc lighting-app \ out/lighting_app_debug_rpc/BRD4161A/chip-efr32-lighting-example.out /tmp/bloat_reports/ - name: Build example EFR32+WF200 WiFi Lock app for BRD4161A diff --git a/.github/workflows/examples-infineon.yaml b/.github/workflows/examples-infineon.yaml index 7fc9cdd4485be0..cc5a8f522596d5 100644 --- a/.github/workflows/examples-infineon.yaml +++ b/.github/workflows/examples-infineon.yaml @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -name: Build example - Infineon P6 +name: Build example - Infineon on: push: @@ -33,7 +33,8 @@ jobs: container: image: connectedhomeip/chip-build-infineon:0.5.91 - + volumes: + - "/tmp/bloat_reports:/tmp/bloat_reports" steps: - uses: Wandalen/wretry.action@v1.0.15 name: Checkout @@ -44,7 +45,7 @@ jobs: attempt_limit: 3 attempt_delay: 2000 - name: Checkout submodules - run: scripts/checkout_submodules.py --shallow --platform p6 + run: scripts/checkout_submodules.py --shallow --platform infineon - name: Set up environment for size reports if: ${{ !env.ACT }} @@ -63,65 +64,97 @@ jobs: path: | .environment/gn_out/.ninja_log .environment/pigweed-venv/*.log - - name: Build lock-app example + - name: Build PSoC6 lock-app example timeout-minutes: 15 run: | scripts/run_in_build_env.sh \ "scripts/build/build_examples.py \ --enable-flashbundle --no-log-timestamps \ - --target infineon-p6-lock \ + --target infineon-psoc6-lock \ build \ --copy-artifacts-to out/artifacts \ " .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ - p6 default lock-app \ - out/infineon-p6-lock/chip-p6-lock-example.out - - name: Build all-clusters-app example + psoc6 cy8ckit_062s2_43012 lock \ + out/artifacts/infineon-psoc6-lock/chip-psoc6-lock-example.out \ + /tmp/bloat_reports/ + - name: Build PSoC6 all-clusters-app example timeout-minutes: 20 run: | scripts/run_in_build_env.sh \ "scripts/build/build_examples.py \ --enable-flashbundle --no-log-timestamps \ - --target infineon-p6-all-clusters \ + --target infineon-psoc6-all-clusters \ build \ --copy-artifacts-to out/artifacts \ " .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ - p6 default all-clusters-app \ - out/infineon-p6-all-clusters/chip-p6-clusters-example.out - - name: Build all-clusters-minimal-app example + psoc6 cy8ckit_062s2_43012 all-clusters \ + out/artifacts/infineon-psoc6-all-clusters/chip-psoc6-clusters-example.out \ + /tmp/bloat_reports/ + - name: Build PSoC6 all-clusters-minimal-app example timeout-minutes: 20 run: | scripts/run_in_build_env.sh \ "scripts/build/build_examples.py \ --enable-flashbundle --no-log-timestamps \ - --target infineon-p6-all-clusters-minimal \ + --target infineon-psoc6-all-clusters-minimal \ build \ --copy-artifacts-to out/artifacts \ " .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ - p6 default all-clusters-minimal-app \ - out/infineon-p6-all-clusters-minimal/chip-p6-clusters-minimal-example.out - - name: Build lighting-app example + psoc6 cy8ckit_062s2_43012 all-clusters-minimal \ + out/artifacts/infineon-psoc6-all-clusters-minimal/chip-psoc6-clusters-minimal-example.out \ + /tmp/bloat_reports/ + - name: Build PSoC6 lighting-app example timeout-minutes: 15 run: | scripts/run_in_build_env.sh \ "scripts/build/build_examples.py \ --enable-flashbundle --no-log-timestamps \ - --target infineon-p6-light \ + --target infineon-psoc6-light \ build \ --copy-artifacts-to out/artifacts \ " .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ - p6 default light-app \ - out/infineon-p6-light/chip-p6-lighting-example.out + psoc6 cy8ckit_062s2_43012 light \ + out/artifacts/infineon-psoc6-light/chip-psoc6-lighting-example.out \ + /tmp/bloat_reports/ + + - name: Build example CYW30739 Apps + timeout-minutes: 30 + run: | + ./scripts/run_in_build_env.sh \ + "./scripts/build/build_examples.py \ + --target-glob 'cyw30739-cyw930739m2evb_01-{light,lock,ota-requestor-no-progress-logging}' \ + build \ + --copy-artifacts-to out/artifacts \ + " + - name: Get light size stats + timeout-minutes: 5 + run: | + .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ + cyw30739 cyw930739m2evb_01 light \ + out/artifacts/cyw30739-cyw930739m2evb_01-light/chip-cyw30739-lighting-example.elf \ + /tmp/bloat_reports/ + - name: Get lock size stats + timeout-minutes: 5 + run: | + .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ + cyw30739 cyw930739m2evb_01 lock \ + out/artifacts/cyw30739-cyw930739m2evb_01-lock/chip-cyw30739-lock-example.elf \ + /tmp/bloat_reports/ + - name: Get ota-requestor size stats + timeout-minutes: 5 + run: | + .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ + cyw30739 cyw930739m2evb_01 ota-requestor-no-progress-logging \ + out/artifacts/cyw30739-cyw930739m2evb_01-ota-requestor-no-progress-logging/chip-cyw30739-ota-requestor-example.elf \ + /tmp/bloat_reports/ - name: Uploading Size Reports uses: actions/upload-artifact@v2 if: ${{ !env.ACT }} with: - name: Size,P6-Examples,${{ env.GH_EVENT_PR }},${{ env.GH_EVENT_HASH }},${{ env.GH_EVENT_PARENT }},${{ github.event_name }} + name: Size,Infineon-Examples,${{ env.GH_EVENT_PR }},${{ env.GH_EVENT_HASH }},${{ env.GH_EVENT_PARENT }},${{ github.event_name }} path: | - out/infineon-p6-lock/p6-default-lock-app-sizes.json - out/infineon-p6-all-clusters/p6-default-all-clusters-app-sizes.json - out/infineon-p6-all-clusters-minimal/p6-default-all-clusters-minimal-app-sizes.json - out/infineon-p6-light/p6-default-light-app-sizes.json + /tmp/bloat_reports/ diff --git a/.github/workflows/examples-nrfconnect.yaml b/.github/workflows/examples-nrfconnect.yaml index 3c110ce1ccece7..5da513c70de6ba 100644 --- a/.github/workflows/examples-nrfconnect.yaml +++ b/.github/workflows/examples-nrfconnect.yaml @@ -95,15 +95,6 @@ jobs: nrfconnect nrf52840dk_nrf52840 lock-app \ examples/lock-app/nrfconnect/build/zephyr/zephyr.elf \ /tmp/bloat_reports/ - - name: Build example nRF Connect SDK Lighting App on nRF52840 DK - if: github.event_name == 'push' || steps.changed_paths.outputs.nrfconnect == 'true' - timeout-minutes: 15 - run: | - scripts/examples/nrfconnect_example.sh lighting-app nrf52840dk_nrf52840 - .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ - nrfconnect nrf52840dk_nrf52840 lighting-app \ - examples/lighting-app/nrfconnect/build/zephyr/zephyr.elf \ - /tmp/bloat_reports/ - name: Build example nRF Connect SDK Lighting App on nRF52840 Dongle if: github.event_name == 'push' || steps.changed_paths.outputs.nrfconnect == 'true' timeout-minutes: 15 @@ -122,6 +113,15 @@ jobs: nrfconnect nrf52840dk_nrf52840+rpc lighting-app \ examples/lighting-app/nrfconnect/build/zephyr/zephyr.elf \ /tmp/bloat_reports/ + - name: Build example nRF Connect SDK Light Switch App on nRF52840 DK + if: github.event_name == 'push' || steps.changed_paths.outputs.nrfconnect == 'true' + timeout-minutes: 15 + run: | + scripts/examples/nrfconnect_example.sh light-switch-app nrf52840dk_nrf52840 + .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ + nrfconnect nrf52840dk_nrf52840 light-switch-app \ + examples/light-switch-app/nrfconnect/build/zephyr/zephyr.elf \ + /tmp/bloat_reports/ - name: Build example nRF Connect SDK Shell on nRF52840 DK if: github.event_name == 'push' || steps.changed_paths.outputs.shell == 'true' timeout-minutes: 15 @@ -140,24 +140,6 @@ jobs: nrfconnect nrf52840dk_nrf52840 pigweed-app \ examples/pigweed-app/nrfconnect/build/zephyr/zephyr.elf \ /tmp/bloat_reports/ - - name: Build example nRF Connect SDK Lock App on nRF5340 DK - if: github.event_name == 'push' || steps.changed_paths.outputs.nrfconnect == 'true' - timeout-minutes: 15 - run: | - scripts/examples/nrfconnect_example.sh lock-app nrf5340dk_nrf5340_cpuapp - .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ - nrfconnect nrf5340dk_nrf5340_cpuapp lock-app \ - examples/lock-app/nrfconnect/build/zephyr/zephyr.elf \ - /tmp/bloat_reports/ - - name: Build example nRF Connect SDK Lighting App on nRF5340 DK - if: github.event_name == 'push' || steps.changed_paths.outputs.nrfconnect == 'true' - timeout-minutes: 15 - run: | - scripts/examples/nrfconnect_example.sh lighting-app nrf5340dk_nrf5340_cpuapp - .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ - nrfconnect nrf5340dk_nrf5340_cpuapp lighting-app \ - examples/lighting-app/nrfconnect/build/zephyr/zephyr.elf \ - /tmp/bloat_reports/ - name: Build example nRF Connect SDK Pump App on nRF52840 DK if: github.event_name == 'push' || steps.changed_paths.outputs.nrfconnect == 'true' timeout-minutes: 15 @@ -192,6 +174,24 @@ jobs: nrfconnect nrf52840dk_nrf52840 all-clusters-minimal-app \ examples/all-clusters-minimal-app/nrfconnect/build/zephyr/zephyr.elf \ /tmp/bloat_reports/ + - name: Build example nRF Connect SDK Lock App on nRF5340 DK + if: github.event_name == 'push' || steps.changed_paths.outputs.nrfconnect == 'true' + timeout-minutes: 15 + run: | + scripts/examples/nrfconnect_example.sh lock-app nrf5340dk_nrf5340_cpuapp + .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ + nrfconnect nrf5340dk_nrf5340_cpuapp lock-app \ + examples/lock-app/nrfconnect/build/zephyr/zephyr.elf \ + /tmp/bloat_reports/ + - name: Build example nRF Connect SDK Lighting App on nRF5340 DK + if: github.event_name == 'push' || steps.changed_paths.outputs.nrfconnect == 'true' + timeout-minutes: 15 + run: | + scripts/examples/nrfconnect_example.sh lighting-app nrf5340dk_nrf5340_cpuapp + .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ + nrfconnect nrf5340dk_nrf5340_cpuapp lighting-app \ + examples/lighting-app/nrfconnect/build/zephyr/zephyr.elf \ + /tmp/bloat_reports/ - name: Run unit tests for Zephyr native_posix_64 platform if: github.event_name == 'push' || steps.changed_paths.outputs.tests == 'true' timeout-minutes: 15 diff --git a/.gitmodules b/.gitmodules index abde0e5f8cdfd5..2f40b45697df5a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -62,7 +62,7 @@ path = third_party/freertos/repo url = https://github.com/FreeRTOS/FreeRTOS-Kernel.git branch = V10.3.1-kernel-only - platforms = ameba,cc13x2_26x2,bl602,efr32,esp32,k32w0,p6,qpg + platforms = ameba,cc13x2_26x2,bl602,efr32,esp32,k32w0,infineon,qpg [submodule "simw-top-mini"] path = third_party/simw-top-mini/repo url = https://github.com/NXP/plug-and-trust.git @@ -84,7 +84,7 @@ [submodule "third_party/openthread/ot-ifx"] path = third_party/openthread/ot-ifx url = https://github.com/Infineon/ot-ifx-release.git - platforms = cyw30739 + platforms = infineon [submodule "third_party/mbed-os/repo"] path = third_party/mbed-os/repo url = https://github.com/ARMmbed/mbed-os.git @@ -101,129 +101,129 @@ branch = main platforms = mbed [submodule "p6/abstraction-rtos"] - path = third_party/p6/p6_sdk/libs/abstraction-rtos + path = third_party/infineon/psoc6/psoc6_sdk/libs/abstraction-rtos url = https://github.com/Infineon/abstraction-rtos - platforms = p6 + platforms = infineon [submodule "p6/bluetooth-freertos"] - path = third_party/p6/p6_sdk/libs/bluetooth-freertos + path = third_party/infineon/psoc6/psoc6_sdk/libs/bluetooth-freertos url = https://github.com/Infineon/bluetooth-freertos branch = v2.X - platforms = p6 + platforms = infineon [submodule "p6/btstack"] - path = third_party/p6/p6_sdk/libs/btstack + path = third_party/infineon/psoc6/psoc6_sdk/libs/btstack url = https://github.com/Infineon/btstack - platforms = p6 + platforms = infineon [submodule "p6/clib-support"] - path = third_party/p6/p6_sdk/libs/clib-support + path = third_party/infineon/psoc6/psoc6_sdk/libs/clib-support url = https://github.com/Infineon/clib-support - platforms = p6 + platforms = infineon [submodule "p6/connectivity-utilities"] - path = third_party/p6/p6_sdk/libs/connectivity-utilities + path = third_party/infineon/psoc6/psoc6_sdk/libs/connectivity-utilities url = https://github.com/Infineon/connectivity-utilities - platforms = p6 + platforms = infineon [submodule "p6/core-lib"] - path = third_party/p6/p6_sdk/libs/core-lib + path = third_party/infineon/psoc6/psoc6_sdk/libs/core-lib url = https://github.com/Infineon/core-lib - platforms = p6 + platforms = infineon [submodule "p6/core-make"] - path = third_party/p6/p6_sdk/libs/core-make + path = third_party/infineon/psoc6/psoc6_sdk/libs/core-make url = https://github.com/Infineon/core-make - platforms = p6 + platforms = infineon [submodule "p6/kv-store"] - path = third_party/p6/p6_sdk/libs/kv-store + path = third_party/infineon/psoc6/psoc6_sdk/libs/kv-store url = https://github.com/Infineon/kv-store - platforms = p6 + platforms = infineon [submodule "p6/mtb-hal-cat1"] - path = third_party/p6/p6_sdk/libs/mtb-hal-cat1 + path = third_party/infineon/psoc6/psoc6_sdk/libs/mtb-hal-cat1 url = https://github.com/Infineon/mtb-hal-cat1 - platforms = p6 + platforms = infineon [submodule "p6/mtb-pdl-cat1"] - path = third_party/p6/p6_sdk/libs/mtb-pdl-cat1 + path = third_party/infineon/psoc6/psoc6_sdk/libs/mtb-pdl-cat1 url = https://github.com/Infineon/mtb-pdl-cat1 - platforms = p6 + platforms = infineon [submodule "p6/psoc6cm0p"] - path = third_party/p6/p6_sdk/libs/psoc6cm0p + path = third_party/infineon/psoc6/psoc6_sdk/libs/psoc6cm0p url = https://github.com/Infineon/psoc6cm0p - platforms = p6 + platforms = infineon [submodule "p6/whd-bsp-integration"] - path = third_party/p6/p6_sdk/libs/whd-bsp-integration + path = third_party/infineon/psoc6/psoc6_sdk/libs/whd-bsp-integration url = https://github.com/Infineon/whd-bsp-integration - platforms = p6 + platforms = infineon [submodule "p6/wifi-connection-manager"] - path = third_party/p6/p6_sdk/libs/wifi-connection-manager + path = third_party/infineon/psoc6/psoc6_sdk/libs/wifi-connection-manager url = https://github.com/Infineon/wifi-connection-manager - platforms = p6 + platforms = infineon [submodule "p6/wifi-host-driver"] - path = third_party/p6/p6_sdk/libs/wifi-host-driver + path = third_party/infineon/psoc6/psoc6_sdk/libs/wifi-host-driver url = https://github.com/Infineon/wifi-host-driver - platforms = p6 + platforms = infineon [submodule "p6/wifi-mw-core"] - path = third_party/p6/p6_sdk/libs/wifi-mw-core + path = third_party/infineon/psoc6/psoc6_sdk/libs/wifi-mw-core url = https://github.com/Infineon/wifi-mw-core - platforms = p6 + platforms = infineon [submodule "p6/TARGET_CY8CKIT-062S2-43012"] - path = third_party/p6/p6_sdk/libs/TARGET_CY8CKIT-062S2-43012 + path = third_party/infineon/psoc6/psoc6_sdk/libs/TARGET_CY8CKIT-062S2-43012 url = https://github.com/Infineon/TARGET_CY8CKIT-062S2-43012 - platforms = p6 + platforms = infineon [submodule "p6/freertos"] - path = third_party/p6/p6_sdk/libs/freertos + path = third_party/infineon/psoc6/psoc6_sdk/libs/freertos url = https://github.com/Infineon/freertos - platforms = p6 + platforms = infineon [submodule "p6/retarget-io"] - path = third_party/p6/p6_sdk/libs/retarget-io + path = third_party/infineon/psoc6/psoc6_sdk/libs/retarget-io url = https://github.com/Infineon/retarget-io - platforms = p6 + platforms = infineon [submodule "p6/mbedtls"] - path = third_party/p6/p6_sdk/libs/mbedtls + path = third_party/infineon/psoc6/psoc6_sdk/libs/mbedtls url = https://github.com/ARMmbed/mbedtls - platforms = p6 + platforms = infineon [submodule "p6/secure-sockets"] - path = third_party/p6/p6_sdk/libs/secure-sockets + path = third_party/infineon/psoc6/psoc6_sdk/libs/secure-sockets url = https://github.com/Infineon/secure-sockets - platforms = p6 + platforms = infineon [submodule "p6/recipe-make-cat1a"] - path = third_party/p6/p6_sdk/libs/recipe-make-cat1a + path = third_party/infineon/psoc6/psoc6_sdk/libs/recipe-make-cat1a url = https://github.com/Infineon/recipe-make-cat1a - platforms = p6 + platforms = infineon [submodule "third_party/pybind11/repo"] path = third_party/pybind11/repo url = https://github.com/pybind/pybind11 branch = stable [submodule "p6/lwip"] - path = third_party/p6/p6_sdk/libs/lwip + path = third_party/infineon/psoc6/psoc6_sdk/libs/lwip url = https://github.com/lwip-tcpip/lwip.git - platforms = p6 + platforms = infineon [submodule "third_party/jsoncpp/repo"] path = third_party/jsoncpp/repo url = https://github.com/open-source-parsers/jsoncpp.git [submodule "cyw30739_sdk/30739A0"] - path = third_party/cyw30739_sdk/repos/30739A0 + path = third_party/infineon/cyw30739_sdk/repos/30739A0 url = https://github.com/Infineon/OT-Matter-30739A0.git - platforms = cyw30739 + platforms = infineon [submodule "cyw30739_sdk/include"] - path = third_party/cyw30739_sdk/repos/btsdk-include + path = third_party/infineon/cyw30739_sdk/repos/btsdk-include url = https://github.com/Infineon/btsdk-include.git - platforms = cyw30739 + platforms = infineon [submodule "cyw30739_sdk/target"] - path = third_party/cyw30739_sdk/repos/CYW930739M2EVB-01 + path = third_party/infineon/cyw30739_sdk/repos/CYW930739M2EVB-01 url = https://github.com/Infineon/OT-Matter-TARGET_CYW930739M2EVB-01.git - platforms = cyw30739 + platforms = infineon [submodule "cyw30739_sdk/tools"] - path = third_party/cyw30739_sdk/repos/btsdk-tools + path = third_party/infineon/cyw30739_sdk/repos/btsdk-tools url = https://github.com/Infineon/btsdk-tools.git - platforms = cyw30739 + platforms = infineon [submodule "third_party/p6/p6_sdk/libs/anycloud-ota"] - path = third_party/p6/p6_sdk/libs/anycloud-ota + path = third_party/infineon/psoc6/psoc6_sdk/libs/anycloud-ota url = https://github.com/Infineon/anycloud-ota - platforms = p6 + platforms = infineon [submodule "third_party/mbed-mcu-boot/repo"] path = third_party/mbed-mcu-boot/repo url = https://github.com/ATmobica/mcuboot.git platforms = mbed [submodule "p6/serial-flash"] - path = third_party/p6/p6_sdk/libs/serial-flash + path = third_party/infineon/psoc6/psoc6_sdk/libs/serial-flash url = https://github.com/Infineon/serial-flash - platforms = p6 + platforms = infineon [submodule "third_party/telink_sdk/repo"] path = third_party/telink_sdk/repo url = https://github.com/telink-semi/telink_b91_ble_single_connection_sdk_matter diff --git a/BUILD.gn b/BUILD.gn index a233ab272621c7..7dbbb83d3cc77b 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -271,8 +271,8 @@ if (current_toolchain != "${dir_pw_toolchain}/default:default") { # Set this to true to enable efr32 builds by default. enable_efr32_builds = false - # Set this to true to enable p6 builds by default. - enable_p6_builds = false + # Set this to true to enable psoc6 builds by default. + enable_psoc6_builds = false # Set this to true to enable Qorvo qpg builds by default. enable_qpg_builds = false @@ -364,8 +364,8 @@ if (current_toolchain != "${dir_pw_toolchain}/default:default") { # Build the efr32 lock app example. enable_efr32_lock_app_build = enable_efr32_builds - # Build the p6 lock app example. - enable_p6_lock_app_build = enable_p6_builds + # Build the psoc6 lock app example. + enable_psoc6_lock_app_build = enable_psoc6_builds # Build the qpgxxxx lock app example. enable_qpg_lock_app_build = enable_qpg_builds && !is_debug @@ -610,12 +610,12 @@ if (current_toolchain != "${dir_pw_toolchain}/default:default") { extra_build_deps += [ ":efr32_lock_app" ] } - if (enable_p6_lock_app_build) { - group("p6_lock_app") { - deps = [ "${chip_root}/examples/lock-app/p6(${chip_root}/config/p6/toolchain:p6_lock_app)" ] + if (enable_psoc6_lock_app_build) { + group("psoc6_lock_app") { + deps = [ "${chip_root}/examples/lock-app/infineon/psoc6(${chip_root}/config/psoc6/toolchain:psoc6_lock_app)" ] } - extra_build_deps += [ ":p6_lock_app" ] + extra_build_deps += [ ":psoc6_lock_app" ] } if (enable_qpg_lock_app_build) { diff --git a/build_overrides/p6.gni b/build_overrides/psoc6.gni similarity index 75% rename from build_overrides/p6.gni rename to build_overrides/psoc6.gni index 0ae9c543ee8456..a4fc95b53917c1 100644 --- a/build_overrides/p6.gni +++ b/build_overrides/psoc6.gni @@ -13,11 +13,11 @@ # limitations under the License. declare_args() { - # Root directory for p6 SDK build files. - p6_sdk_build_root = "//third_party/p6" + # Root directory for psoc6 SDK build files. + psoc6_sdk_build_root = "//third_party/infineon/psoc6" } declare_args() { - # Root directory for p6 SDK sources. - p6_sdk_root = "${p6_sdk_build_root}/p6_sdk" + # Root directory for psoc6 SDK sources. + psoc6_sdk_root = "${psoc6_sdk_build_root}/psoc6_sdk" } diff --git a/config/p6/toolchain/BUILD.gn b/config/psoc6/toolchain/BUILD.gn similarity index 88% rename from config/p6/toolchain/BUILD.gn rename to config/psoc6/toolchain/BUILD.gn index 219ae1bf1102ed..542012522ea8cb 100644 --- a/config/p6/toolchain/BUILD.gn +++ b/config/psoc6/toolchain/BUILD.gn @@ -17,9 +17,9 @@ import("//build_overrides/chip.gni") import("${build_root}/toolchain/arm_gcc/arm_toolchain.gni") -arm_toolchain("p6_lock_app") { +arm_toolchain("psoc6_lock_app") { toolchain_args = { current_os = "freertos" - import("${chip_root}/examples/lock-app/p6/args.gni") + import("${chip_root}/examples/lock-app/infineon/psoc6/args.gni") } } diff --git a/docs/guides/BUILDING.md b/docs/guides/BUILDING.md index 5bcd865ca5db1b..00bf6d97a581f9 100644 --- a/docs/guides/BUILDING.md +++ b/docs/guides/BUILDING.md @@ -8,7 +8,7 @@ Tested on: - macOS 10.15 - Debian 11 -- Ubuntu 20.04 LTS +- Ubuntu 22.04 LTS Build system features: @@ -81,9 +81,8 @@ dependency. ### Installing prerequisites on Raspberry Pi 4 -Using `rpi-imager`, install the Ubuntu _21.04_ 64-bit _server_ OS for arm64 -architectures on a micro SD card. This release will have bluez 5.55 or newer -which is required for BLE functionality. +Using `rpi-imager`, install the Ubuntu _22.04_ 64-bit _server_ OS for arm64 +architectures on a micro SD card. Boot the SD card, login with the default user account "ubuntu" and password "ubuntu", then proceed with diff --git a/docs/guides/README.md b/docs/guides/README.md index 09f3f9c1c4c3e7..44d0a8dc9fcb4a 100644 --- a/docs/guides/README.md +++ b/docs/guides/README.md @@ -5,7 +5,7 @@ - [Android - Building](./android_building.md) - [Apple - Testing with iPhone, iPad, macOS, Apple TV, HomePod, Watch, etc](./darwin.md) - [Espressif (ESP32) - Getting Started Guide](./esp32/README.md) -- [Infineon - Software Update](./infineon_p6_software_update.md) +- [Infineon PSoC6 - Software Update](./infineon_psoc6_software_update.md) - [Linux - Simulated Devices](./simulated_device_linux.md) - [mbedOS - Adding a new target](./mbedos_add_new_target.md) - [mbedOS - Commissioning](./mbedos_commissioning.md) diff --git a/docs/guides/darwin.md b/docs/guides/darwin.md index 2d9443d70a6d0a..b28a9925d53cd0 100644 --- a/docs/guides/darwin.md +++ b/docs/guides/darwin.md @@ -205,7 +205,6 @@ requirements ##### Guides - [Bouffalo Lab](/examples/lighting-app/bouffalolab/bl602/README.md) -- [CYW30739 Lighting](/examples/lighting-app/cyw30739/README.md) - [EFR32 Window Covering](/examples/window-app/efr32/README.md) - [ESP32 All Clusters](/examples/all-clusters-app/esp32/README.md) - [ESP32 Lighting](/examples/lighting-app/esp32/README.md) @@ -215,7 +214,8 @@ requirements - [nRF Connect Pump](/examples/pump-app/nrfconnect/README.md) - [NXP Examples](./nxp_imx8m_linux_examples.md) - [NXP](/examples/all-clusters-app/nxp/mw320/README.md) -- [P6](/examples/all-clusters-app/p6/README.md) +- [Infineon CYW30739 Lighting](/examples/lighting-app/infineon/cyw30739/README.md) +- [Infineon PSoC6](/examples/all-clusters-app/infineon/psoc6/README.md) - [Qorvo](/examples/lighting-app/qpg/README.md) - [SiliconLabs](./silabs_efr32_building.md) - [Simulated Linux](./simulated_device_linux.md) diff --git a/docs/guides/infineon_p6_software_update.md b/docs/guides/infineon_psoc6_software_update.md similarity index 75% rename from docs/guides/infineon_p6_software_update.md rename to docs/guides/infineon_psoc6_software_update.md index 136f577dfb6301..7cddc020c6c417 100644 --- a/docs/guides/infineon_p6_software_update.md +++ b/docs/guides/infineon_psoc6_software_update.md @@ -1,8 +1,8 @@ -# Matter Software Update with Infineon P6 example applications +# Matter Software Update with Infineon PSoC6 example applications The Over The Air (OTA) Software Update functionality can be added to any of the -Infineon P6 example applications by passing the `chip_enable_ota_requestor=true` -option to the build script. +Infineon PSoC6 example applications by passing the +`chip_enable_ota_requestor=true` option to the build script. ## Running the OTA Download scenario @@ -11,7 +11,7 @@ option to the build script. OTA Requestor is any node that needs to be updated and can communicate with the OTA Provider to fetch applicable software updates. In the procedure described below, the OTA Provider will be a Linux application and the - example running on the Infineon P6 board will work as the OTA Requestor. + example running on the Infineon PSoC6 board will work as the OTA Requestor. - On a Linux or Darwin platform build the chip-tool and the ota-provider-app as follows: @@ -21,33 +21,33 @@ option to the build script. scripts/examples/gn_build_example.sh examples/ota-provider-app/linux out/debug chip_config_network_layer_ble=false ``` -- Build the P6 OTA Requestor application from the chip root dir: +- Build the PSoC6 OTA Requestor application from the chip root dir: ``` - $ scripts/build/build_examples.py --enable-flashbundle --target infineon-p6-lock-ota build - $ third_party/p6/p6_sdk/ota/ota_base_build.sh out/infineon-p6-lock-ota chip-p6-lock-example + $ scripts/build/build_examples.py --enable-flashbundle --target infineon-psoc6-lock-ota build + $ third_party/psoc6/psoc6_sdk/ota/ota_base_build.sh out/infineon-psoc6-lock-ota chip-psoc6-lock-example ``` -- Build the P6 OTA Update application from the chip root dir and create OTA +- Build the PSoC6 OTA Update application from the chip root dir and create OTA file ``` - $ scripts/build/build_examples.py --enable-flashbundle --no-log-timestamps --target infineon-p6-lock-ota-updateimage build - $ third_party/p6/p6_sdk/ota/ota_update_build.sh out/infineon-p6-lock-ota-updateimage chip-p6-lock-example + $ scripts/build/build_examples.py --enable-flashbundle --no-log-timestamps --target infineon-psoc6-lock-ota-updateimage build + $ third_party/psoc6/psoc6_sdk/ota/ota_update_build.sh out/infineon-psoc6-lock-ota-updateimage chip-psoc6-lock-example ``` * Additionally a pre-compiled bootloader must be flashed to the board using [Cypress Programmer](https://softwaretools.infineon.com/tools/com.ifx.tb.tool.cypressprogrammer). This image can be found at: - $ ./third_party/p6/p6_sdk/ota/matter-psoc6-mcuboot-bootloader.hex + $ ./third_party/psoc6/psoc6_sdk/ota/matter-psoc6-mcuboot-bootloader.hex * In a terminal start the Provider app passing to it the path to the Matter OTA file created in the previous step:(output of ota_update_build step) ``` rm -r /tmp/chip_* - ./out/debug/chip-ota-provider-app -f chip-p6-lock-example.ota + ./out/debug/chip-ota-provider-app -f chip-psoc6-lock-example.ota ``` * In a separate terminal run the chip-tool commands to provision the Provider: 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 ba13b42667e261..18d7c48c099ad3 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 @@ -3850,7 +3850,14 @@ server cluster FaultInjection = 4294048774 { BOOLEAN takeMutex = 4; } + request struct FailRandomlyAtFaultRequest { + FaultType type = 0; + INT32U id = 1; + INT8U percentage = 2; + } + command access(invoke: manage) FailAtFault(FailAtFaultRequest): DefaultSuccess = 0; + command access(invoke: manage) FailRandomlyAtFault(FailRandomlyAtFaultRequest): DefaultSuccess = 1; } endpoint 0 { 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 baefdc4cf4a07c..a77c6e149bdbb6 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 @@ -8461,6 +8461,14 @@ "source": "client", "incoming": 1, "outgoing": 1 + }, + { + "name": "FailRandomlyAtFault", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 0 } ], "attributes": [ diff --git a/examples/all-clusters-app/p6/.gn b/examples/all-clusters-app/infineon/psoc6/.gn similarity index 100% rename from examples/all-clusters-app/p6/.gn rename to examples/all-clusters-app/infineon/psoc6/.gn diff --git a/examples/all-clusters-app/p6/BUILD.gn b/examples/all-clusters-app/infineon/psoc6/BUILD.gn similarity index 79% rename from examples/all-clusters-app/p6/BUILD.gn rename to examples/all-clusters-app/infineon/psoc6/BUILD.gn index 1fa873956a4830..a92d8fb969e171 100644 --- a/examples/all-clusters-app/p6/BUILD.gn +++ b/examples/all-clusters-app/infineon/psoc6/BUILD.gn @@ -14,17 +14,17 @@ import("//build_overrides/build.gni") import("//build_overrides/chip.gni") -import("//build_overrides/p6.gni") +import("//build_overrides/psoc6.gni") import("${build_root}/config/defaults.gni") import("${chip_root}/src/platform/device.gni") -import("${p6_sdk_build_root}/p6_executable.gni") -import("${p6_sdk_build_root}/p6_sdk.gni") +import("${psoc6_sdk_build_root}/psoc6_executable.gni") +import("${psoc6_sdk_build_root}/psoc6_sdk.gni") assert(current_os == "freertos") -p6_project_dir = "${chip_root}/examples/all-clusters-app/p6" -examples_plat_dir = "${chip_root}/examples/platform/p6" +psoc6_project_dir = "${chip_root}/examples/all-clusters-app/infineon/psoc6" +examples_plat_dir = "${chip_root}/examples/platform/infineon/psoc6" declare_args() { # Dump memory usage at link time. @@ -40,8 +40,8 @@ declare_args() { build_update_image = false } -config("p6_ota_config") { - linker_script = "${p6_sdk_root}/ota/cy8c6xxa_cm4_dual_ota_int.ld" +config("psoc6_ota_config") { + linker_script = "${psoc6_sdk_root}/ota/cy8c6xxa_cm4_dual_ota_int.ld" ldflags = [ "-T" + rebase_path(linker_script, root_build_dir) ] @@ -78,38 +78,39 @@ config("p6_ota_config") { } } -p6_sdk_sources("all_clusters_app_sdk_sources") { +psoc6_sdk_sources("all_clusters_app_sdk_sources") { include_dirs = [ - "${chip_root}/src/platform/P6", - "${p6_project_dir}/include", + "${chip_root}/src/platform/PSOC6", + "${psoc6_project_dir}/include", "${examples_plat_dir}", ] defines = [ - "BOARD_ID=${p6_board}", + "BOARD_ID=${psoc6_board}", "P6_LOG_ENABLED=1", "CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE=${setup_pin_code}", ] - sources = [ "${p6_project_dir}/include/CHIPProjectConfig.h" ] + sources = [ "${psoc6_project_dir}/include/CHIPProjectConfig.h" ] - public_configs = [ "${chip_root}/third_party/p6:p6_sdk_config" ] + public_configs = + [ "${chip_root}/third_party/infineon/psoc6:psoc6_sdk_config" ] if (chip_enable_ota_requestor) { - public_configs += [ ":p6_ota_config" ] + public_configs += [ ":psoc6_ota_config" ] } } -p6_executable("clusters_app") { +psoc6_executable("clusters_app") { include_dirs = [] defines = [] - output_name = "chip-p6-clusters-example.out" + output_name = "chip-psoc6-clusters-example.out" sources = [ "${chip_root}/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/static-supported-modes-manager.cpp", "${examples_plat_dir}/LEDWidget.cpp", - "${examples_plat_dir}/init_p6Platform.cpp", + "${examples_plat_dir}/init_psoc6Platform.cpp", "src/AppTask.cpp", "src/ButtonHandler.cpp", "src/ClusterManager.cpp", @@ -129,7 +130,7 @@ p6_executable("clusters_app") { include_dirs += [ "include", "${examples_plat_dir}", - "${p6_project_dir}/include", + "${psoc6_project_dir}/include", "${chip_root}/examples/all-clusters-app/all-clusters-common/include", ] @@ -150,10 +151,10 @@ p6_executable("clusters_app") { output_dir = root_out_dir } -group("p6") { +group("psoc6") { deps = [ ":clusters_app" ] } group("default") { - deps = [ ":p6" ] + deps = [ ":psoc6" ] } diff --git a/examples/all-clusters-app/p6/README.md b/examples/all-clusters-app/infineon/psoc6/README.md similarity index 75% rename from examples/all-clusters-app/p6/README.md rename to examples/all-clusters-app/infineon/psoc6/README.md index d218c24c97dc46..c28c43d9c3f248 100644 --- a/examples/all-clusters-app/p6/README.md +++ b/examples/all-clusters-app/infineon/psoc6/README.md @@ -1,10 +1,10 @@ -#CHIP P6 All Clusters Example +#CHIP PSoC6 All Clusters Example An example showing the use of Matter on the Infineon CY8CKIT-062S2-43012 board.
-- [Matter P6 All Clusters Example](#chip-p6-clusters-example) +- [Matter PSoC6 All Clusters Example](#chip-psoc6-clusters-example) - [Introduction](#introduction) - [Building](#building) - [Flashing the Application](#flashing-the-application) @@ -20,13 +20,13 @@ An example showing the use of Matter on the Infineon CY8CKIT-062S2-43012 board. ## Introduction -The P6 clusters example provides a baseline demonstration of a Cluster control -device, built using Matter and the Infineon Modustoolbox SDK. It can be +The PSoC6 clusters example provides a baseline demonstration of a Cluster +control device, built using Matter and the Infineon Modustoolbox SDK. It can be controlled by Matter controller over Wi-Fi network. -The P6 device can be commissioned over Bluetooth Low Energy where the device and -the Matter controller will exchange security information with the Rendezvous -procedure. Wi-Fi Network credentials are then provided to the P6 device which +The PSoC6 device can be commissioned over Bluetooth Low Energy where the device +and the Matter controller will exchange security information with the Rendezvous +procedure. Wi-Fi Network credentials are then provided to the PSoC6 device which will then join the network. @@ -36,8 +36,8 @@ will then join the network. - [Modustoolbox Software](https://www.cypress.com/products/modustoolbox) Refer to `integrations/docker/images/chip-build-infineon/Dockerfile` or - `scripts/examples/gn_p6_example.sh` for downloading the Software and related - tools. + `scripts/examples/gn_psoc6_example.sh` for downloading the Software and + related tools. - Install some additional tools (likely already present for Matter developers): @@ -54,7 +54,7 @@ will then join the network. * Build the example application: $ source scripts/activate.sh - $ scripts/build/build_examples.py --no-log-timestamps --target 'infineon-p6-all-clusters' build + $ scripts/build/build_examples.py --no-log-timestamps --target 'infineon-psoc6-all-clusters' build - To delete generated executable, libraries and object files use: @@ -72,7 +72,7 @@ will then join the network. - On the command line: $ cd ~/connectedhomeip - $ python3 out/infineon-p6-all-clusters/chip-p6-clusters-example.flash.py + $ python3 out/infineon-psoc6-all-clusters/chip-psoc6-clusters-example.flash.py @@ -84,7 +84,7 @@ Commissioning can be carried out using BLE. ### Setting up Chip tool -Once P6 is up and running, we need to set up chip-tool on Raspberry Pi 4 to +Once PSoC6 is up and running, we need to set up chip-tool on Raspberry Pi 4 to perform commissioning and cluster control. - Set up python controller. @@ -125,6 +125,6 @@ commands. These power cycle the BlueTooth hardware and disable BR/EDR mode. ## OTA Software Update -For the description of Software Update process with infineon P6 example +For the description of Software Update process with infineon PSoC6 example applications see -[Infineon P6 OTA Software Update](../../../docs/guides/infineon_p6_software_update.md) +[Infineon PSoC6 OTA Software Update](../../../../docs/guides/infineon_psoc6_software_update.md) diff --git a/examples/all-clusters-app/p6/args.gni b/examples/all-clusters-app/infineon/psoc6/args.gni similarity index 89% rename from examples/all-clusters-app/p6/args.gni rename to examples/all-clusters-app/infineon/psoc6/args.gni index 2a93385cf36bd6..ce7a2ab93e794d 100644 --- a/examples/all-clusters-app/p6/args.gni +++ b/examples/all-clusters-app/infineon/psoc6/args.gni @@ -14,7 +14,7 @@ import("//build_overrides/chip.gni") import("//build_overrides/pigweed.gni") -import("${chip_root}/src/platform/P6/args.gni") +import("${chip_root}/src/platform/Infineon/PSOC6/args.gni") -p6_target_project = +psoc6_target_project = get_label_info(":all_clusters_app_sdk_sources", "label_no_toolchain") diff --git a/examples/all-clusters-app/infineon/psoc6/build_overrides b/examples/all-clusters-app/infineon/psoc6/build_overrides new file mode 120000 index 00000000000000..ee19c065d619a2 --- /dev/null +++ b/examples/all-clusters-app/infineon/psoc6/build_overrides @@ -0,0 +1 @@ +../../../build_overrides/ \ No newline at end of file diff --git a/examples/all-clusters-app/p6/include/AppConfig.h b/examples/all-clusters-app/infineon/psoc6/include/AppConfig.h similarity index 100% rename from examples/all-clusters-app/p6/include/AppConfig.h rename to examples/all-clusters-app/infineon/psoc6/include/AppConfig.h diff --git a/examples/all-clusters-app/p6/include/AppEvent.h b/examples/all-clusters-app/infineon/psoc6/include/AppEvent.h similarity index 100% rename from examples/all-clusters-app/p6/include/AppEvent.h rename to examples/all-clusters-app/infineon/psoc6/include/AppEvent.h diff --git a/examples/all-clusters-app/p6/include/AppTask.h b/examples/all-clusters-app/infineon/psoc6/include/AppTask.h similarity index 100% rename from examples/all-clusters-app/p6/include/AppTask.h rename to examples/all-clusters-app/infineon/psoc6/include/AppTask.h diff --git a/examples/all-clusters-app/p6/include/ButtonHandler.h b/examples/all-clusters-app/infineon/psoc6/include/ButtonHandler.h similarity index 100% rename from examples/all-clusters-app/p6/include/ButtonHandler.h rename to examples/all-clusters-app/infineon/psoc6/include/ButtonHandler.h diff --git a/examples/all-clusters-app/p6/include/CHIPProjectConfig.h b/examples/all-clusters-app/infineon/psoc6/include/CHIPProjectConfig.h similarity index 100% rename from examples/all-clusters-app/p6/include/CHIPProjectConfig.h rename to examples/all-clusters-app/infineon/psoc6/include/CHIPProjectConfig.h diff --git a/examples/all-clusters-app/p6/include/ClusterManager.h b/examples/all-clusters-app/infineon/psoc6/include/ClusterManager.h similarity index 100% rename from examples/all-clusters-app/p6/include/ClusterManager.h rename to examples/all-clusters-app/infineon/psoc6/include/ClusterManager.h diff --git a/examples/all-clusters-app/p6/src/AppTask.cpp b/examples/all-clusters-app/infineon/psoc6/src/AppTask.cpp similarity index 99% rename from examples/all-clusters-app/p6/src/AppTask.cpp rename to examples/all-clusters-app/infineon/psoc6/src/AppTask.cpp index 615660976db3ef..4e0d1c8cf731e8 100644 --- a/examples/all-clusters-app/p6/src/AppTask.cpp +++ b/examples/all-clusters-app/infineon/psoc6/src/AppTask.cpp @@ -42,7 +42,7 @@ #include #include -#include +#include /* OTA related includes */ #if CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR @@ -50,7 +50,7 @@ #include #include #include -#include +#include using chip::BDXDownloader; using chip::CharSpan; diff --git a/examples/all-clusters-app/p6/src/ButtonHandler.cpp b/examples/all-clusters-app/infineon/psoc6/src/ButtonHandler.cpp similarity index 100% rename from examples/all-clusters-app/p6/src/ButtonHandler.cpp rename to examples/all-clusters-app/infineon/psoc6/src/ButtonHandler.cpp diff --git a/examples/all-clusters-app/p6/src/ClusterManager.cpp b/examples/all-clusters-app/infineon/psoc6/src/ClusterManager.cpp similarity index 100% rename from examples/all-clusters-app/p6/src/ClusterManager.cpp rename to examples/all-clusters-app/infineon/psoc6/src/ClusterManager.cpp diff --git a/examples/all-clusters-app/p6/src/ZclCallbacks.cpp b/examples/all-clusters-app/infineon/psoc6/src/ZclCallbacks.cpp similarity index 100% rename from examples/all-clusters-app/p6/src/ZclCallbacks.cpp rename to examples/all-clusters-app/infineon/psoc6/src/ZclCallbacks.cpp diff --git a/examples/all-clusters-app/p6/src/main.cpp b/examples/all-clusters-app/infineon/psoc6/src/main.cpp similarity index 99% rename from examples/all-clusters-app/p6/src/main.cpp rename to examples/all-clusters-app/infineon/psoc6/src/main.cpp index 7f38b516b93fe1..84b1961f9a881f 100644 --- a/examples/all-clusters-app/p6/src/main.cpp +++ b/examples/all-clusters-app/infineon/psoc6/src/main.cpp @@ -36,7 +36,7 @@ #include "AppConfig.h" #include "cyhal_wdt.h" -#include "init_p6Platform.h" +#include "init_psoc6Platform.h" #include #ifdef HEAP_MONITORING diff --git a/examples/all-clusters-app/infineon/psoc6/third_party/connectedhomeip b/examples/all-clusters-app/infineon/psoc6/third_party/connectedhomeip new file mode 120000 index 00000000000000..3efed95be5dbe9 --- /dev/null +++ b/examples/all-clusters-app/infineon/psoc6/third_party/connectedhomeip @@ -0,0 +1 @@ +../../../../../ \ No newline at end of file diff --git a/examples/all-clusters-app/p6/build_overrides b/examples/all-clusters-app/p6/build_overrides deleted file mode 120000 index 194ee0b812dc3d..00000000000000 --- a/examples/all-clusters-app/p6/build_overrides +++ /dev/null @@ -1 +0,0 @@ -../../build_overrides/ \ No newline at end of file diff --git a/examples/all-clusters-app/p6/third_party/connectedhomeip b/examples/all-clusters-app/p6/third_party/connectedhomeip deleted file mode 120000 index 11a54ed360106c..00000000000000 --- a/examples/all-clusters-app/p6/third_party/connectedhomeip +++ /dev/null @@ -1 +0,0 @@ -../../../../ \ No newline at end of file diff --git a/examples/all-clusters-minimal-app/p6/.gn b/examples/all-clusters-minimal-app/infineon/psoc6/.gn similarity index 100% rename from examples/all-clusters-minimal-app/p6/.gn rename to examples/all-clusters-minimal-app/infineon/psoc6/.gn diff --git a/examples/all-clusters-minimal-app/p6/BUILD.gn b/examples/all-clusters-minimal-app/infineon/psoc6/BUILD.gn similarity index 78% rename from examples/all-clusters-minimal-app/p6/BUILD.gn rename to examples/all-clusters-minimal-app/infineon/psoc6/BUILD.gn index 53d303ce5f4ecb..2b90698856083a 100644 --- a/examples/all-clusters-minimal-app/p6/BUILD.gn +++ b/examples/all-clusters-minimal-app/infineon/psoc6/BUILD.gn @@ -14,17 +14,18 @@ import("//build_overrides/build.gni") import("//build_overrides/chip.gni") -import("//build_overrides/p6.gni") +import("//build_overrides/psoc6.gni") import("${build_root}/config/defaults.gni") import("${chip_root}/src/platform/device.gni") -import("${p6_sdk_build_root}/p6_executable.gni") -import("${p6_sdk_build_root}/p6_sdk.gni") +import("${psoc6_sdk_build_root}/psoc6_executable.gni") +import("${psoc6_sdk_build_root}/psoc6_sdk.gni") assert(current_os == "freertos") -p6_project_dir = "${chip_root}/examples/all-clusters-minimal-app/p6" -examples_plat_dir = "${chip_root}/examples/platform/p6" +psoc6_project_dir = + "${chip_root}/examples/all-clusters-minimal-app/infineon/psoc6" +examples_plat_dir = "${chip_root}/examples/platform/infineon/psoc6" declare_args() { # Dump memory usage at link time. @@ -40,8 +41,8 @@ declare_args() { build_update_image = false } -config("p6_ota_config") { - linker_script = "${p6_sdk_root}/ota/cy8c6xxa_cm4_dual_ota_int.ld" +config("psoc6_ota_config") { + linker_script = "${psoc6_sdk_root}/ota/cy8c6xxa_cm4_dual_ota_int.ld" ldflags = [ "-T" + rebase_path(linker_script, root_build_dir) ] @@ -78,38 +79,39 @@ config("p6_ota_config") { } } -p6_sdk_sources("all_clusters_app_sdk_sources") { +psoc6_sdk_sources("all_clusters_app_sdk_sources") { include_dirs = [ - "${chip_root}/src/platform/P6", - "${p6_project_dir}/include", + "${chip_root}/src/platform/PSOC6", + "${psoc6_project_dir}/include", "${examples_plat_dir}", ] defines = [ - "BOARD_ID=${p6_board}", + "BOARD_ID=${psoc6_board}", "P6_LOG_ENABLED=1", "CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE=${setup_pin_code}", ] - sources = [ "${p6_project_dir}/include/CHIPProjectConfig.h" ] + sources = [ "${psoc6_project_dir}/include/CHIPProjectConfig.h" ] - public_configs = [ "${chip_root}/third_party/p6:p6_sdk_config" ] + public_configs = + [ "${chip_root}/third_party/infineon/psoc6:psoc6_sdk_config" ] if (chip_enable_ota_requestor) { - public_configs += [ ":p6_ota_config" ] + public_configs += [ ":psoc6_ota_config" ] } } -p6_executable("clusters_minimal_app") { +psoc6_executable("clusters_minimal_app") { include_dirs = [] defines = [] - output_name = "chip-p6-clusters-minimal-example.out" + output_name = "chip-psoc6-clusters-minimal-example.out" sources = [ "${chip_root}/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/static-supported-modes-manager.cpp", "${examples_plat_dir}/LEDWidget.cpp", - "${examples_plat_dir}/init_p6Platform.cpp", + "${examples_plat_dir}/init_psoc6Platform.cpp", "src/AppTask.cpp", "src/ButtonHandler.cpp", "src/ClusterManager.cpp", @@ -129,7 +131,7 @@ p6_executable("clusters_minimal_app") { include_dirs += [ "include", "${examples_plat_dir}", - "${p6_project_dir}/include", + "${psoc6_project_dir}/include", "${chip_root}/examples/all-clusters-app/all-clusters-common/include", ] @@ -150,10 +152,10 @@ p6_executable("clusters_minimal_app") { output_dir = root_out_dir } -group("p6") { +group("psoc6") { deps = [ ":clusters_minimal_app" ] } group("default") { - deps = [ ":p6" ] + deps = [ ":psoc6" ] } diff --git a/examples/all-clusters-minimal-app/p6/README.md b/examples/all-clusters-minimal-app/infineon/psoc6/README.md similarity index 75% rename from examples/all-clusters-minimal-app/p6/README.md rename to examples/all-clusters-minimal-app/infineon/psoc6/README.md index 730891ccef53a1..1f7a40ef9b28ac 100644 --- a/examples/all-clusters-minimal-app/p6/README.md +++ b/examples/all-clusters-minimal-app/infineon/psoc6/README.md @@ -1,10 +1,10 @@ -#CHIP P6 All Clusters Example +#CHIP PSoC6 All Clusters Example An example showing the use of Matter on the Infineon CY8CKIT-062S2-43012 board.
-- [Matter P6 All Clusters Example](#chip-p6-clusters-example) +- [Matter PSoC6 All Clusters Example](#chip-psoc6-clusters-example) - [Introduction](#introduction) - [Building](#building) - [Flashing the Application](#flashing-the-application) @@ -20,13 +20,13 @@ An example showing the use of Matter on the Infineon CY8CKIT-062S2-43012 board. ## Introduction -The P6 clusters example provides a baseline demonstration of a Cluster control -device, built using Matter and the Infineon Modustoolbox SDK. It can be +The PSoC6 clusters example provides a baseline demonstration of a Cluster +control device, built using Matter and the Infineon Modustoolbox SDK. It can be controlled by Matter controller over Wi-Fi network. -The P6 device can be commissioned over Bluetooth Low Energy where the device and -the Matter controller will exchange security information with the Rendezvous -procedure. Wi-Fi Network credentials are then provided to the P6 device which +The PSoC6 device can be commissioned over Bluetooth Low Energy where the device +and the Matter controller will exchange security information with the Rendezvous +procedure. Wi-Fi Network credentials are then provided to the PSoC6 device which will then join the network. @@ -36,8 +36,8 @@ will then join the network. - [Modustoolbox Software](https://www.cypress.com/products/modustoolbox) Refer to `integrations/docker/images/chip-build-infineon/Dockerfile` or - `scripts/examples/gn_p6_example.sh` for downloading the Software and related - tools. + `scripts/examples/gn_psoc6_example.sh` for downloading the Software and + related tools. - Install some additional tools (likely already present for Matter developers): @@ -54,7 +54,7 @@ will then join the network. * Build the example application: $ source scripts/activate.sh - $ scripts/build/build_examples.py --no-log-timestamps --target 'infineon-p6-all-clusters-minimal' build + $ scripts/build/build_examples.py --no-log-timestamps --target 'infineon-psoc6-all-clusters-minimal' build - To delete generated executable, libraries and object files use: @@ -72,7 +72,7 @@ will then join the network. - On the command line: $ cd ~/connectedhomeip - $ python3 out/infineon-p6-all-clusters-minimal/chip-p6-clusters-minimal-example.flash.py + $ python3 out/infineon-psoc6-all-clusters-minimal/chip-psoc6-clusters-minimal-example.flash.py @@ -84,7 +84,7 @@ Commissioning can be carried out using BLE. ### Setting up Chip tool -Once P6 is up and running, we need to set up chip-tool on Raspberry Pi 4 to +Once PSoC6 is up and running, we need to set up chip-tool on Raspberry Pi 4 to perform commissioning and cluster control. - Set up python controller. @@ -125,6 +125,6 @@ commands. These power cycle the BlueTooth hardware and disable BR/EDR mode. ## OTA Software Update -For the description of Software Update process with infineon P6 example +For the description of Software Update process with infineon PSoC6 example applications see -[Infineon P6 OTA Software Update](../../../docs/guides/infineon_p6_software_update.md) +[Infineon PSoC6 OTA Software Update](../../../../docs/guides/infineon_psoc6_software_update.md) diff --git a/examples/all-clusters-minimal-app/p6/args.gni b/examples/all-clusters-minimal-app/infineon/psoc6/args.gni similarity index 89% rename from examples/all-clusters-minimal-app/p6/args.gni rename to examples/all-clusters-minimal-app/infineon/psoc6/args.gni index 2a93385cf36bd6..ce7a2ab93e794d 100644 --- a/examples/all-clusters-minimal-app/p6/args.gni +++ b/examples/all-clusters-minimal-app/infineon/psoc6/args.gni @@ -14,7 +14,7 @@ import("//build_overrides/chip.gni") import("//build_overrides/pigweed.gni") -import("${chip_root}/src/platform/P6/args.gni") +import("${chip_root}/src/platform/Infineon/PSOC6/args.gni") -p6_target_project = +psoc6_target_project = get_label_info(":all_clusters_app_sdk_sources", "label_no_toolchain") diff --git a/examples/all-clusters-minimal-app/infineon/psoc6/build_overrides b/examples/all-clusters-minimal-app/infineon/psoc6/build_overrides new file mode 120000 index 00000000000000..ee19c065d619a2 --- /dev/null +++ b/examples/all-clusters-minimal-app/infineon/psoc6/build_overrides @@ -0,0 +1 @@ +../../../build_overrides/ \ No newline at end of file diff --git a/examples/all-clusters-minimal-app/p6/include/AppConfig.h b/examples/all-clusters-minimal-app/infineon/psoc6/include/AppConfig.h similarity index 100% rename from examples/all-clusters-minimal-app/p6/include/AppConfig.h rename to examples/all-clusters-minimal-app/infineon/psoc6/include/AppConfig.h diff --git a/examples/all-clusters-minimal-app/p6/include/AppEvent.h b/examples/all-clusters-minimal-app/infineon/psoc6/include/AppEvent.h similarity index 100% rename from examples/all-clusters-minimal-app/p6/include/AppEvent.h rename to examples/all-clusters-minimal-app/infineon/psoc6/include/AppEvent.h diff --git a/examples/all-clusters-minimal-app/p6/include/AppTask.h b/examples/all-clusters-minimal-app/infineon/psoc6/include/AppTask.h similarity index 100% rename from examples/all-clusters-minimal-app/p6/include/AppTask.h rename to examples/all-clusters-minimal-app/infineon/psoc6/include/AppTask.h diff --git a/examples/all-clusters-minimal-app/p6/include/ButtonHandler.h b/examples/all-clusters-minimal-app/infineon/psoc6/include/ButtonHandler.h similarity index 100% rename from examples/all-clusters-minimal-app/p6/include/ButtonHandler.h rename to examples/all-clusters-minimal-app/infineon/psoc6/include/ButtonHandler.h diff --git a/examples/all-clusters-minimal-app/p6/include/CHIPProjectConfig.h b/examples/all-clusters-minimal-app/infineon/psoc6/include/CHIPProjectConfig.h similarity index 100% rename from examples/all-clusters-minimal-app/p6/include/CHIPProjectConfig.h rename to examples/all-clusters-minimal-app/infineon/psoc6/include/CHIPProjectConfig.h diff --git a/examples/all-clusters-minimal-app/p6/include/ClusterManager.h b/examples/all-clusters-minimal-app/infineon/psoc6/include/ClusterManager.h similarity index 100% rename from examples/all-clusters-minimal-app/p6/include/ClusterManager.h rename to examples/all-clusters-minimal-app/infineon/psoc6/include/ClusterManager.h diff --git a/examples/all-clusters-minimal-app/p6/src/AppTask.cpp b/examples/all-clusters-minimal-app/infineon/psoc6/src/AppTask.cpp similarity index 99% rename from examples/all-clusters-minimal-app/p6/src/AppTask.cpp rename to examples/all-clusters-minimal-app/infineon/psoc6/src/AppTask.cpp index 45a3dfb8af90b7..13eb9e09e01431 100644 --- a/examples/all-clusters-minimal-app/p6/src/AppTask.cpp +++ b/examples/all-clusters-minimal-app/infineon/psoc6/src/AppTask.cpp @@ -42,7 +42,7 @@ #include #include -#include +#include /* OTA related includes */ #if CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR @@ -50,7 +50,7 @@ #include #include #include -#include +#include using chip::BDXDownloader; using chip::CharSpan; diff --git a/examples/all-clusters-minimal-app/p6/src/ButtonHandler.cpp b/examples/all-clusters-minimal-app/infineon/psoc6/src/ButtonHandler.cpp similarity index 100% rename from examples/all-clusters-minimal-app/p6/src/ButtonHandler.cpp rename to examples/all-clusters-minimal-app/infineon/psoc6/src/ButtonHandler.cpp diff --git a/examples/all-clusters-minimal-app/p6/src/ClusterManager.cpp b/examples/all-clusters-minimal-app/infineon/psoc6/src/ClusterManager.cpp similarity index 100% rename from examples/all-clusters-minimal-app/p6/src/ClusterManager.cpp rename to examples/all-clusters-minimal-app/infineon/psoc6/src/ClusterManager.cpp diff --git a/examples/all-clusters-minimal-app/p6/src/ZclCallbacks.cpp b/examples/all-clusters-minimal-app/infineon/psoc6/src/ZclCallbacks.cpp similarity index 100% rename from examples/all-clusters-minimal-app/p6/src/ZclCallbacks.cpp rename to examples/all-clusters-minimal-app/infineon/psoc6/src/ZclCallbacks.cpp diff --git a/examples/all-clusters-minimal-app/p6/src/main.cpp b/examples/all-clusters-minimal-app/infineon/psoc6/src/main.cpp similarity index 96% rename from examples/all-clusters-minimal-app/p6/src/main.cpp rename to examples/all-clusters-minimal-app/infineon/psoc6/src/main.cpp index 7f38b516b93fe1..a7587170607d28 100644 --- a/examples/all-clusters-minimal-app/p6/src/main.cpp +++ b/examples/all-clusters-minimal-app/infineon/psoc6/src/main.cpp @@ -36,7 +36,7 @@ #include "AppConfig.h" #include "cyhal_wdt.h" -#include "init_p6Platform.h" +#include "init_psoc6Platform.h" #include #ifdef HEAP_MONITORING @@ -143,7 +143,7 @@ int main(void) #endif P6_LOG("==================================================\r\n"); - P6_LOG("chip-p6-all-clusters-example starting Version %d\r\n", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION); + P6_LOG("chip-p6-all-clusters-minimal-example starting Version %d\r\n", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION); P6_LOG("==================================================\r\n"); /* Start the FreeRTOS scheduler */ diff --git a/examples/all-clusters-minimal-app/infineon/psoc6/third_party/connectedhomeip b/examples/all-clusters-minimal-app/infineon/psoc6/third_party/connectedhomeip new file mode 120000 index 00000000000000..3efed95be5dbe9 --- /dev/null +++ b/examples/all-clusters-minimal-app/infineon/psoc6/third_party/connectedhomeip @@ -0,0 +1 @@ +../../../../../ \ No newline at end of file diff --git a/examples/all-clusters-minimal-app/p6/build_overrides b/examples/all-clusters-minimal-app/p6/build_overrides deleted file mode 120000 index 194ee0b812dc3d..00000000000000 --- a/examples/all-clusters-minimal-app/p6/build_overrides +++ /dev/null @@ -1 +0,0 @@ -../../build_overrides/ \ No newline at end of file diff --git a/examples/all-clusters-minimal-app/p6/third_party/connectedhomeip b/examples/all-clusters-minimal-app/p6/third_party/connectedhomeip deleted file mode 120000 index 11a54ed360106c..00000000000000 --- a/examples/all-clusters-minimal-app/p6/third_party/connectedhomeip +++ /dev/null @@ -1 +0,0 @@ -../../../../ \ No newline at end of file diff --git a/examples/build_overrides/cyw30739_sdk.gni b/examples/build_overrides/cyw30739_sdk.gni index d2c81de46ba614..d98ac9866b0a4f 100644 --- a/examples/build_overrides/cyw30739_sdk.gni +++ b/examples/build_overrides/cyw30739_sdk.gni @@ -15,5 +15,5 @@ declare_args() { # Root directory for CYW30739 SDK. cyw30739_sdk_build_root = - "//third_party/connectedhomeip/third_party/cyw30739_sdk" + "//third_party/connectedhomeip/third_party/infineon/cyw30739_sdk" } diff --git a/examples/build_overrides/p6.gni b/examples/build_overrides/psoc6.gni similarity index 73% rename from examples/build_overrides/p6.gni rename to examples/build_overrides/psoc6.gni index 91890631da64bf..87d5ca9f2a295f 100644 --- a/examples/build_overrides/p6.gni +++ b/examples/build_overrides/psoc6.gni @@ -13,11 +13,12 @@ # limitations under the License. declare_args() { - # Root directory for P6 SDK. - p6_sdk_build_root = "//third_party/connectedhomeip/third_party/p6" + # Root directory for PSOC6 SDK. + psoc6_sdk_build_root = + "//third_party/connectedhomeip/third_party/infineon/psoc6" } declare_args() { - # Root directory for p6 SDK sources. - p6_sdk_root = "${p6_sdk_build_root}/p6_sdk" + # Root directory for psoc6 SDK sources. + psoc6_sdk_root = "${psoc6_sdk_build_root}/psoc6_sdk" } diff --git a/examples/chef/efr32/BUILD.gn b/examples/chef/efr32/BUILD.gn index efaace05910a0b..c567ae9d8f1cbf 100644 --- a/examples/chef/efr32/BUILD.gn +++ b/examples/chef/efr32/BUILD.gn @@ -207,6 +207,7 @@ efr32_executable("chef_app") { if (chip_enable_openthread) { deps += [ "${chip_root}/third_party/openthread:openthread", + "${chip_root}/third_party/openthread:openthread_device", "${examples_plat_dir}:efr-matter-shell", ] } @@ -246,7 +247,11 @@ efr32_executable("chef_app") { } if (!disable_lcd) { - sources += [ "${examples_plat_dir}/display/lcd.c" ] + sources += [ + "${examples_plat_dir}/display/demo-ui.c", + "${examples_plat_dir}/display/lcd.cpp", + ] + include_dirs += [ "${examples_plat_dir}/display" ] defines += [ "DISPLAY_ENABLED" ] if (show_qr_code) { defines += [ "QR_CODE_ENABLED" ] diff --git a/examples/chip-tool/commands/common/CHIPCommand.cpp b/examples/chip-tool/commands/common/CHIPCommand.cpp index 663ebee8257d61..89dd1d536e4550 100644 --- a/examples/chip-tool/commands/common/CHIPCommand.cpp +++ b/examples/chip-tool/commands/common/CHIPCommand.cpp @@ -358,6 +358,12 @@ CHIP_ERROR CHIPCommand::InitializeCommissioner(std::string key, chip::FabricId f // store the credentials in persistent storage, and // generate when not available in the storage. ReturnLogErrorOnFailure(mCommissionerStorage.Init(key.c_str())); + if (mUseMaxSizedCerts.HasValue()) + { + auto option = CredentialIssuerCommands::CredentialIssuerOptions::kMaximizeCertificateSizes; + mCredIssuerCmds->SetCredentialIssuerOption(option, mUseMaxSizedCerts.Value()); + } + ReturnLogErrorOnFailure(mCredIssuerCmds->InitializeCredentialsIssuer(mCommissionerStorage)); chip::MutableByteSpan nocSpan(noc.Get(), chip::Controller::kMaxCHIPDERCertLength); diff --git a/examples/chip-tool/commands/common/CHIPCommand.h b/examples/chip-tool/commands/common/CHIPCommand.h index 1714928ea1096c..7dd36a7c7d6214 100644 --- a/examples/chip-tool/commands/common/CHIPCommand.h +++ b/examples/chip-tool/commands/common/CHIPCommand.h @@ -70,6 +70,9 @@ class CHIPCommand : public Command "4. The default if not specified is \"alpha\"."); AddArgument("commissioner-nodeid", 0, UINT64_MAX, &mCommissionerNodeId, "The node id to use for chip-tool. If not provided, kTestControllerNodeId (112233, 0x1B669) will be used."); + AddArgument("use-max-sized-certs", 0, 1, &mUseMaxSizedCerts, + "Maximize the size of operational certificates. If not provided or 0 (\"false\"), normally sized operational " + "certificates are generated."); #if CHIP_CONFIG_TRANSPORT_TRACE_ENABLED AddArgument("trace_file", &mTraceFile); AddArgument("trace_log", 0, 1, &mTraceLog); @@ -153,6 +156,7 @@ class CHIPCommand : public Command chip::Optional mCommissionerNodeId; chip::Optional mBleAdapterId; chip::Optional mPaaTrustStorePath; + chip::Optional mUseMaxSizedCerts; // Cached trust store so commands other than the original startup command // can spin up commissioners as needed. diff --git a/examples/chip-tool/commands/common/CredentialIssuerCommands.h b/examples/chip-tool/commands/common/CredentialIssuerCommands.h index 951ef86efceb40..cc04863ee2f8b6 100644 --- a/examples/chip-tool/commands/common/CredentialIssuerCommands.h +++ b/examples/chip-tool/commands/common/CredentialIssuerCommands.h @@ -74,4 +74,23 @@ class CredentialIssuerCommands virtual CHIP_ERROR GenerateControllerNOCChain(chip::NodeId nodeId, chip::FabricId fabricId, const chip::CATValues & cats, chip::Crypto::P256Keypair & keypair, chip::MutableByteSpan & rcac, chip::MutableByteSpan & icac, chip::MutableByteSpan & noc) = 0; + + // All options must start false + enum CredentialIssuerOptions : uint8_t + { + kMaximizeCertificateSizes = 0, // If set, certificate chains will be maximized for testing via padding + }; + + virtual void SetCredentialIssuerOption(CredentialIssuerOptions option, bool isEnabled) + { + // Do nothing + (void) option; + (void) isEnabled; + } + + virtual bool GetCredentialIssuerOption(CredentialIssuerOptions option) + { + // All options always start false + return false; + } }; diff --git a/examples/chip-tool/commands/example/ExampleCredentialIssuerCommands.h b/examples/chip-tool/commands/example/ExampleCredentialIssuerCommands.h index 74646c8b5f10ba..40a2871b19437b 100644 --- a/examples/chip-tool/commands/example/ExampleCredentialIssuerCommands.h +++ b/examples/chip-tool/commands/example/ExampleCredentialIssuerCommands.h @@ -49,6 +49,33 @@ class ExampleCredentialIssuerCommands : public CredentialIssuerCommands return mOpCredsIssuer.GenerateNOCChainAfterValidation(nodeId, fabricId, cats, keypair.Pubkey(), rcac, icac, noc); } + void SetCredentialIssuerOption(CredentialIssuerOptions option, bool isEnabled) override + { + switch (option) + { + case CredentialIssuerOptions::kMaximizeCertificateSizes: + mUsesMaxSizedCerts = isEnabled; + mOpCredsIssuer.SetMaximallyLargeCertsUsed(mUsesMaxSizedCerts); + break; + default: + break; + } + } + + bool GetCredentialIssuerOption(CredentialIssuerOptions option) override + { + switch (option) + { + case CredentialIssuerOptions::kMaximizeCertificateSizes: + return mUsesMaxSizedCerts; + default: + return false; + } + } + +protected: + bool mUsesMaxSizedCerts = false; + private: chip::Controller::ExampleOperationalCredentialsIssuer mOpCredsIssuer; }; diff --git a/examples/common/pigweed/protos/device_service.options b/examples/common/pigweed/protos/device_service.options index b5f9da673ff778..a0798688c38a84 100644 --- a/examples/common/pigweed/protos/device_service.options +++ b/examples/common/pigweed/protos/device_service.options @@ -5,3 +5,4 @@ chip.rpc.PairingInfo.qr_code max_size:256 chip.rpc.PairingInfo.qr_code_url max_size:256 chip.rpc.SpakeInfo.verifier max_size:97 // kSpake2p_VerifierSerialized_Length chip.rpc.SpakeInfo.salt max_size:32 // kSpake2p_Max_PBKDF_Salt_Length +chip.rpc.MetadataForProvider.tlv max_size:512 // length defined in chip spec 11.20.6.7 diff --git a/examples/common/pigweed/protos/device_service.proto b/examples/common/pigweed/protos/device_service.proto index 1c13d7d7281f14..6903e4a9055414 100644 --- a/examples/common/pigweed/protos/device_service.proto +++ b/examples/common/pigweed/protos/device_service.proto @@ -41,10 +41,15 @@ message PairingState { bool pairing_enabled = 1; } +message MetadataForProvider { + bytes tlv = 1; +} + service Device { rpc FactoryReset(pw.protobuf.Empty) returns (pw.protobuf.Empty){} rpc Reboot(pw.protobuf.Empty) returns (pw.protobuf.Empty){} rpc TriggerOta(pw.protobuf.Empty) returns (pw.protobuf.Empty){} + rpc SetOtaMetadataForProvider(MetadataForProvider) returns (pw.protobuf.Empty){} rpc GetDeviceInfo(pw.protobuf.Empty) returns (DeviceInfo){} rpc GetDeviceState(pw.protobuf.Empty) returns (DeviceState){} rpc SetPairingState(PairingState) returns (pw.protobuf.Empty){} diff --git a/examples/common/pigweed/rpc_services/Device.h b/examples/common/pigweed/rpc_services/Device.h index d3d5afd165810d..4a80cb44516236 100644 --- a/examples/common/pigweed/rpc_services/Device.h +++ b/examples/common/pigweed/rpc_services/Device.h @@ -223,7 +223,7 @@ class Device : public pw_rpc::nanopb::Device::Service virtual pw::Status TriggerOta(const pw_protobuf_Empty & request, pw_protobuf_Empty & response) { -#if CONFIG_CHIP_OTA_REQUESTOR +#if CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR chip::DeviceLayer::PlatformMgr().ScheduleWork( [](intptr_t) { chip::OTARequestorInterface * requestor = chip::GetRequestorInstance(); @@ -238,10 +238,33 @@ class Device : public pw_rpc::nanopb::Device::Service }, reinterpret_cast(nullptr)); return pw::OkStatus(); -#else +#else // CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR ChipLogError(AppServer, "Trigger OTA requested, but OTA requestor not compiled in."); return pw::Status::Unimplemented(); -#endif +#endif // CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR + } + + virtual pw::Status SetOtaMetadataForProvider(const chip_rpc_MetadataForProvider & request, pw_protobuf_Empty & response) + { +#if CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR + chip::OTARequestorInterface * requestor = chip::GetRequestorInstance(); + if (requestor == nullptr) + { + ChipLogError(SoftwareUpdate, "Can't get the CASESessionManager"); + return pw::Status::Unavailable(); + } + else if (sizeof(metadataForProviderBuffer) < request.tlv.size) + { + return pw::Status::ResourceExhausted(); + } + memcpy(metadataForProviderBuffer, request.tlv.bytes, request.tlv.size); + DeviceLayer::StackLock lock; + requestor->SetMetadataForProvider(chip::ByteSpan(metadataForProviderBuffer, request.tlv.size)); + return pw::OkStatus(); +#else // CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR + ChipLogError(AppServer, "OTA set metadata for provider requested, but OTA requestor not compiled in."); + return pw::Status::Unimplemented(); +#endif // CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR } virtual pw::Status SetPairingState(const chip_rpc_PairingState & request, pw_protobuf_Empty & response) @@ -415,6 +438,10 @@ class Device : public pw_rpc::nanopb::Device::Service } private: +#if CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR + static constexpr size_t kMaxMetadataForProviderLength = 512; // length defined in chip spec 11.20.6.7 + uint8_t metadataForProviderBuffer[kMaxMetadataForProviderLength]; +#endif // CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR Internal::CommissionableDataProviderRpcWrapper mCommissionableDataProvider; }; diff --git a/examples/light-switch-app/efr32/BUILD.gn b/examples/light-switch-app/efr32/BUILD.gn index 026dc46d13195c..e2705abdedcb65 100644 --- a/examples/light-switch-app/efr32/BUILD.gn +++ b/examples/light-switch-app/efr32/BUILD.gn @@ -200,6 +200,7 @@ efr32_executable("light_switch_app") { if (chip_enable_openthread) { deps += [ "${chip_root}/third_party/openthread:openthread", + "${chip_root}/third_party/openthread:openthread_device", "${examples_plat_dir}:efr-matter-shell", ] } @@ -253,8 +254,15 @@ efr32_executable("light_switch_app") { } if (!disable_lcd) { - sources += [ "${examples_plat_dir}/display/lcd.c" ] - defines += [ "DISPLAY_ENABLED" ] + sources += [ + "${examples_plat_dir}/display/demo-ui.c", + "${examples_plat_dir}/display/lcd.cpp", + ] + include_dirs += [ "${examples_plat_dir}/display" ] + defines += [ + "DISPLAY_ENABLED", + "IS_DEMO_SWITCH=1", + ] if (show_qr_code) { defines += [ "QR_CODE_ENABLED" ] deps += [ "${chip_root}/examples/common/QRCode" ] diff --git a/examples/light-switch-app/efr32/src/AppTask.cpp b/examples/light-switch-app/efr32/src/AppTask.cpp index 29d9e6527ea8e9..83ac3ac8c94ec7 100644 --- a/examples/light-switch-app/efr32/src/AppTask.cpp +++ b/examples/light-switch-app/efr32/src/AppTask.cpp @@ -70,6 +70,8 @@ namespace { EmberAfIdentifyEffectIdentifier sIdentifyEffect = EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_STOP_EFFECT; +bool mCurrentButtonState = false; + /********************************************************** * Identify Callbacks *********************************************************/ @@ -146,6 +148,9 @@ AppTask AppTask::sAppTask; CHIP_ERROR AppTask::Init() { CHIP_ERROR err = CHIP_NO_ERROR; +#ifdef DISPLAY_ENABLED + GetLCD().Init((uint8_t *) "Light Switch"); +#endif err = BaseApplication::Init(&gIdentify); if (err != CHIP_NO_ERROR) @@ -221,9 +226,23 @@ void AppTask::SwitchActionEventHandler(AppEvent * aEvent) if (aEvent->Type == AppEvent::kEventType_Button) { BindingCommandData * data = Platform::New(); - data->commandId = chip::app::Clusters::OnOff::Commands::Toggle::Id; data->clusterId = chip::app::Clusters::OnOff::Id; + if (mCurrentButtonState) + { + mCurrentButtonState = false; + data->commandId = chip::app::Clusters::OnOff::Commands::Off::Id; + } + else + { + data->commandId = chip::app::Clusters::OnOff::Commands::On::Id; + mCurrentButtonState = true; + } + +#ifdef DISPLAY_ENABLED + sAppTask.GetLCD().WriteDemoUI(mCurrentButtonState); +#endif + DeviceLayer::PlatformMgr().ScheduleWork(SwitchWorkerFunction, reinterpret_cast(data)); } } diff --git a/examples/light-switch-app/nrfconnect/CMakeLists.txt b/examples/light-switch-app/nrfconnect/CMakeLists.txt index 865b8262749bb9..3a0084efa79c42 100644 --- a/examples/light-switch-app/nrfconnect/CMakeLists.txt +++ b/examples/light-switch-app/nrfconnect/CMakeLists.txt @@ -60,7 +60,7 @@ target_sources(app PRIVATE main/BindingHandler.cpp ${GEN_DIR}/light-switch-app/zap-generated/callback-stub.cpp ${GEN_DIR}/light-switch-app/zap-generated/IMClusterCommandHandler.cpp - ${NRFCONNECT_COMMON}/util/LEDWidget.cpp + ${NRFCONNECT_COMMON}/util/LEDWidget.cpp) if(CONFIG_CHIP_OTA_REQUESTOR) diff --git a/examples/lighting-app/cyw30739/build_overrides b/examples/lighting-app/cyw30739/build_overrides deleted file mode 120000 index e578e73312ebd1..00000000000000 --- a/examples/lighting-app/cyw30739/build_overrides +++ /dev/null @@ -1 +0,0 @@ -../../build_overrides \ No newline at end of file diff --git a/examples/lighting-app/cyw30739/third_party/connectedhomeip b/examples/lighting-app/cyw30739/third_party/connectedhomeip deleted file mode 120000 index c866b86874994d..00000000000000 --- a/examples/lighting-app/cyw30739/third_party/connectedhomeip +++ /dev/null @@ -1 +0,0 @@ -../../../.. \ No newline at end of file diff --git a/examples/lighting-app/efr32/BUILD.gn b/examples/lighting-app/efr32/BUILD.gn index 81a25554eb9ba2..060b9f67343aa0 100644 --- a/examples/lighting-app/efr32/BUILD.gn +++ b/examples/lighting-app/efr32/BUILD.gn @@ -205,6 +205,7 @@ efr32_executable("lighting_app") { if (chip_enable_openthread) { deps += [ "${chip_root}/third_party/openthread:openthread", + "${chip_root}/third_party/openthread:openthread_device", "${examples_plat_dir}:efr-matter-shell", ] } @@ -253,8 +254,16 @@ efr32_executable("lighting_app") { } if (!disable_lcd) { - sources += [ "${examples_plat_dir}/display/lcd.c" ] - defines += [ "DISPLAY_ENABLED" ] + sources += [ + "${examples_plat_dir}/display/demo-ui.c", + "${examples_plat_dir}/display/lcd.cpp", + ] + + include_dirs += [ "${examples_plat_dir}/display" ] + defines += [ + "DISPLAY_ENABLED", + "IS_DEMO_LIGHT=1", + ] if (show_qr_code) { defines += [ "QR_CODE_ENABLED" ] diff --git a/examples/lighting-app/efr32/src/AppTask.cpp b/examples/lighting-app/efr32/src/AppTask.cpp index d8fe8940ce3434..89963785b8f02b 100644 --- a/examples/lighting-app/efr32/src/AppTask.cpp +++ b/examples/lighting-app/efr32/src/AppTask.cpp @@ -21,12 +21,7 @@ #include "AppConfig.h" #include "AppEvent.h" #include "LEDWidget.h" -#ifdef DISPLAY_ENABLED -#include "lcd.h" -#ifdef QR_CODE_ENABLED -#include "qrcodegen.h" -#endif // QR_CODE_ENABLED -#endif // DISPLAY_ENABLED + #include "sl_simple_led_instances.h" #include #include @@ -132,6 +127,9 @@ AppTask AppTask::sAppTask; CHIP_ERROR AppTask::Init() { CHIP_ERROR err = CHIP_NO_ERROR; +#ifdef DISPLAY_ENABLED + GetLCD().Init((uint8_t *) "Lighting-App"); +#endif err = BaseApplication::Init(&gIdentify); if (err != CHIP_NO_ERROR) @@ -266,16 +264,13 @@ void AppTask::ButtonEventHandler(const sl_button_t * buttonHandle, uint8_t btnAc void AppTask::ActionInitiated(LightingManager::Action_t aAction, int32_t aActor) { // Action initiated, update the light led - if (aAction == LightingManager::ON_ACTION) - { - EFR32_LOG("Turning light ON") - sLightLED.Set(true); - } - else if (aAction == LightingManager::OFF_ACTION) - { - EFR32_LOG("Turning light OFF") - sLightLED.Set(false); - } + bool lightOn = aAction == LightingManager::ON_ACTION; + EFR32_LOG("Turning light %s", (lightOn) ? "On" : "Off") + sLightLED.Set(lightOn); + +#ifdef DISPLAY_ENABLED + sAppTask.GetLCD().WriteDemoUI(lightOn); +#endif if (aActor == AppEvent::kEventType_Button) { diff --git a/examples/lighting-app/cyw30739/.gn b/examples/lighting-app/infineon/cyw30739/.gn similarity index 100% rename from examples/lighting-app/cyw30739/.gn rename to examples/lighting-app/infineon/cyw30739/.gn diff --git a/examples/lighting-app/cyw30739/BUILD.gn b/examples/lighting-app/infineon/cyw30739/BUILD.gn similarity index 93% rename from examples/lighting-app/cyw30739/BUILD.gn rename to examples/lighting-app/infineon/cyw30739/BUILD.gn index 86d7342430b378..be63607b0bf97b 100644 --- a/examples/lighting-app/cyw30739/BUILD.gn +++ b/examples/lighting-app/infineon/cyw30739/BUILD.gn @@ -19,8 +19,8 @@ import("//build_overrides/cyw30739_sdk.gni") import("${cyw30739_sdk_build_root}/cyw30739_executable.gni") import("${cyw30739_sdk_build_root}/cyw30739_sdk.gni") -cyw30739_project_dir = "${chip_root}/examples/lighting-app/cyw30739" -examples_plat_dir = "${chip_root}/examples/platform/cyw30739" +cyw30739_project_dir = "${chip_root}/examples/lighting-app/infineon/cyw30739" +examples_plat_dir = "${chip_root}/examples/platform/infineon/cyw30739" declare_args() { setupPinCode = 20202021 diff --git a/examples/lighting-app/cyw30739/README.md b/examples/lighting-app/infineon/cyw30739/README.md similarity index 93% rename from examples/lighting-app/cyw30739/README.md rename to examples/lighting-app/infineon/cyw30739/README.md index d43e663b5f12e0..72753e2299f942 100644 --- a/examples/lighting-app/cyw30739/README.md +++ b/examples/lighting-app/infineon/cyw30739/README.md @@ -32,7 +32,7 @@ dataset and CASE credentials are then provided. ```bash $ cd ~/connectedhomeip $ git submodule update --init - $ ./scripts/examples/gn_build_example.sh examples/lighting-app/cyw30739 out/lighting-app + $ ./scripts/examples/gn_build_example.sh examples/lighting-app/infineon/cyw30739 out/lighting-app ``` - To delete generated executable, libraries and object files use: @@ -45,7 +45,7 @@ dataset and CASE credentials are then provided. - OR use GN/Ninja directly ```bash - $ cd ~/connectedhomeip/examples/lighting-app/cyw30739 + $ cd ~/connectedhomeip/examples/lighting-app/infineon/cyw30739 $ git submodule update --init $ source third_party/connectedhomeip/scripts/activate.sh $ gn gen out/debug @@ -55,7 +55,7 @@ dataset and CASE credentials are then provided. - To delete generated executable, libraries and object files use: ```bash - $ cd ~/connectedhomeip/examples/lighting-app/cyw30739 + $ cd ~/connectedhomeip/examples/lighting-app/infineon/cyw30739 $ rm -rf out/ ``` @@ -75,7 +75,7 @@ Put the CYW30739 in to the recovery mode before running the flash script. - On the command line: ```bash - $ cd ~/connectedhomeip/examples/lighting-app/cyw30739 + $ cd ~/connectedhomeip/examples/lighting-app/infineon/cyw30739 $ python3 out/debug/chip-cyw30739-lighting-example.flash.py ``` diff --git a/examples/lock-app/cyw30739/args.gni b/examples/lighting-app/infineon/cyw30739/args.gni similarity index 93% rename from examples/lock-app/cyw30739/args.gni rename to examples/lighting-app/infineon/cyw30739/args.gni index 267c1db9b56817..ff653ee769356a 100644 --- a/examples/lock-app/cyw30739/args.gni +++ b/examples/lighting-app/infineon/cyw30739/args.gni @@ -13,7 +13,7 @@ # limitations under the License. import("//build_overrides/chip.gni") -import("${chip_root}/src/platform/CYW30739/args.gni") +import("${chip_root}/src/platform/Infineon/CYW30739/args.gni") cyw30739_sdk_target = get_label_info(":sdk", "label_no_toolchain") diff --git a/examples/lighting-app/infineon/cyw30739/build_overrides b/examples/lighting-app/infineon/cyw30739/build_overrides new file mode 120000 index 00000000000000..ee19c065d619a2 --- /dev/null +++ b/examples/lighting-app/infineon/cyw30739/build_overrides @@ -0,0 +1 @@ +../../../build_overrides/ \ No newline at end of file diff --git a/examples/lighting-app/cyw30739/include/AppShellCommands.h b/examples/lighting-app/infineon/cyw30739/include/AppShellCommands.h similarity index 100% rename from examples/lighting-app/cyw30739/include/AppShellCommands.h rename to examples/lighting-app/infineon/cyw30739/include/AppShellCommands.h diff --git a/examples/lighting-app/cyw30739/include/ButtonHandler.h b/examples/lighting-app/infineon/cyw30739/include/ButtonHandler.h similarity index 100% rename from examples/lighting-app/cyw30739/include/ButtonHandler.h rename to examples/lighting-app/infineon/cyw30739/include/ButtonHandler.h diff --git a/examples/lighting-app/cyw30739/include/CHIPProjectConfig.h b/examples/lighting-app/infineon/cyw30739/include/CHIPProjectConfig.h similarity index 100% rename from examples/lighting-app/cyw30739/include/CHIPProjectConfig.h rename to examples/lighting-app/infineon/cyw30739/include/CHIPProjectConfig.h diff --git a/examples/lighting-app/cyw30739/include/LightingManager.h b/examples/lighting-app/infineon/cyw30739/include/LightingManager.h similarity index 100% rename from examples/lighting-app/cyw30739/include/LightingManager.h rename to examples/lighting-app/infineon/cyw30739/include/LightingManager.h diff --git a/examples/lighting-app/cyw30739/src/AppShellCommands.cpp b/examples/lighting-app/infineon/cyw30739/src/AppShellCommands.cpp similarity index 100% rename from examples/lighting-app/cyw30739/src/AppShellCommands.cpp rename to examples/lighting-app/infineon/cyw30739/src/AppShellCommands.cpp diff --git a/examples/lighting-app/cyw30739/src/ButtonHandler.cpp b/examples/lighting-app/infineon/cyw30739/src/ButtonHandler.cpp similarity index 100% rename from examples/lighting-app/cyw30739/src/ButtonHandler.cpp rename to examples/lighting-app/infineon/cyw30739/src/ButtonHandler.cpp diff --git a/examples/lighting-app/cyw30739/src/LightingManager.cpp b/examples/lighting-app/infineon/cyw30739/src/LightingManager.cpp similarity index 100% rename from examples/lighting-app/cyw30739/src/LightingManager.cpp rename to examples/lighting-app/infineon/cyw30739/src/LightingManager.cpp diff --git a/examples/lighting-app/cyw30739/src/ZclCallbacks.cpp b/examples/lighting-app/infineon/cyw30739/src/ZclCallbacks.cpp similarity index 100% rename from examples/lighting-app/cyw30739/src/ZclCallbacks.cpp rename to examples/lighting-app/infineon/cyw30739/src/ZclCallbacks.cpp diff --git a/examples/lighting-app/cyw30739/src/main.cpp b/examples/lighting-app/infineon/cyw30739/src/main.cpp similarity index 100% rename from examples/lighting-app/cyw30739/src/main.cpp rename to examples/lighting-app/infineon/cyw30739/src/main.cpp diff --git a/examples/lighting-app/cyw30739/static_config.txt b/examples/lighting-app/infineon/cyw30739/static_config.txt similarity index 100% rename from examples/lighting-app/cyw30739/static_config.txt rename to examples/lighting-app/infineon/cyw30739/static_config.txt diff --git a/examples/lighting-app/infineon/cyw30739/third_party/connectedhomeip b/examples/lighting-app/infineon/cyw30739/third_party/connectedhomeip new file mode 120000 index 00000000000000..3efed95be5dbe9 --- /dev/null +++ b/examples/lighting-app/infineon/cyw30739/third_party/connectedhomeip @@ -0,0 +1 @@ +../../../../../ \ No newline at end of file diff --git a/examples/lighting-app/p6/.gn b/examples/lighting-app/infineon/psoc6/.gn similarity index 100% rename from examples/lighting-app/p6/.gn rename to examples/lighting-app/infineon/psoc6/.gn diff --git a/examples/lighting-app/p6/BUILD.gn b/examples/lighting-app/infineon/psoc6/BUILD.gn similarity index 77% rename from examples/lighting-app/p6/BUILD.gn rename to examples/lighting-app/infineon/psoc6/BUILD.gn index 7e6608f45c60d7..08a91b1180728f 100644 --- a/examples/lighting-app/p6/BUILD.gn +++ b/examples/lighting-app/infineon/psoc6/BUILD.gn @@ -14,17 +14,17 @@ import("//build_overrides/build.gni") import("//build_overrides/chip.gni") -import("//build_overrides/p6.gni") +import("//build_overrides/psoc6.gni") import("${build_root}/config/defaults.gni") import("${chip_root}/src/platform/device.gni") -import("${p6_sdk_build_root}/p6_executable.gni") -import("${p6_sdk_build_root}/p6_sdk.gni") +import("${psoc6_sdk_build_root}/psoc6_executable.gni") +import("${psoc6_sdk_build_root}/psoc6_sdk.gni") assert(current_os == "freertos") -p6_project_dir = "${chip_root}/examples/lighting-app/p6" -examples_plat_dir = "${chip_root}/examples/platform/p6" +psoc6_project_dir = "${chip_root}/examples/lighting-app/infineon/psoc6" +examples_plat_dir = "${chip_root}/examples/platform/infineon/psoc6" declare_args() { # Dump memory usage at link time. @@ -40,8 +40,8 @@ declare_args() { build_update_image = false } -config("p6_ota_config") { - linker_script = "${p6_sdk_root}/ota/cy8c6xxa_cm4_dual_ota_int.ld" +config("psoc6_ota_config") { + linker_script = "${psoc6_sdk_root}/ota/cy8c6xxa_cm4_dual_ota_int.ld" ldflags = [ "-T" + rebase_path(linker_script, root_build_dir) ] @@ -78,35 +78,37 @@ config("p6_ota_config") { } } -p6_sdk_sources("lighting_app_sdk_sources") { +psoc6_sdk_sources("lighting_app_sdk_sources") { include_dirs = [ - "${chip_root}/src/platform/P6", - "${p6_project_dir}/include", + "${chip_root}/src/platform/PSOC6", + "${psoc6_project_dir}/include", "${examples_plat_dir}", ] defines = [ - "BOARD_ID=${p6_board}", + "BOARD_ID=${psoc6_board}", "P6_LOG_ENABLED=1", "CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE=${setup_pin_code}", ] - sources = [ "${p6_project_dir}/include/CHIPProjectConfig.h" ] - public_configs = [ "${chip_root}/third_party/p6:p6_sdk_config" ] + sources = [ "${psoc6_project_dir}/include/CHIPProjectConfig.h" ] + + public_configs = + [ "${chip_root}/third_party/infineon/psoc6:psoc6_sdk_config" ] if (chip_enable_ota_requestor) { - public_configs += [ ":p6_ota_config" ] + public_configs += [ ":psoc6_ota_config" ] } } -p6_executable("lighting_app") { +psoc6_executable("lighting_app") { include_dirs = [] defines = [] - output_name = "chip-p6-lighting-example.out" + output_name = "chip-psoc6-lighting-example.out" sources = [ "${examples_plat_dir}/LEDWidget.cpp", - "${examples_plat_dir}/init_p6Platform.cpp", + "${examples_plat_dir}/init_psoc6Platform.cpp", "src/AppTask.cpp", "src/ButtonHandler.cpp", "src/LightingManager.cpp", @@ -126,7 +128,7 @@ p6_executable("lighting_app") { include_dirs += [ "include", "${examples_plat_dir}", - "${p6_project_dir}/include", + "${psoc6_project_dir}/include", ] defines = [] @@ -146,10 +148,10 @@ p6_executable("lighting_app") { output_dir = root_out_dir } -group("p6") { +group("psoc6") { deps = [ ":lighting_app" ] } group("default") { - deps = [ ":p6" ] + deps = [ ":psoc6" ] } diff --git a/examples/lighting-app/p6/README.md b/examples/lighting-app/infineon/psoc6/README.md similarity index 81% rename from examples/lighting-app/p6/README.md rename to examples/lighting-app/infineon/psoc6/README.md index e37894efcafb2d..ea229f0f391029 100644 --- a/examples/lighting-app/p6/README.md +++ b/examples/lighting-app/infineon/psoc6/README.md @@ -1,10 +1,10 @@ -#CHIP P6 Lighting Example +#CHIP PSoC6 Lighting Example An example showing the use of Matter on the Infineon CY8CKIT-062S2-43012 board.
-- [Matter P6 Lighting Example](#chip-p6-Lighting-example) +- [Matter PSoC6 Lighting Example](#chip-psoc6-Lighting-example) - [Introduction](#introduction) - [Building](#building) - [Flashing the Application](#flashing-the-application) @@ -21,13 +21,13 @@ An example showing the use of Matter on the Infineon CY8CKIT-062S2-43012 board. ## Introduction -The P6 lighting example provides a baseline demonstration of a Light control +The PSoC6 lighting example provides a baseline demonstration of a Light control device, built using Matter and the Infineon Modustoolbox SDK. It can be controlled by Matter controller over Wi-Fi network. -The P6 device can be commissioned over Bluetooth Low Energy where the device and -the Matter controller will exchange security information with the Rendezvous -procedure. Wi-Fi Network credentials are then provided to the P6 device which +The PSoC6 device can be commissioned over Bluetooth Low Energy where the device +and the Matter controller will exchange security information with the Rendezvous +procedure. Wi-Fi Network credentials are then provided to the PSoC6 device which will then join the network. @@ -37,8 +37,8 @@ will then join the network. - [Modustoolbox Software](https://www.cypress.com/products/modustoolbox) Refer to `integrations/docker/images/chip-build-infineon/Dockerfile` or - `scripts/examples/gn_p6_example.sh` for downloading the Software and related - tools. + `scripts/examples/gn_psoc6_example.sh` for downloading the Software and + related tools. - Install some additional tools (likely already present for Matter developers): \$ sudo apt install gcc g++ clang ninja-build python @@ -51,7 +51,7 @@ will then join the network. * Build the example application: $ source scripts/activate.sh - $ scripts/build/build_examples.py --no-log-timestamps --target 'infineon-p6-light' build + $ scripts/build/build_examples.py --no-log-timestamps --target 'infineon-psoc6-light' build - To delete generated executable, libraries and object files use: @@ -69,7 +69,7 @@ will then join the network. - On the command line: $ cd ~/connectedhomeip - $ python3 out/infineon-p6-light/chip-p6-lighting-example.flash.py + $ python3 out/infineon-psoc6-light/chip-psoc6-lighting-example.flash.py @@ -81,7 +81,7 @@ Commissioning can be carried out using BLE. ### Setting up Chip tool -Once P6 is up and running, we need to set up chip-tool on Raspberry Pi 4 to +Once PSoC6 is up and running, we need to set up chip-tool on Raspberry Pi 4 to perform commissioning and cluster control. - Set up python controller. @@ -139,6 +139,6 @@ commands. These power cycle the BlueTooth hardware and disable BR/EDR mode. ## OTA Software Update -For the description of Software Update process with infineon P6 example +For the description of Software Update process with infineon PSoC6 example applications see -[Infineon P6 OTA Software Update](../../../docs/guides/infineon_p6_software_update.md) +[Infineon PSoC6 OTA Software Update](../../../../docs/guides/infineon_psoc6_software_update.md) diff --git a/examples/lighting-app/p6/args.gni b/examples/lighting-app/infineon/psoc6/args.gni similarity index 89% rename from examples/lighting-app/p6/args.gni rename to examples/lighting-app/infineon/psoc6/args.gni index f239efee01e5da..9ca701ab363c9f 100644 --- a/examples/lighting-app/p6/args.gni +++ b/examples/lighting-app/infineon/psoc6/args.gni @@ -14,7 +14,7 @@ import("//build_overrides/chip.gni") import("//build_overrides/pigweed.gni") -import("${chip_root}/src/platform/P6/args.gni") +import("${chip_root}/src/platform/Infineon/PSOC6/args.gni") -p6_target_project = +psoc6_target_project = get_label_info(":lighting_app_sdk_sources", "label_no_toolchain") diff --git a/examples/lighting-app/infineon/psoc6/build_overrides b/examples/lighting-app/infineon/psoc6/build_overrides new file mode 120000 index 00000000000000..ee19c065d619a2 --- /dev/null +++ b/examples/lighting-app/infineon/psoc6/build_overrides @@ -0,0 +1 @@ +../../../build_overrides/ \ No newline at end of file diff --git a/examples/lighting-app/p6/include/AppConfig.h b/examples/lighting-app/infineon/psoc6/include/AppConfig.h similarity index 100% rename from examples/lighting-app/p6/include/AppConfig.h rename to examples/lighting-app/infineon/psoc6/include/AppConfig.h diff --git a/examples/lighting-app/p6/include/AppEvent.h b/examples/lighting-app/infineon/psoc6/include/AppEvent.h similarity index 100% rename from examples/lighting-app/p6/include/AppEvent.h rename to examples/lighting-app/infineon/psoc6/include/AppEvent.h diff --git a/examples/lighting-app/p6/include/AppTask.h b/examples/lighting-app/infineon/psoc6/include/AppTask.h similarity index 100% rename from examples/lighting-app/p6/include/AppTask.h rename to examples/lighting-app/infineon/psoc6/include/AppTask.h diff --git a/examples/lighting-app/p6/include/ButtonHandler.h b/examples/lighting-app/infineon/psoc6/include/ButtonHandler.h similarity index 100% rename from examples/lighting-app/p6/include/ButtonHandler.h rename to examples/lighting-app/infineon/psoc6/include/ButtonHandler.h diff --git a/examples/lighting-app/p6/include/CHIPProjectConfig.h b/examples/lighting-app/infineon/psoc6/include/CHIPProjectConfig.h similarity index 100% rename from examples/lighting-app/p6/include/CHIPProjectConfig.h rename to examples/lighting-app/infineon/psoc6/include/CHIPProjectConfig.h diff --git a/examples/lighting-app/p6/include/LightingManager.h b/examples/lighting-app/infineon/psoc6/include/LightingManager.h similarity index 100% rename from examples/lighting-app/p6/include/LightingManager.h rename to examples/lighting-app/infineon/psoc6/include/LightingManager.h diff --git a/examples/lighting-app/p6/src/AppTask.cpp b/examples/lighting-app/infineon/psoc6/src/AppTask.cpp similarity index 99% rename from examples/lighting-app/p6/src/AppTask.cpp rename to examples/lighting-app/infineon/psoc6/src/AppTask.cpp index 08f9b76a1a3f8f..2ee2baf54bcde8 100644 --- a/examples/lighting-app/p6/src/AppTask.cpp +++ b/examples/lighting-app/infineon/psoc6/src/AppTask.cpp @@ -40,7 +40,7 @@ #include #include -#include +#include /* OTA related includes */ #if CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR @@ -48,7 +48,7 @@ #include #include #include -#include +#include using chip::BDXDownloader; using chip::CharSpan; diff --git a/examples/lighting-app/p6/src/ButtonHandler.cpp b/examples/lighting-app/infineon/psoc6/src/ButtonHandler.cpp similarity index 100% rename from examples/lighting-app/p6/src/ButtonHandler.cpp rename to examples/lighting-app/infineon/psoc6/src/ButtonHandler.cpp diff --git a/examples/lighting-app/p6/src/LightingManager.cpp b/examples/lighting-app/infineon/psoc6/src/LightingManager.cpp similarity index 100% rename from examples/lighting-app/p6/src/LightingManager.cpp rename to examples/lighting-app/infineon/psoc6/src/LightingManager.cpp diff --git a/examples/lighting-app/p6/src/ZclCallbacks.cpp b/examples/lighting-app/infineon/psoc6/src/ZclCallbacks.cpp similarity index 100% rename from examples/lighting-app/p6/src/ZclCallbacks.cpp rename to examples/lighting-app/infineon/psoc6/src/ZclCallbacks.cpp diff --git a/examples/lighting-app/p6/src/main.cpp b/examples/lighting-app/infineon/psoc6/src/main.cpp similarity index 99% rename from examples/lighting-app/p6/src/main.cpp rename to examples/lighting-app/infineon/psoc6/src/main.cpp index 9c5daa77856b60..a2dcdae1cc63f1 100644 --- a/examples/lighting-app/p6/src/main.cpp +++ b/examples/lighting-app/infineon/psoc6/src/main.cpp @@ -35,7 +35,7 @@ #include "AppConfig.h" #include "cyhal_wdt.h" -#include "init_p6Platform.h" +#include "init_psoc6Platform.h" #include #ifdef HEAP_MONITORING diff --git a/examples/lighting-app/infineon/psoc6/third_party/connectedhomeip b/examples/lighting-app/infineon/psoc6/third_party/connectedhomeip new file mode 120000 index 00000000000000..3efed95be5dbe9 --- /dev/null +++ b/examples/lighting-app/infineon/psoc6/third_party/connectedhomeip @@ -0,0 +1 @@ +../../../../../ \ No newline at end of file diff --git a/examples/lighting-app/p6/build_overrides b/examples/lighting-app/p6/build_overrides deleted file mode 120000 index e578e73312ebd1..00000000000000 --- a/examples/lighting-app/p6/build_overrides +++ /dev/null @@ -1 +0,0 @@ -../../build_overrides \ No newline at end of file diff --git a/examples/lighting-app/p6/third_party/connectedhomeip b/examples/lighting-app/p6/third_party/connectedhomeip deleted file mode 120000 index c866b86874994d..00000000000000 --- a/examples/lighting-app/p6/third_party/connectedhomeip +++ /dev/null @@ -1 +0,0 @@ -../../../.. \ No newline at end of file diff --git a/examples/lock-app/cyw30739/build_overrides b/examples/lock-app/cyw30739/build_overrides deleted file mode 120000 index e578e73312ebd1..00000000000000 --- a/examples/lock-app/cyw30739/build_overrides +++ /dev/null @@ -1 +0,0 @@ -../../build_overrides \ No newline at end of file diff --git a/examples/lock-app/cyw30739/third_party/connectedhomeip b/examples/lock-app/cyw30739/third_party/connectedhomeip deleted file mode 120000 index c866b86874994d..00000000000000 --- a/examples/lock-app/cyw30739/third_party/connectedhomeip +++ /dev/null @@ -1 +0,0 @@ -../../../.. \ No newline at end of file diff --git a/examples/lock-app/efr32/BUILD.gn b/examples/lock-app/efr32/BUILD.gn index c98bebfed6d942..2f8f2dc6bf67b4 100644 --- a/examples/lock-app/efr32/BUILD.gn +++ b/examples/lock-app/efr32/BUILD.gn @@ -202,6 +202,7 @@ efr32_executable("lock_app") { if (chip_enable_openthread) { deps += [ "${chip_root}/third_party/openthread:openthread", + "${chip_root}/third_party/openthread:openthread_device", "${examples_plat_dir}:efr-matter-shell", ] } @@ -250,8 +251,15 @@ efr32_executable("lock_app") { } if (!disable_lcd) { - sources += [ "${examples_plat_dir}/display/lcd.c" ] - defines += [ "DISPLAY_ENABLED" ] + sources += [ + "${examples_plat_dir}/display/demo-ui.c", + "${examples_plat_dir}/display/lcd.cpp", + ] + include_dirs += [ "${examples_plat_dir}/display" ] + defines += [ + "DISPLAY_ENABLED", + "IS_DEMO_LOCK=1", + ] if (show_qr_code) { defines += [ "QR_CODE_ENABLED" ] deps += [ "${chip_root}/examples/common/QRCode" ] diff --git a/examples/lock-app/efr32/src/AppTask.cpp b/examples/lock-app/efr32/src/AppTask.cpp index 8b72c5aac4a28f..33a331c752920b 100644 --- a/examples/lock-app/efr32/src/AppTask.cpp +++ b/examples/lock-app/efr32/src/AppTask.cpp @@ -142,6 +142,10 @@ CHIP_ERROR AppTask::Init() { CHIP_ERROR err = CHIP_NO_ERROR; +#ifdef DISPLAY_ENABLED + GetLCD().Init((uint8_t *) "Lock-App", true); +#endif + err = BaseApplication::Init(&gIdentify); if (err != CHIP_NO_ERROR) { @@ -354,16 +358,14 @@ void AppTask::ButtonEventHandler(const sl_button_t * buttonHandle, uint8_t btnAc void AppTask::ActionInitiated(LockManager::Action_t aAction, int32_t aActor) { - // Action initiated, update the light led - if (aAction == LockManager::LOCK_ACTION) + if (aAction == LockManager::UNLOCK_ACTION || aAction == LockManager::LOCK_ACTION) { - EFR32_LOG("Lock Action has been initiated") - sLockLED.Set(false); - } - else if (aAction == LockManager::UNLOCK_ACTION) - { - EFR32_LOG("Unlock Action has been initiated") - sLockLED.Set(true); + bool locked = (aAction == LockManager::LOCK_ACTION); + EFR32_LOG("%s Action has been initiated", (locked) ? "Lock" : "Unlock"); + sLockLED.Set(!locked); +#ifdef DISPLAY_ENABLED + sAppTask.GetLCD().WriteDemoUI(locked); +#endif } if (aActor == AppEvent::kEventType_Button) diff --git a/examples/lock-app/cyw30739/.gn b/examples/lock-app/infineon/cyw30739/.gn similarity index 100% rename from examples/lock-app/cyw30739/.gn rename to examples/lock-app/infineon/cyw30739/.gn diff --git a/examples/lock-app/cyw30739/BUILD.gn b/examples/lock-app/infineon/cyw30739/BUILD.gn similarity index 93% rename from examples/lock-app/cyw30739/BUILD.gn rename to examples/lock-app/infineon/cyw30739/BUILD.gn index 87f0e15e92bff3..8d0cc6333d32d9 100644 --- a/examples/lock-app/cyw30739/BUILD.gn +++ b/examples/lock-app/infineon/cyw30739/BUILD.gn @@ -19,8 +19,8 @@ import("//build_overrides/cyw30739_sdk.gni") import("${cyw30739_sdk_build_root}/cyw30739_executable.gni") import("${cyw30739_sdk_build_root}/cyw30739_sdk.gni") -cyw30739_project_dir = "${chip_root}/examples/lock-app/cyw30739" -examples_plat_dir = "${chip_root}/examples/platform/cyw30739" +cyw30739_project_dir = "${chip_root}/examples/lock-app/infineon/cyw30739" +examples_plat_dir = "${chip_root}/examples/platform/infineon/cyw30739" declare_args() { setupPinCode = 20202021 diff --git a/examples/lock-app/cyw30739/README.md b/examples/lock-app/infineon/cyw30739/README.md similarity index 92% rename from examples/lock-app/cyw30739/README.md rename to examples/lock-app/infineon/cyw30739/README.md index 41a6a23598d3df..12ac917071ce55 100644 --- a/examples/lock-app/cyw30739/README.md +++ b/examples/lock-app/infineon/cyw30739/README.md @@ -32,7 +32,7 @@ dataset and CASE credentials are then provided. ```bash $ cd ~/connectedhomeip $ git submodule update --init - $ ./scripts/examples/gn_build_example.sh examples/lock-app/cyw30739 out/lock-app + $ ./scripts/examples/gn_build_example.sh examples/lock-app/infineon/cyw30739 out/lock-app ``` - To delete generated executable, libraries and object files use: @@ -45,7 +45,7 @@ dataset and CASE credentials are then provided. - OR use GN/Ninja directly ```bash - $ cd ~/connectedhomeip/examples/lock-app/cyw30739 + $ cd ~/connectedhomeip/examples/lock-app/infineon/cyw30739 $ git submodule update --init $ source third_party/connectedhomeip/scripts/activate.sh $ gn gen out/debug @@ -55,7 +55,7 @@ dataset and CASE credentials are then provided. - To delete generated executable, libraries and object files use: ```bash - $ cd ~/connectedhomeip/examples/lock-app/cyw30739 + $ cd ~/connectedhomeip/examples/lock-app/infineon/cyw30739 $ rm -rf out/ ``` @@ -75,7 +75,7 @@ Put the CYW30739 in to the recovery mode before running the flash script. - On the command line: ```bash - $ cd ~/connectedhomeip/examples/lock-app/cyw30739 + $ cd ~/connectedhomeip/examples/lock-app/infineon/cyw30739 $ python3 out/debug/chip-cyw30739-lock-example.flash.py ``` diff --git a/examples/lighting-app/cyw30739/args.gni b/examples/lock-app/infineon/cyw30739/args.gni similarity index 93% rename from examples/lighting-app/cyw30739/args.gni rename to examples/lock-app/infineon/cyw30739/args.gni index 267c1db9b56817..ff653ee769356a 100644 --- a/examples/lighting-app/cyw30739/args.gni +++ b/examples/lock-app/infineon/cyw30739/args.gni @@ -13,7 +13,7 @@ # limitations under the License. import("//build_overrides/chip.gni") -import("${chip_root}/src/platform/CYW30739/args.gni") +import("${chip_root}/src/platform/Infineon/CYW30739/args.gni") cyw30739_sdk_target = get_label_info(":sdk", "label_no_toolchain") diff --git a/examples/lock-app/infineon/cyw30739/build_overrides b/examples/lock-app/infineon/cyw30739/build_overrides new file mode 120000 index 00000000000000..ee19c065d619a2 --- /dev/null +++ b/examples/lock-app/infineon/cyw30739/build_overrides @@ -0,0 +1 @@ +../../../build_overrides/ \ No newline at end of file diff --git a/examples/lock-app/cyw30739/include/AppEvent.h b/examples/lock-app/infineon/cyw30739/include/AppEvent.h similarity index 100% rename from examples/lock-app/cyw30739/include/AppEvent.h rename to examples/lock-app/infineon/cyw30739/include/AppEvent.h diff --git a/examples/lock-app/cyw30739/include/AppShellCommands.h b/examples/lock-app/infineon/cyw30739/include/AppShellCommands.h similarity index 100% rename from examples/lock-app/cyw30739/include/AppShellCommands.h rename to examples/lock-app/infineon/cyw30739/include/AppShellCommands.h diff --git a/examples/lock-app/cyw30739/include/ButtonHandler.h b/examples/lock-app/infineon/cyw30739/include/ButtonHandler.h similarity index 100% rename from examples/lock-app/cyw30739/include/ButtonHandler.h rename to examples/lock-app/infineon/cyw30739/include/ButtonHandler.h diff --git a/examples/lock-app/cyw30739/include/CHIPProjectConfig.h b/examples/lock-app/infineon/cyw30739/include/CHIPProjectConfig.h similarity index 100% rename from examples/lock-app/cyw30739/include/CHIPProjectConfig.h rename to examples/lock-app/infineon/cyw30739/include/CHIPProjectConfig.h diff --git a/examples/lock-app/cyw30739/include/LockManager.h b/examples/lock-app/infineon/cyw30739/include/LockManager.h similarity index 100% rename from examples/lock-app/cyw30739/include/LockManager.h rename to examples/lock-app/infineon/cyw30739/include/LockManager.h diff --git a/examples/lock-app/cyw30739/include/chip_lock.h b/examples/lock-app/infineon/cyw30739/include/chip_lock.h similarity index 100% rename from examples/lock-app/cyw30739/include/chip_lock.h rename to examples/lock-app/infineon/cyw30739/include/chip_lock.h diff --git a/examples/lock-app/cyw30739/src/AppShellCommands.cpp b/examples/lock-app/infineon/cyw30739/src/AppShellCommands.cpp similarity index 100% rename from examples/lock-app/cyw30739/src/AppShellCommands.cpp rename to examples/lock-app/infineon/cyw30739/src/AppShellCommands.cpp diff --git a/examples/lock-app/cyw30739/src/ButtonHandler.cpp b/examples/lock-app/infineon/cyw30739/src/ButtonHandler.cpp similarity index 100% rename from examples/lock-app/cyw30739/src/ButtonHandler.cpp rename to examples/lock-app/infineon/cyw30739/src/ButtonHandler.cpp diff --git a/examples/lock-app/cyw30739/src/LockManager.cpp b/examples/lock-app/infineon/cyw30739/src/LockManager.cpp similarity index 100% rename from examples/lock-app/cyw30739/src/LockManager.cpp rename to examples/lock-app/infineon/cyw30739/src/LockManager.cpp diff --git a/examples/lock-app/cyw30739/src/ZclCallbacks.cpp b/examples/lock-app/infineon/cyw30739/src/ZclCallbacks.cpp similarity index 100% rename from examples/lock-app/cyw30739/src/ZclCallbacks.cpp rename to examples/lock-app/infineon/cyw30739/src/ZclCallbacks.cpp diff --git a/examples/lock-app/cyw30739/src/main.cpp b/examples/lock-app/infineon/cyw30739/src/main.cpp similarity index 100% rename from examples/lock-app/cyw30739/src/main.cpp rename to examples/lock-app/infineon/cyw30739/src/main.cpp diff --git a/examples/lock-app/cyw30739/static_config.txt b/examples/lock-app/infineon/cyw30739/static_config.txt similarity index 100% rename from examples/lock-app/cyw30739/static_config.txt rename to examples/lock-app/infineon/cyw30739/static_config.txt diff --git a/examples/lock-app/infineon/cyw30739/third_party/connectedhomeip b/examples/lock-app/infineon/cyw30739/third_party/connectedhomeip new file mode 120000 index 00000000000000..3efed95be5dbe9 --- /dev/null +++ b/examples/lock-app/infineon/cyw30739/third_party/connectedhomeip @@ -0,0 +1 @@ +../../../../../ \ No newline at end of file diff --git a/examples/lock-app/p6/.gn b/examples/lock-app/infineon/psoc6/.gn similarity index 100% rename from examples/lock-app/p6/.gn rename to examples/lock-app/infineon/psoc6/.gn diff --git a/examples/lock-app/p6/BUILD.gn b/examples/lock-app/infineon/psoc6/BUILD.gn similarity index 75% rename from examples/lock-app/p6/BUILD.gn rename to examples/lock-app/infineon/psoc6/BUILD.gn index b0db8078d672b5..83823b18d0eaff 100644 --- a/examples/lock-app/p6/BUILD.gn +++ b/examples/lock-app/infineon/psoc6/BUILD.gn @@ -14,17 +14,17 @@ import("//build_overrides/build.gni") import("//build_overrides/chip.gni") -import("//build_overrides/p6.gni") +import("//build_overrides/psoc6.gni") import("${build_root}/config/defaults.gni") import("${chip_root}/src/platform/device.gni") -import("${p6_sdk_build_root}/p6_executable.gni") -import("${p6_sdk_build_root}/p6_sdk.gni") +import("${psoc6_sdk_build_root}/psoc6_executable.gni") +import("${psoc6_sdk_build_root}/psoc6_sdk.gni") assert(current_os == "freertos") -p6_project_dir = "${chip_root}/examples/lock-app/p6" -examples_plat_dir = "${chip_root}/examples/platform/p6" +psoc6_project_dir = "${chip_root}/examples/lock-app/infineon/psoc6" +examples_plat_dir = "${chip_root}/examples/platform/infineon/psoc6" declare_args() { # Dump memory usage at link time. @@ -37,8 +37,8 @@ declare_args() { build_update_image = false } -config("p6_ota_config") { - linker_script = "${p6_sdk_root}/ota/cy8c6xxa_cm4_dual_ota_int.ld" +config("psoc6_ota_config") { + linker_script = "${psoc6_sdk_root}/ota/cy8c6xxa_cm4_dual_ota_int.ld" ldflags = [ "-T" + rebase_path(linker_script, root_build_dir) ] @@ -74,32 +74,33 @@ config("p6_ota_config") { defines += [ "CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION=2" ] } } -p6_sdk_sources("lock_app_sdk_sources") { +psoc6_sdk_sources("lock_app_sdk_sources") { include_dirs = [ - "${chip_root}/src/platform/P6", - "${p6_project_dir}/include", + "${chip_root}/src/platform/PSOC6", + "${psoc6_project_dir}/include", "${examples_plat_dir}", ] defines = [ - "BOARD_ID=${p6_board}", + "BOARD_ID=${psoc6_board}", "P6_LOG_ENABLED=1", "CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE=${setup_pin_code}", ] - sources = [ "${p6_project_dir}/include/CHIPProjectConfig.h" ] + sources = [ "${psoc6_project_dir}/include/CHIPProjectConfig.h" ] - public_configs = [ "${chip_root}/third_party/p6:p6_sdk_config" ] + public_configs = + [ "${chip_root}/third_party/infineon/psoc6:psoc6_sdk_config" ] if (chip_enable_ota_requestor) { - public_configs += [ ":p6_ota_config" ] + public_configs += [ ":psoc6_ota_config" ] } } -p6_executable("lock_app") { +psoc6_executable("lock_app") { include_dirs = [] defines = [] - output_name = "chip-p6-lock-example.out" + output_name = "chip-psoc6-lock-example.out" public_deps = [ ":lock_app_sdk_sources", @@ -113,13 +114,13 @@ p6_executable("lock_app") { include_dirs += [ "include", "${examples_plat_dir}", - "${p6_project_dir}/include", + "${psoc6_project_dir}/include", ] sources = [ "${examples_plat_dir}/LEDWidget.cpp", - "${examples_plat_dir}/init_p6Platform.cpp", - "${p6_project_dir}/include/CHIPProjectConfig.h", + "${examples_plat_dir}/init_psoc6Platform.cpp", + "${psoc6_project_dir}/include/CHIPProjectConfig.h", "src/AppTask.cpp", "src/ButtonHandler.cpp", "src/LockManager.cpp", @@ -137,10 +138,10 @@ p6_executable("lock_app") { } } -group("p6") { +group("psoc6") { deps = [ ":lock_app" ] } group("default") { - deps = [ ":p6" ] + deps = [ ":psoc6" ] } diff --git a/examples/lock-app/p6/README.md b/examples/lock-app/infineon/psoc6/README.md similarity index 81% rename from examples/lock-app/p6/README.md rename to examples/lock-app/infineon/psoc6/README.md index 345782204802df..5046ce5c0343c7 100644 --- a/examples/lock-app/p6/README.md +++ b/examples/lock-app/infineon/psoc6/README.md @@ -1,10 +1,10 @@ -# Matter P6 Lock Example +# Matter PSoC6 Lock Example An example showing the use of Matter on the Infineon CY8CKIT-062S2-43012 board.
-- [Matter P6 Lock Example](#chip-p6-lock-example) +- [Matter PSoC6 Lock Example](#chip-psoc6-lock-example) - [Introduction](#introduction) - [Building](#building) - [Flashing the Application](#flashing-the-application) @@ -21,13 +21,13 @@ An example showing the use of Matter on the Infineon CY8CKIT-062S2-43012 board. ## Introduction -The P6 lock example provides a demonstration of a door lock control device, +The PSoC6 lock example provides a demonstration of a door lock control device, built using Matter and the Infineon Modustoolbox SDK. It can be controlled by a Matter controller over Wi-Fi network. -The P6 device can be commissioned over Bluetooth Low Energy where the device and -the Matter controller will exchange security information with the Rendezvous -procedure. Wi-Fi Network credentials are then provided to the P6 device which +The PSoC6 device can be commissioned over Bluetooth Low Energy where the device +and the Matter controller will exchange security information with the Rendezvous +procedure. Wi-Fi Network credentials are then provided to the PSoC6 device which will then join the network. @@ -37,8 +37,8 @@ will then join the network. - [Modustoolbox Software](https://www.cypress.com/products/modustoolbox) Refer to `integrations/docker/images/chip-build-infineon/Dockerfile` or - `scripts/examples/gn_p6_example.sh` for downloading the Software and related - tools. + `scripts/examples/gn_psoc6_example.sh` for downloading the Software and + related tools. - Install some additional tools (likely already present for Matter developers): \$ sudo apt install gcc g++ clang ninja-build python @@ -51,7 +51,7 @@ will then join the network. * Build the example application: $ source scripts/activate.sh - $ scripts/build/build_examples.py --no-log-timestamps --target 'infineon-p6-lock' build + $ scripts/build/build_examples.py --no-log-timestamps --target 'infineon-psoc6-lock' build - To delete generated executable, libraries and object files use: @@ -69,7 +69,7 @@ will then join the network. - On the command line: $ cd ~/connectedhomeip - $ python3 out/infineon-p6-lock/chip-p6-lock-example.flash.py + $ python3 out/infineon-psoc6-lock/chip-psoc6-lock-example.flash.py @@ -81,7 +81,7 @@ Commissioning can be carried out using BLE. ### Setting up Chip tool -Once P6 is up and running, we need to set up chip-tool on Raspberry Pi 4 to +Once PSoC6 is up and running, we need to set up chip-tool on Raspberry Pi 4 to perform commissioning and cluster control. - Set up python controller. @@ -139,6 +139,6 @@ commands. These power cycle the BlueTooth hardware and disable BR/EDR mode. ## OTA Software Update -For the description of Software Update process with infineon P6 example +For the description of Software Update process with infineon PSoC6 example applications see -[Infineon P6 OTA Software Update](../../../docs/guides/infineon_p6_software_update.md) +[Infineon PSoC6 OTA Software Update](../../../docs/guides/infineon_psoc6_software_update.md) diff --git a/examples/lock-app/p6/args.gni b/examples/lock-app/infineon/psoc6/args.gni similarity index 89% rename from examples/lock-app/p6/args.gni rename to examples/lock-app/infineon/psoc6/args.gni index a83cf1abdcb38e..62bdc6d3f6908c 100644 --- a/examples/lock-app/p6/args.gni +++ b/examples/lock-app/infineon/psoc6/args.gni @@ -14,7 +14,7 @@ import("//build_overrides/chip.gni") import("//build_overrides/pigweed.gni") -import("${chip_root}/src/platform/P6/args.gni") +import("${chip_root}/src/platform/Infineon/PSOC6/args.gni") -p6_target_project = +psoc6_target_project = get_label_info(":lock_app_sdk_sources", "label_no_toolchain") diff --git a/examples/lock-app/infineon/psoc6/build_overrides b/examples/lock-app/infineon/psoc6/build_overrides new file mode 120000 index 00000000000000..ee19c065d619a2 --- /dev/null +++ b/examples/lock-app/infineon/psoc6/build_overrides @@ -0,0 +1 @@ +../../../build_overrides/ \ No newline at end of file diff --git a/examples/lock-app/p6/include/AppConfig.h b/examples/lock-app/infineon/psoc6/include/AppConfig.h similarity index 100% rename from examples/lock-app/p6/include/AppConfig.h rename to examples/lock-app/infineon/psoc6/include/AppConfig.h diff --git a/examples/lock-app/p6/include/AppEvent.h b/examples/lock-app/infineon/psoc6/include/AppEvent.h similarity index 100% rename from examples/lock-app/p6/include/AppEvent.h rename to examples/lock-app/infineon/psoc6/include/AppEvent.h diff --git a/examples/lock-app/p6/include/AppTask.h b/examples/lock-app/infineon/psoc6/include/AppTask.h similarity index 100% rename from examples/lock-app/p6/include/AppTask.h rename to examples/lock-app/infineon/psoc6/include/AppTask.h diff --git a/examples/lock-app/p6/include/ButtonHandler.h b/examples/lock-app/infineon/psoc6/include/ButtonHandler.h similarity index 100% rename from examples/lock-app/p6/include/ButtonHandler.h rename to examples/lock-app/infineon/psoc6/include/ButtonHandler.h diff --git a/examples/lock-app/p6/include/CHIPProjectConfig.h b/examples/lock-app/infineon/psoc6/include/CHIPProjectConfig.h similarity index 100% rename from examples/lock-app/p6/include/CHIPProjectConfig.h rename to examples/lock-app/infineon/psoc6/include/CHIPProjectConfig.h diff --git a/examples/lock-app/p6/include/LockManager.h b/examples/lock-app/infineon/psoc6/include/LockManager.h similarity index 100% rename from examples/lock-app/p6/include/LockManager.h rename to examples/lock-app/infineon/psoc6/include/LockManager.h diff --git a/examples/lock-app/p6/src/AppTask.cpp b/examples/lock-app/infineon/psoc6/src/AppTask.cpp similarity index 99% rename from examples/lock-app/p6/src/AppTask.cpp rename to examples/lock-app/infineon/psoc6/src/AppTask.cpp index f93438d47cbbf5..fe4baf6eb3f752 100644 --- a/examples/lock-app/p6/src/AppTask.cpp +++ b/examples/lock-app/infineon/psoc6/src/AppTask.cpp @@ -44,7 +44,7 @@ #include #include -#include +#include #include #include @@ -56,7 +56,7 @@ #include #include #include -#include +#include using chip::BDXDownloader; using chip::CharSpan; diff --git a/examples/lock-app/p6/src/ButtonHandler.cpp b/examples/lock-app/infineon/psoc6/src/ButtonHandler.cpp similarity index 100% rename from examples/lock-app/p6/src/ButtonHandler.cpp rename to examples/lock-app/infineon/psoc6/src/ButtonHandler.cpp diff --git a/examples/lock-app/p6/src/LockManager.cpp b/examples/lock-app/infineon/psoc6/src/LockManager.cpp similarity index 99% rename from examples/lock-app/p6/src/LockManager.cpp rename to examples/lock-app/infineon/psoc6/src/LockManager.cpp index d83b984b789779..059f059f3735eb 100644 --- a/examples/lock-app/p6/src/LockManager.cpp +++ b/examples/lock-app/infineon/psoc6/src/LockManager.cpp @@ -25,7 +25,7 @@ #include #include #include -#include +#include LockManager LockManager::sLock; diff --git a/examples/lock-app/p6/src/ZclCallbacks.cpp b/examples/lock-app/infineon/psoc6/src/ZclCallbacks.cpp similarity index 100% rename from examples/lock-app/p6/src/ZclCallbacks.cpp rename to examples/lock-app/infineon/psoc6/src/ZclCallbacks.cpp diff --git a/examples/lock-app/p6/src/main.cpp b/examples/lock-app/infineon/psoc6/src/main.cpp similarity index 99% rename from examples/lock-app/p6/src/main.cpp rename to examples/lock-app/infineon/psoc6/src/main.cpp index f998b3c4e54f54..8dc525dc8d717f 100644 --- a/examples/lock-app/p6/src/main.cpp +++ b/examples/lock-app/infineon/psoc6/src/main.cpp @@ -35,7 +35,7 @@ #include "AppConfig.h" #include "cyhal_wdt.h" -#include "init_p6Platform.h" +#include "init_psoc6Platform.h" #include #define MAIN_TASK_STACK_SIZE (4096) diff --git a/examples/lock-app/infineon/psoc6/third_party/connectedhomeip b/examples/lock-app/infineon/psoc6/third_party/connectedhomeip new file mode 120000 index 00000000000000..3efed95be5dbe9 --- /dev/null +++ b/examples/lock-app/infineon/psoc6/third_party/connectedhomeip @@ -0,0 +1 @@ +../../../../../ \ No newline at end of file diff --git a/examples/lock-app/p6/build_overrides b/examples/lock-app/p6/build_overrides deleted file mode 120000 index 194ee0b812dc3d..00000000000000 --- a/examples/lock-app/p6/build_overrides +++ /dev/null @@ -1 +0,0 @@ -../../build_overrides/ \ No newline at end of file diff --git a/examples/lock-app/p6/third_party/connectedhomeip b/examples/lock-app/p6/third_party/connectedhomeip deleted file mode 120000 index 11a54ed360106c..00000000000000 --- a/examples/lock-app/p6/third_party/connectedhomeip +++ /dev/null @@ -1 +0,0 @@ -../../../../ \ No newline at end of file diff --git a/examples/ota-requestor-app/cyw30739/build_overrides b/examples/ota-requestor-app/cyw30739/build_overrides deleted file mode 120000 index e578e73312ebd1..00000000000000 --- a/examples/ota-requestor-app/cyw30739/build_overrides +++ /dev/null @@ -1 +0,0 @@ -../../build_overrides \ No newline at end of file diff --git a/examples/ota-requestor-app/cyw30739/third_party/connectedhomeip b/examples/ota-requestor-app/cyw30739/third_party/connectedhomeip deleted file mode 120000 index c866b86874994d..00000000000000 --- a/examples/ota-requestor-app/cyw30739/third_party/connectedhomeip +++ /dev/null @@ -1 +0,0 @@ -../../../.. \ No newline at end of file diff --git a/examples/ota-requestor-app/cyw30739/.gn b/examples/ota-requestor-app/infineon/cyw30739/.gn similarity index 100% rename from examples/ota-requestor-app/cyw30739/.gn rename to examples/ota-requestor-app/infineon/cyw30739/.gn diff --git a/examples/ota-requestor-app/cyw30739/BUILD.gn b/examples/ota-requestor-app/infineon/cyw30739/BUILD.gn similarity index 92% rename from examples/ota-requestor-app/cyw30739/BUILD.gn rename to examples/ota-requestor-app/infineon/cyw30739/BUILD.gn index b1ea6fde6aa876..3701330b0f7113 100644 --- a/examples/ota-requestor-app/cyw30739/BUILD.gn +++ b/examples/ota-requestor-app/infineon/cyw30739/BUILD.gn @@ -19,8 +19,9 @@ import("//build_overrides/cyw30739_sdk.gni") import("${cyw30739_sdk_build_root}/cyw30739_executable.gni") import("${cyw30739_sdk_build_root}/cyw30739_sdk.gni") -cyw30739_project_dir = "${chip_root}/examples/ota-requestor-app/cyw30739" -examples_plat_dir = "${chip_root}/examples/platform/cyw30739" +cyw30739_project_dir = + "${chip_root}/examples/ota-requestor-app/infineon/cyw30739" +examples_plat_dir = "${chip_root}/examples/platform/infineon/cyw30739" declare_args() { setupPinCode = 20202021 diff --git a/examples/ota-requestor-app/cyw30739/README.md b/examples/ota-requestor-app/infineon/cyw30739/README.md similarity index 93% rename from examples/ota-requestor-app/cyw30739/README.md rename to examples/ota-requestor-app/infineon/cyw30739/README.md index 49737cd4f270fc..7ac0990009fbcd 100644 --- a/examples/ota-requestor-app/cyw30739/README.md +++ b/examples/ota-requestor-app/infineon/cyw30739/README.md @@ -33,7 +33,7 @@ dataset and CASE credentials are then provided. ```bash $ cd ~/connectedhomeip $ git submodule update --init - $ ./scripts/examples/gn_build_example.sh examples/ota-requestor-app/cyw30739 out/ota-requestor-app + $ ./scripts/examples/gn_build_example.sh examples/ota-requestor-app/infineon/cyw30739 out/ota-requestor-app ``` - To delete generated executable, libraries and object files use: @@ -46,7 +46,7 @@ dataset and CASE credentials are then provided. - OR use GN/Ninja directly ```bash - $ cd ~/connectedhomeip/examples/ota-requestor-app/cyw30739 + $ cd ~/connectedhomeip/examples/ota-requestor-app/infineon/cyw30739 $ git submodule update --init $ source third_party/connectedhomeip/scripts/activate.sh $ gn gen out/debug @@ -56,7 +56,7 @@ dataset and CASE credentials are then provided. - To delete generated executable, libraries and object files use: ```bash - $ cd ~/connectedhomeip/examples/ota-requestor-app/cyw30739 + $ cd ~/connectedhomeip/examples/ota-requestor-app/infineon/cyw30739 $ rm -rf out/ ``` @@ -76,7 +76,7 @@ Put the CYW30739 in to the recovery mode before running the flash script. - On the command line: ```bash - $ cd ~/connectedhomeip/examples/ota-requestor-app/cyw30739 + $ cd ~/connectedhomeip/examples/ota-requestor-app/infineon/cyw30739 $ python3 out/debug/chip-cyw30739-ota-requestor-example.flash.py ``` diff --git a/examples/ota-requestor-app/cyw30739/args.gni b/examples/ota-requestor-app/infineon/cyw30739/args.gni similarity index 92% rename from examples/ota-requestor-app/cyw30739/args.gni rename to examples/ota-requestor-app/infineon/cyw30739/args.gni index 8eda8fb616b4aa..37d8fa8d701fb9 100644 --- a/examples/ota-requestor-app/cyw30739/args.gni +++ b/examples/ota-requestor-app/infineon/cyw30739/args.gni @@ -13,7 +13,7 @@ # limitations under the License. import("//build_overrides/chip.gni") -import("${chip_root}/src/platform/CYW30739/args.gni") +import("${chip_root}/src/platform/Infineon/CYW30739/args.gni") cyw30739_sdk_target = get_label_info(":sdk", "label_no_toolchain") diff --git a/examples/ota-requestor-app/infineon/cyw30739/build_overrides b/examples/ota-requestor-app/infineon/cyw30739/build_overrides new file mode 120000 index 00000000000000..ee19c065d619a2 --- /dev/null +++ b/examples/ota-requestor-app/infineon/cyw30739/build_overrides @@ -0,0 +1 @@ +../../../build_overrides/ \ No newline at end of file diff --git a/examples/ota-requestor-app/cyw30739/include/CHIPProjectConfig.h b/examples/ota-requestor-app/infineon/cyw30739/include/CHIPProjectConfig.h similarity index 100% rename from examples/ota-requestor-app/cyw30739/include/CHIPProjectConfig.h rename to examples/ota-requestor-app/infineon/cyw30739/include/CHIPProjectConfig.h diff --git a/examples/ota-requestor-app/cyw30739/src/main.cpp b/examples/ota-requestor-app/infineon/cyw30739/src/main.cpp similarity index 100% rename from examples/ota-requestor-app/cyw30739/src/main.cpp rename to examples/ota-requestor-app/infineon/cyw30739/src/main.cpp diff --git a/examples/ota-requestor-app/cyw30739/static_config.txt b/examples/ota-requestor-app/infineon/cyw30739/static_config.txt similarity index 100% rename from examples/ota-requestor-app/cyw30739/static_config.txt rename to examples/ota-requestor-app/infineon/cyw30739/static_config.txt diff --git a/examples/ota-requestor-app/infineon/cyw30739/third_party/connectedhomeip b/examples/ota-requestor-app/infineon/cyw30739/third_party/connectedhomeip new file mode 120000 index 00000000000000..3efed95be5dbe9 --- /dev/null +++ b/examples/ota-requestor-app/infineon/cyw30739/third_party/connectedhomeip @@ -0,0 +1 @@ +../../../../../ \ No newline at end of file diff --git a/examples/persistent-storage/p6/.gn b/examples/persistent-storage/infineon/psoc6/.gn similarity index 100% rename from examples/persistent-storage/p6/.gn rename to examples/persistent-storage/infineon/psoc6/.gn diff --git a/examples/persistent-storage/p6/BUILD.gn b/examples/persistent-storage/infineon/psoc6/BUILD.gn similarity index 63% rename from examples/persistent-storage/p6/BUILD.gn rename to examples/persistent-storage/infineon/psoc6/BUILD.gn index 944a2e07178056..d359f833815136 100644 --- a/examples/persistent-storage/p6/BUILD.gn +++ b/examples/persistent-storage/infineon/psoc6/BUILD.gn @@ -14,43 +14,44 @@ import("//build_overrides/build.gni") import("//build_overrides/chip.gni") -import("//build_overrides/p6.gni") +import("//build_overrides/psoc6.gni") import("${build_root}/config/defaults.gni") -import("${p6_sdk_build_root}/p6_executable.gni") -import("${p6_sdk_build_root}/p6_sdk.gni") +import("${psoc6_sdk_build_root}/psoc6_executable.gni") +import("${psoc6_sdk_build_root}/psoc6_sdk.gni") assert(current_os == "freertos") -p6_project_dir = "${chip_root}/examples/persistent-storage/p6" -examples_plat_dir = "${chip_root}/examples/platform/p6" +psoc6_project_dir = "${chip_root}/examples/persistent-storage/infineon/psoc6" +examples_plat_dir = "${chip_root}/examples/platform/infineon/psoc6" declare_args() { # Dump memory usage at link time. chip_print_memory_usage = false } -p6_sdk_sources("persistent_storage_app_sdk_sources") { +psoc6_sdk_sources("persistent_storage_app_sdk_sources") { include_dirs = [ - "${chip_root}/src/platform/P6", - "${p6_project_dir}/include", + "${chip_root}/src/platform/Infineon/PSOC6", + "${psoc6_project_dir}/include", "${examples_plat_dir}", ] defines = [ - "BOARD_ID=${p6_board}", + "BOARD_ID=${psoc6_board}", "P6_LOG_ENABLED=1", ] - sources = [ "${p6_project_dir}/include/CHIPProjectConfig.h" ] + sources = [ "${psoc6_project_dir}/include/CHIPProjectConfig.h" ] - public_configs = [ "${chip_root}/third_party/p6:p6_sdk_config" ] + public_configs = + [ "${chip_root}/third_party/infineon/psoc6:psoc6_sdk_config" ] } -p6_executable("persistent_storage_app") { +psoc6_executable("persistent_storage_app") { include_dirs = [] defines = [] - output_name = "chip-p6-persistent-storage-example.out" + output_name = "chip-psoc6-persistent-storage-example.out" public_deps = [ ":persistent_storage_app_sdk_sources", @@ -61,14 +62,14 @@ p6_executable("persistent_storage_app") { include_dirs += [ "include", "${examples_plat_dir}", - "${p6_project_dir}/include", + "${psoc6_project_dir}/include", "${chip_root}/examples/persistent-storage", ] sources = [ "${chip_root}/examples/persistent-storage/KeyValueStorageTest.cpp", - "${examples_plat_dir}/init_p6Platform.cpp", - "${p6_project_dir}/include/CHIPProjectConfig.h", + "${examples_plat_dir}/init_psoc6Platform.cpp", + "${psoc6_project_dir}/include/CHIPProjectConfig.h", "main.cpp", ] @@ -82,10 +83,10 @@ p6_executable("persistent_storage_app") { } } -group("p6") { +group("psoc6") { deps = [ ":persistent_storage_app" ] } group("default") { - deps = [ ":p6" ] + deps = [ ":psoc6" ] } diff --git a/examples/persistent-storage/p6/README.md b/examples/persistent-storage/infineon/psoc6/README.md similarity index 65% rename from examples/persistent-storage/p6/README.md rename to examples/persistent-storage/infineon/psoc6/README.md index 8f30ecab6dbc39..19a32c60c85acf 100644 --- a/examples/persistent-storage/p6/README.md +++ b/examples/persistent-storage/infineon/psoc6/README.md @@ -1,12 +1,12 @@ -# CHIP P6 Persistent Storage Example +# CHIP PSoC6 Persistent Storage Example An example testing and demonstrating the key value storage API.
-- [CHIP P6 Persistent Storage Example](#chip-P6-persistent-storage-example) +- [CHIP PSoC6 Persistent Storage Example](#chip-PSoC6-persistent-storage-example) - [Introduction](#introduction) - - [P6](#P6) + - [PSoC6](#PSoC6) - [Building](#building) - [Flashing the Application](#flashing-the-application) @@ -23,12 +23,12 @@ to use the API. In the future this example can be moved into a unit test when available on all platforms. - + -## P6 +## PSoC6 -The P6 platform KVS is fully implemented, the KVS is enabled and configured by -providing a file during the init call. +The Infineon PSoC6 platform KVS is fully implemented, the KVS is enabled and +configured by providing a file during the init call. @@ -38,7 +38,7 @@ providing a file during the init call. $ git submodule update --init $ source third_party/connectedhomeip/scripts/activate.sh - $ ./scripts/examples/gn_p6_example.sh examples/persistent-storage/p6 out/persistent_storage_app_p6 + $ ./scripts/examples/gn_psoc6_example.sh examples/persistent-storage/infineon/psoc6 out/persistent_storage_app_psoc6 @@ -51,4 +51,4 @@ providing a file during the init call. - On the command line: $ cd ~/connectedhomeip - $ python3 out/persistent_storage_app_p6/chip-p6-persistent-storage-example.flash.py + $ python3 out/persistent_storage_app_psoc6/chip-psoc6-persistent-storage-example.flash.py diff --git a/examples/persistent-storage/p6/args.gni b/examples/persistent-storage/infineon/psoc6/args.gni similarity index 89% rename from examples/persistent-storage/p6/args.gni rename to examples/persistent-storage/infineon/psoc6/args.gni index 1c30d812940d3d..0b4443ebd96fcc 100644 --- a/examples/persistent-storage/p6/args.gni +++ b/examples/persistent-storage/infineon/psoc6/args.gni @@ -14,7 +14,7 @@ import("//build_overrides/chip.gni") import("//build_overrides/pigweed.gni") -import("${chip_root}/src/platform/P6/args.gni") +import("${chip_root}/src/platform/Infineon/PSOC6/args.gni") -p6_target_project = +psoc6_target_project = get_label_info(":persistent_storage_app_sdk_sources", "label_no_toolchain") diff --git a/examples/persistent-storage/infineon/psoc6/build_overrides b/examples/persistent-storage/infineon/psoc6/build_overrides new file mode 120000 index 00000000000000..ee19c065d619a2 --- /dev/null +++ b/examples/persistent-storage/infineon/psoc6/build_overrides @@ -0,0 +1 @@ +../../../build_overrides/ \ No newline at end of file diff --git a/examples/persistent-storage/p6/include/AppConfig.h b/examples/persistent-storage/infineon/psoc6/include/AppConfig.h similarity index 100% rename from examples/persistent-storage/p6/include/AppConfig.h rename to examples/persistent-storage/infineon/psoc6/include/AppConfig.h diff --git a/examples/persistent-storage/p6/include/CHIPProjectConfig.h b/examples/persistent-storage/infineon/psoc6/include/CHIPProjectConfig.h similarity index 100% rename from examples/persistent-storage/p6/include/CHIPProjectConfig.h rename to examples/persistent-storage/infineon/psoc6/include/CHIPProjectConfig.h diff --git a/examples/persistent-storage/p6/main.cpp b/examples/persistent-storage/infineon/psoc6/main.cpp similarity index 98% rename from examples/persistent-storage/p6/main.cpp rename to examples/persistent-storage/infineon/psoc6/main.cpp index 03a5132aa73d99..104d63ffea0085 100644 --- a/examples/persistent-storage/p6/main.cpp +++ b/examples/persistent-storage/infineon/psoc6/main.cpp @@ -18,7 +18,7 @@ #include "AppConfig.h" #include "KeyValueStorageTest.h" -#include "init_p6Platform.h" +#include "init_psoc6Platform.h" #include #include #include diff --git a/examples/persistent-storage/infineon/psoc6/third_party/connectedhomeip b/examples/persistent-storage/infineon/psoc6/third_party/connectedhomeip new file mode 120000 index 00000000000000..3efed95be5dbe9 --- /dev/null +++ b/examples/persistent-storage/infineon/psoc6/third_party/connectedhomeip @@ -0,0 +1 @@ +../../../../../ \ No newline at end of file diff --git a/examples/persistent-storage/p6/build_overrides b/examples/persistent-storage/p6/build_overrides deleted file mode 120000 index 194ee0b812dc3d..00000000000000 --- a/examples/persistent-storage/p6/build_overrides +++ /dev/null @@ -1 +0,0 @@ -../../build_overrides/ \ No newline at end of file diff --git a/examples/persistent-storage/p6/third_party/connectedhomeip b/examples/persistent-storage/p6/third_party/connectedhomeip deleted file mode 120000 index c866b86874994d..00000000000000 --- a/examples/persistent-storage/p6/third_party/connectedhomeip +++ /dev/null @@ -1 +0,0 @@ -../../../.. \ No newline at end of file diff --git a/examples/platform/efr32/BaseApplication.cpp b/examples/platform/efr32/BaseApplication.cpp index 47dbb9c001361d..66d8cbc0a4efa5 100644 --- a/examples/platform/efr32/BaseApplication.cpp +++ b/examples/platform/efr32/BaseApplication.cpp @@ -120,6 +120,10 @@ bool mFunctionTimerActive; Identify * gIdentifyptr = nullptr; +#ifdef DISPLAY_ENABLED +SilabsLCD slLCD; +#endif + } // namespace /********************************************************** @@ -214,7 +218,8 @@ CHIP_ERROR BaseApplication::Init(Identify * identifyObj) if (GetQRCode(QRCode, chip::RendezvousInformationFlags(chip::RendezvousInformationFlag::kBLE)) == CHIP_NO_ERROR) { - LCDWriteQRCode((uint8_t *) QRCode.data()); + slLCD.SetQRCode((uint8_t *) QRCode.data(), QRCode.size()); + slLCD.ShowQRCode(true, true); } else { @@ -386,6 +391,11 @@ void BaseApplication::ButtonHandler(AppEvent * aEvent) CancelFunctionTimer(); mFunction = kFunction_NoneSelected; +#ifdef DISPLAY_ENABLED + // TOGGLE QRCode/LCD demo UI + slLCD.ToggleQRCode(); +#endif + #ifdef SL_WIFI if (!ConnectivityMgr().IsWiFiStationProvisioned()) #else @@ -469,6 +479,13 @@ void BaseApplication::LightTimerEventHandler(TimerHandle_t xTimer) LightEventHandler(); } +#ifdef DISPLAY_ENABLED +SilabsLCD & BaseApplication::GetLCD(void) +{ + return slLCD; +} +#endif + void BaseApplication::PostEvent(const AppEvent * aEvent) { if (sAppEventQueue != NULL) diff --git a/examples/platform/efr32/BaseApplication.h b/examples/platform/efr32/BaseApplication.h index 41e2c1dbe64ffd..9c7ef22d8fe7d6 100644 --- a/examples/platform/efr32/BaseApplication.h +++ b/examples/platform/efr32/BaseApplication.h @@ -35,6 +35,14 @@ #include #include +#ifdef DISPLAY_ENABLED +#include "demo-ui.h" +#include "lcd.h" +#ifdef QR_CODE_ENABLED +#include "qrcodegen.h" +#endif // QR_CODE_ENABLED +#endif // DISPLAY_ENABLED + /********************************************************** * Defines *********************************************************/ @@ -73,6 +81,13 @@ class BaseApplication */ static void PostEvent(const AppEvent * event); +#ifdef DISPLAY_ENABLED + /** + * @brief Return LCD object + */ + static SilabsLCD & GetLCD(void); +#endif + /** * @brief Event handler when a button is pressed * Function posts an event for button processing @@ -165,8 +180,7 @@ class BaseApplication static void LightEventHandler(); /********************************************************** - * Private Attributes declaration + * Protected Attributes declaration *********************************************************/ - bool mSyncClusterToButtonAction; }; diff --git a/examples/platform/efr32/FreeRTOSConfig.h b/examples/platform/efr32/FreeRTOSConfig.h index 3408b5667aa9bc..f42179230d6bb0 100644 --- a/examples/platform/efr32/FreeRTOSConfig.h +++ b/examples/platform/efr32/FreeRTOSConfig.h @@ -198,7 +198,7 @@ See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ #ifndef configTOTAL_HEAP_SIZE #ifdef SL_WIFI -#define configTOTAL_HEAP_SIZE ((size_t)(30 * 1024)) +#define configTOTAL_HEAP_SIZE ((size_t)(34 * 1024)) #else #define configTOTAL_HEAP_SIZE ((size_t)(20 * 1024)) #endif diff --git a/examples/platform/efr32/display/demo-ui-bitmaps.h b/examples/platform/efr32/display/demo-ui-bitmaps.h new file mode 100644 index 00000000000000..6f77ce4b733139 --- /dev/null +++ b/examples/platform/efr32/display/demo-ui-bitmaps.h @@ -0,0 +1,326 @@ +/***************************************************************************/ /** + * @file + * @brief User Interface bitmaps for demo. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. + *www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon + *Laboratories Inc. Your use of this software is + *governed by the terms of Silicon Labs Master + *Software License Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. + *This software is distributed to you in Source Code + *format and is governed by the sections of the MSLA + *applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SILABS_DEMO_UI_BITMAPS_H +#define SILABS_DEMO_UI_BITMAPS_H + +#define SILICONLABS_BITMAP_WIDTH 128 +#define SILICONLABS_BITMAP_HEIGHT 45 + +#define ZIGBEE_BITMAP_WIDTH 16 +#define ZIGBEE_BITMAP_HEIGHT 16 + +#define RAIL_BITMAP_WIDTH 16 +#define RAIL_BITMAP_HEIGHT 16 + +#define CONNECT_BITMAP_WIDTH 16 +#define CONNECT_BITMAP_HEIGHT 16 + +#define BLUETOOTH_BITMAP_WIDTH 16 +#define BLUETOOTH_BITMAP_HEIGHT 18 + +#define SILABS_BITMAP \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ + 0xfd, 0xff, 0xff, 0x01, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xff, 0xff, 0x3f, 0x00, \ + 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xfe, \ + 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x1f, 0xf0, 0xff, \ + 0xff, 0xff, 0x1f, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x1f, 0xe0, 0xff, 0xff, 0xff, 0xc3, 0xff, \ + 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0xc0, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0x07, 0x00, 0x00, \ + 0x00, 0x00, 0x00, 0xff, 0xff, 0x07, 0xc0, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, \ + 0xff, 0x01, 0xc0, 0xff, 0xff, 0x07, 0xfc, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x7f, 0x00, 0x80, 0xff, \ + 0xff, 0x01, 0xfe, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x80, 0xff, 0x7f, 0x00, 0xff, 0xff, \ + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x3f, 0x80, 0xff, 0xff, 0xff, 0x00, 0x00, 0xf0, \ + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x0f, 0x80, 0xff, 0xff, 0xff, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x01, \ + 0x00, 0x00, 0xc0, 0xff, 0x03, 0xc0, 0xff, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0xff, \ + 0x01, 0xc0, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xe0, 0xff, 0x00, 0xc0, 0xff, 0xff, \ + 0xff, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xf0, 0x7f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x0f, 0xfc, 0xff, \ + 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0xf8, 0x3f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, \ + 0x0f, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xc0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0xfe, 0x0f, \ + 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xff, 0x07, 0x00, 0x00, 0xf0, 0xff, \ + 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0x1f, 0x80, 0xff, 0x07, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, \ + 0x3f, 0xf8, 0xff, 0xff, 0x1f, 0xc0, 0xff, 0x03, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff, \ + 0x0f, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x3f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0xfc, 0xff, 0x03, \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x07, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x3f, 0x00, \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x83, 0xff, 0xff, 0x01, 0x00, 0xc0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, \ + 0x00, 0xfc, 0xff, 0xff, 0xe1, 0xff, 0xff, 0x03, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, \ + 0xf8, 0xff, 0xff, 0x03, 0x00, 0xf8, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0x03, \ + 0x00, 0xfe, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x01, \ + 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, \ + 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xc0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0xff, 0x3f, 0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ + 0xc0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, 0xff, 0xff, 0xff, \ + 0x1f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff + +#define THREAD_BITMAP_WIDTH 16 +#define THREAD_BITMAP_HEIGHT 18 + +#define THREAD_BITMAP \ + 0x1F, 0xF8, 0x07, 0xE0, 0x03, 0xCE, 0x01, 0x9F, 0x01, 0xB3, 0x00, 0x33, 0xF0, 0x3F, 0xF8, 0x1F, 0x0C, 0x03, 0x0C, 0x03, 0x18, \ + 0x03, 0x11, 0x83, 0x01, 0x83, 0x03, 0xC3, 0x07, 0xE3, 0x1F, 0xFB, 0x7f, 0xff, 0xff, 0xff + +#define WIFI_BITMAP_WIDTH 18 +#define WIFI_BITMAP_HEIGHT 18 + +#define WIFI_BITMAP \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0x01, 0xE0, 0x03, 0x00, 0xC7, 0xFF, 0xB8, 0xFF, 0xF7, 0x07, 0xF8, 0x0F, 0xC0, 0x3F, \ + 0x3F, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0x7F, 0xF8, 0xFF, 0xE1, 0xFF, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F + +#define MATTER_LOGO_WIDTH 18 +#define MATTER_LOGO_HEIGHT 17 + +#define MATTER_LOGO_BITMAP \ + 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xCF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFC, 0x3F, 0x12, 0xFF, 0x01, 0xFE, 0xFF, 0xFF, 0xF3, 0x3F, 0x8F, \ + 0x7F, 0xFC, 0xFC, 0xFC, 0xE3, 0xF1, 0x87, 0x87, 0xC7, 0xDE, 0x88, 0x33, 0xC7, 0xCF, 0xFC, 0xFF, 0xFF, 0x03 + +// APP Logo, boolean only. must be 64x64 +#if IS_DEMO_SWITCH +#define ON_DEMO_BITMAP \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, \ + 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, \ + 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, \ + 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0xC0, 0xFF, 0xFF, 0x03, 0xF8, 0xFF, 0xFF, 0x1F, 0xE0, 0xFF, 0xFF, \ + 0x07, 0xF8, 0xFF, 0xFF, 0x1F, 0xE0, 0xFF, 0xFF, 0x07, 0xF8, 0xFF, 0xFF, 0x1F, 0xE0, 0xFF, 0xFF, 0x07, 0xF8, 0xFF, 0xFF, \ + 0x1F, 0xE0, 0xFF, 0xFF, 0x07, 0xF8, 0xFF, 0xFF, 0x1F, 0xE0, 0xFF, 0xFF, 0x07, 0xF8, 0xFF, 0xFF, 0x1F, 0xE0, 0xFF, 0xFF, \ + 0x07, 0xF8, 0xFF, 0xFF, 0x1F, 0xE0, 0xFF, 0xFF, 0x07, 0xF8, 0xFF, 0xFF, 0x1F, 0xE0, 0xFF, 0xFF, 0x07, 0xF8, 0xFF, 0xFF, \ + 0x1F, 0xC0, 0xFF, 0xFF, 0x03, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, \ + 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, \ + 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, \ + 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, \ + 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, \ + 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, \ + 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, \ + 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, \ + 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, \ + 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, \ + 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, \ + 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, \ + 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, \ + 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, \ + 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, \ + 0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, \ + 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + +#define OFF_DEMO_BITMAP \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, \ + 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, \ + 0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0xF8, 0xFF, 0xFF, 0x1F, 0xFC, 0xFF, 0xFF, 0x3F, 0xF8, 0xFF, 0xFF, 0x1F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0x3C, 0x00, 0x00, 0x3C, 0xFC, 0xFF, 0xFF, 0x3F, 0x3C, 0x00, 0x00, 0x3C, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0x3C, 0x00, 0x00, 0x3C, 0xFC, 0xFF, 0xFF, 0x3F, 0x3C, 0x00, 0x00, 0x3C, 0xFC, 0xFF, 0xFF, 0x3F, 0x3C, 0x00, 0x00, \ + 0x3C, 0xFC, 0xFF, 0xFF, 0x3F, 0x3C, 0x00, 0x00, 0x3C, 0xFC, 0xFF, 0xFF, 0x3F, 0x3C, 0x00, 0x00, 0x3C, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0x3C, 0x00, 0x00, 0x3C, 0xFC, 0xFF, 0xFF, 0x3F, 0x3C, 0x00, 0x00, 0x3C, 0xFC, 0xFF, 0xFF, 0x3F, 0x3C, 0x00, 0x00, \ + 0x3C, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xF8, 0xFF, 0xFF, 0x1F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xF8, 0xFF, 0xFF, 0x1F, 0xFC, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, \ + 0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, \ + 0xFF, 0x01, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF +#elif IS_DEMO_LIGHT +#define ON_DEMO_BITMAP \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, \ + 0x8f, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0x1f, 0xfe, 0x07, 0xe0, \ + 0x7f, 0xf8, 0xff, 0xff, 0x3f, 0xfc, 0x00, 0x00, 0x3f, 0xfc, 0xff, 0xff, 0x7f, 0x3c, 0xe0, 0x07, 0x3c, 0xfe, 0xff, 0xff, \ + 0xff, 0x1f, 0xfe, 0x7f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, \ + 0xe3, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, \ + 0xff, 0xf1, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, \ + 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, \ + 0x7f, 0xfe, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, \ + 0x7f, 0xfc, 0xff, 0x0f, 0x38, 0xfe, 0xff, 0xff, 0x7f, 0x1c, 0xf0, 0x0f, 0x38, 0xfe, 0x03, 0xc0, 0x7f, 0x1c, 0xf0, 0x0f, \ + 0x38, 0xfe, 0x27, 0xe9, 0x7f, 0x1c, 0xf0, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, \ + 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xe7, 0xe7, 0x7f, 0xfc, 0xff, 0xff, 0x7f, 0xfe, 0xef, 0xf7, 0x7f, 0xfe, 0xff, 0xff, \ + 0x7f, 0xfc, 0xef, 0xf7, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xfc, 0xef, 0xf3, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xcf, 0xf3, \ + 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xdf, 0xfb, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xdf, 0xfb, 0x8f, 0xff, 0xff, 0xff, \ + 0xff, 0xe3, 0x9f, 0xf9, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x9f, 0xf9, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x9f, 0xfd, \ + 0xe3, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xbf, 0xfd, 0xf1, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x3f, 0xfc, 0xf8, 0xff, 0xff, 0xff, \ + 0xff, 0x3f, 0x3e, 0x7c, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0x3f, \ + 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x8f, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xc0, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff + +#define OFF_DEMO_BITMAP \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xe0, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0x07, 0xfc, 0xff, 0xff, 0xff, \ + 0xff, 0x1f, 0xfe, 0x7f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, \ + 0xe3, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, \ + 0xff, 0xf1, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, \ + 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, \ + 0x7f, 0xfe, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, \ + 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, \ + 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, \ + 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, \ + 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, \ + 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, \ + 0xff, 0xe3, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, \ + 0xe3, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, \ + 0xff, 0x3f, 0xfe, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0x3f, \ + 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x8f, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xc0, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff +#elif IS_DEMO_LOCK +#define ON_DEMO_BITMAP \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, \ + 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xE0, 0x07, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xF8, 0x1F, 0xF8, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0x0F, 0xFC, 0x3F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFE, 0x7F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFE, 0x7F, \ + 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, \ + 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, \ + 0x00, 0xF8, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, \ + 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, \ + 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, \ + 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, \ + 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x80, 0x01, 0x00, 0xE0, 0xFF, 0xFF, \ + 0x07, 0x00, 0xE0, 0x07, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xF0, 0x0F, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xF8, 0x1F, \ + 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xF8, 0x1F, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xFC, 0x3F, 0x00, 0xE0, 0xFF, 0xFF, \ + 0x07, 0x00, 0xFC, 0x3F, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xF8, 0x1F, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xF8, 0x1F, \ + 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xF0, 0x0F, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xE0, 0x07, 0x00, 0xE0, 0xFF, 0xFF, \ + 0x07, 0x00, 0x80, 0x01, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, \ + 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, \ + 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, \ + 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, \ + 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, \ + 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + +#define OFF_DEMO_BITMAP \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, \ + 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xE0, 0x07, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xF8, 0x1F, 0xF8, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0x0F, 0xFC, 0x3F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFE, 0x7F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFE, 0x7F, \ + 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, \ + 0x00, 0xF8, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, \ + 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, \ + 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, \ + 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, \ + 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x80, 0x01, 0x00, 0xE0, 0xFF, 0xFF, \ + 0x07, 0x00, 0xE0, 0x07, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xF0, 0x0F, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xF8, 0x1F, \ + 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xF8, 0x1F, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xFC, 0x3F, 0x00, 0xE0, 0xFF, 0xFF, \ + 0x07, 0x00, 0xFC, 0x3F, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xF8, 0x1F, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xF8, 0x1F, \ + 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xF0, 0x0F, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xE0, 0x07, 0x00, 0xE0, 0xFF, 0xFF, \ + 0x07, 0x00, 0x80, 0x01, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, \ + 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, \ + 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, \ + 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, \ + 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, \ + 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF +#else // Unknown demo.... +#define ON_DEMO_BITMAP \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0x7F, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, \ + 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0x07, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xF0, 0x0F, \ + 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x1F, 0xF8, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0xF0, \ + 0x0F, 0xFF, 0xFF, 0xFF, 0x7F, 0xE0, 0x07, 0xE0, 0x07, 0xFE, 0xFF, 0xFF, 0x7F, 0xC0, 0x03, 0xC0, 0x03, 0xFE, 0xFF, 0xFF, \ + 0x7F, 0xC0, 0x03, 0xC0, 0x03, 0xFE, 0xFF, 0xFF, 0x3F, 0xC0, 0x03, 0xC0, 0x03, 0xFC, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, \ + 0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, \ + 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, \ + 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, \ + 0x8F, 0x01, 0x80, 0x01, 0x80, 0xF1, 0xFF, 0xFF, 0xCF, 0x03, 0xC0, 0x03, 0xC0, 0xF3, 0xFF, 0xFF, 0xEF, 0x07, 0xE0, 0x07, \ + 0xE0, 0xF7, 0xFF, 0xFF, 0xFF, 0x0F, 0xF0, 0x0F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xF8, 0x1F, 0xF8, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0x3F, 0xFC, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0x7F, 0x7E, 0x7E, 0x7E, 0x7E, 0xFE, 0xFF, 0xFF, 0x3F, 0xFC, 0x3F, 0xFC, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0xFF, 0xFF, 0x1F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF8, 0xFF, 0xFF, \ + 0x1F, 0xE0, 0x07, 0xE0, 0x07, 0xF8, 0xFF, 0xFF, 0x3F, 0xC0, 0x03, 0xC0, 0x03, 0xFC, 0xFF, 0xFF, 0x3F, 0x80, 0x01, 0x80, \ + 0x01, 0xFC, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, \ + 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, \ + 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0x1F, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + +#define OFF_DEMO_BITMAP \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0x7F, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, \ + 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0x07, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, \ + 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0x01, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, \ + 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, \ + 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, \ + 0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, \ + 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, \ + 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, \ + 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, \ + 0x00, 0xF0, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, \ + 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, \ + 0x00, 0xF0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, \ + 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, \ + 0x00, 0xFC, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, \ + 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, \ + 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0x1F, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + +#endif + +#endif // SILABS_DEMO_UI_BITMAPS_H diff --git a/examples/platform/efr32/display/demo-ui.c b/examples/platform/efr32/display/demo-ui.c new file mode 100644 index 00000000000000..73a8d52ea71090 --- /dev/null +++ b/examples/platform/efr32/display/demo-ui.c @@ -0,0 +1,136 @@ +/** + * @file + * @brief User Interface core logic for demo. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. + *www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon + *Laboratories Inc. Your use of this software is + *governed by the terms of Silicon Labs Master + *Software License Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. + *This software is distributed to you in Source Code + *format and is governed by the sections of the MSLA + *applicable to Source Code. + * + ******************************************************************************/ + +#include "demo-ui.h" +#include "demo-ui-bitmaps.h" +#include "dmd/dmd.h" +#include "em_types.h" +#include "glib.h" +#include +#include + +// Main Logo and App image +#define SILICONLABS_X_POSITION ((glibContext.pDisplayGeometry->xSize - SILICONLABS_BITMAP_WIDTH) / 2) +#define SILICONLABS_Y_POSITION 0 +#define APP_BITMAP_WIDTH 64 +#define APP_BITMAP_HEIGHT 64 +#define APP_X_POSITION ((glibContext.pDisplayGeometry->xSize - APP_BITMAP_WIDTH) / 2) +#define APP_Y_POSITION (glibContext.pDisplayGeometry->ySize - APP_BITMAP_HEIGHT - 5) +#define PROT1_ID_X_POSITION 1 +#define PROT2_ID_X_POSITION 79 + +// Matter Logo +#define PROT2_BITMAP_WIDTH MATTER_LOGO_WIDTH +#define PROT2_BITMAP_HEIGHT MATTER_LOGO_HEIGHT +#define PROT2_X_POSITION 104 +#define PROT2_Y_POSITION (APP_Y_POSITION + (APP_Y_POSITION / 2)) +#define PROT2_BITMAP (matterLogoBitmap) +#define PROT2_BITMAP_CONN (matterLogoBitmap) + +// Networking Protocol Logo +#ifdef SL_WIFI +#define PROT1_BITMAP_WIDTH WIFI_BITMAP_WIDTH +#define PROT1_BITMAP_HEIGHT WIFI_BITMAP_HEIGHT +#define PROT1_X_POSITION 8 +#define PROT1_Y_POSITION (APP_Y_POSITION + (APP_Y_POSITION / 2)) +#define PROT1_BITMAP (networkBitMap) +#define PROT1_BITMAP_CONN (networkBitMap) +#else +#define PROT1_BITMAP_WIDTH THREAD_BITMAP_WIDTH +#define PROT1_BITMAP_HEIGHT THREAD_BITMAP_HEIGHT +#define PROT1_X_POSITION 8 +#define PROT1_Y_POSITION (APP_Y_POSITION + (APP_Y_POSITION / 2)) +#define PROT1_BITMAP (networkBitMap) +#define PROT1_BITMAP_CONN (networkBitMap) +#endif + +/******************************************************************************* + *************************** LOCAL VARIABLES ******************************** + ******************************************************************************/ +static GLIB_Context_t glibContext; /* Global glib context */ + +static const uint8_t siliconlabsBitmap[] = { SILABS_BITMAP }; +static const uint8_t matterLogoBitmap[] = { MATTER_LOGO_BITMAP }; + +static const uint8_t OnStateBitMap[] = { ON_DEMO_BITMAP }; +static const uint8_t OffStateBitMap[] = { OFF_DEMO_BITMAP }; + +#ifdef SL_WIFI +static const uint8_t networkBitMap[] = { WIFI_BITMAP }; +#else +static const uint8_t networkBitMap[] = { THREAD_BITMAP }; +#endif + +// Future usage +// static const uint8_t unconnectedBitMap[] = { QUESTION_MARK_BITMAP }; + +/******************************************************************************* + ************************** LOCAL FUNCTIONS ******************************** + ******************************************************************************/ +static void demoUIDisplayLogo(void) +{ + GLIB_drawBitmap(&glibContext, SILICONLABS_X_POSITION, SILICONLABS_Y_POSITION, SILICONLABS_BITMAP_WIDTH, + SILICONLABS_BITMAP_HEIGHT, siliconlabsBitmap); +} + +/******************************************************************************* + ************************** GLOBAL FUNCTIONS ******************************* + ******************************************************************************/ +void demoUIInit(GLIB_Context_t * context) +{ + memcpy(&glibContext, context, sizeof(GLIB_Context_t)); +} + +void demoUIDisplayHeader(char * name) +{ + demoUIDisplayLogo(); + if (APP_NAME_MAX_LENGTH >= strlen(name)) + { + GLIB_drawStringOnLine(&glibContext, name, 5, GLIB_ALIGN_CENTER, 0, 0, true); + } + DMD_updateDisplay(); +} + +void demoUIDisplayApp(bool on) +{ + GLIB_drawBitmap(&glibContext, APP_X_POSITION, APP_Y_POSITION, APP_BITMAP_WIDTH, APP_BITMAP_HEIGHT, + (on ? OnStateBitMap : OffStateBitMap)); + DMD_updateDisplay(); +} + +void demoUIDisplayProtocol(demoUIProtocol protocol, bool isConnected) +{ + GLIB_drawBitmap(&glibContext, (protocol == DEMO_UI_PROTOCOL1 ? PROT1_X_POSITION : PROT2_X_POSITION), + (protocol == DEMO_UI_PROTOCOL1 ? PROT1_Y_POSITION : PROT2_Y_POSITION), + (protocol == DEMO_UI_PROTOCOL1 ? PROT1_BITMAP_WIDTH : PROT2_BITMAP_WIDTH), + (protocol == DEMO_UI_PROTOCOL1 ? PROT1_BITMAP_HEIGHT : PROT2_BITMAP_HEIGHT), + (protocol == DEMO_UI_PROTOCOL1 ? (isConnected ? PROT1_BITMAP_CONN : PROT1_BITMAP) + : (isConnected ? PROT2_BITMAP_CONN : PROT2_BITMAP))); + DMD_updateDisplay(); +} + +void demoUIClearMainScreen(uint8_t * name) +{ + GLIB_clear(&glibContext); + demoUIDisplayHeader((char *) name); + demoUIDisplayApp(false); + demoUIDisplayProtocol(DEMO_UI_PROTOCOL1, false); + demoUIDisplayProtocol(DEMO_UI_PROTOCOL2, false); +} diff --git a/examples/platform/efr32/display/demo-ui.h b/examples/platform/efr32/display/demo-ui.h new file mode 100644 index 00000000000000..6197a4e73c71ef --- /dev/null +++ b/examples/platform/efr32/display/demo-ui.h @@ -0,0 +1,139 @@ +/***************************************************************************/ /** + * @file + * @brief User Interface for demo. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. + *www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon + *Laboratories Inc. Your use of this software is + *governed by the terms of Silicon Labs Master + *Software License Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. + *This software is distributed to you in Source Code + *format and is governed by the sections of the MSLA + *applicable to Source Code. + * + ******************************************************************************/ + +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include "glib.h" +/**************************************************************************/ /** + * DEMO UI uses the underlying DMD interface and the + *GLIB and exposes several wrapper functions to + *application. These functions are used to display + * different bitmaps for the demo. + * + ******************************************************************************/ + +#define APP_NAME_MAX_LENGTH 20 + +/******************************************************************************* + ******************************** ENUMS ************************************ + ******************************************************************************/ + +typedef enum +{ + DEMO_UI_PROTOCOL1, + DEMO_UI_PROTOCOL2 +} demoUIProtocol; + +typedef enum +{ + DEMO_UI_LIGHT_OFF, + DEMO_UI_LIGHT_ON +} demoUILightState_t; + +typedef enum +{ + DEMO_UI_DIRECTION_PROT1, + DEMO_UI_DIRECTION_PROT2, + DEMO_UI_DIRECTION_SWITCH, + DEMO_UI_DIRECTION_INVALID +} demoUILightDirection_t; + +typedef enum +{ + DEMO_UI_NO_NETWORK, + DEMO_UI_SCANNING, + DEMO_UI_JOINING, + DEMO_UI_FORMING, + DEMO_UI_NETWORK_UP, + DEMO_UI_STATE_UNKNOWN +} demoUIZigBeeNetworkState_t; + +/******************************************************************************* + ****************************** PROTOTYPES ********************************* + ******************************************************************************/ + +/**************************************************************************/ /** + * @brief + * Initilize the GLIB and DMD interfaces. + * + * @param[in] void + * + * @return + * void + *****************************************************************************/ +void demoUIInit(GLIB_Context_t * context); + +/**************************************************************************/ /** + * @brief + * Update the display with Silicon Labs logo and + *application name. + * + * @param[in] name name of the current application. + * + * @return + * void + *****************************************************************************/ +void demoUIDisplayHeader(char * name); + +/**************************************************************************/ /** + * @brief + * Update the display with App image. Bool state only + *for now. + * + * @param[in] on status of App + * + * @return + * void + *****************************************************************************/ +void demoUIDisplayApp(bool on); + +/**************************************************************************/ /** + * @brief + * Update the display to show if the bluetooth is + *connected to the mobile device. + * + * @param[in] bool, true if the Light is connected to + *mobile device, false otherwise. + * + * @return + * void + *****************************************************************************/ +void demoUIDisplayProtocol(demoUIProtocol protocol, bool isConnected); + +/**************************************************************************/ /** + * @brief + * Clear the Lcd screen and display the main screen. + * + * @param[in] name - application name + * @param[in] showPROT1 - show protocol 1 related icon. + * @param[in] showPROT2 - show protocol 2 related icon. + * + * @return + * void + *****************************************************************************/ +void demoUIClearMainScreen(uint8_t * name); + +#ifdef __cplusplus +} +#endif diff --git a/examples/platform/efr32/display/lcd.c b/examples/platform/efr32/display/lcd.cpp similarity index 62% rename from examples/platform/efr32/display/lcd.c rename to examples/platform/efr32/display/lcd.cpp index a62f89c8ba25ab..9b66cfe1f024cc 100644 --- a/examples/platform/efr32/display/lcd.c +++ b/examples/platform/efr32/display/lcd.cpp @@ -19,6 +19,7 @@ #include #include +#include "demo-ui.h" #include "lcd.h" #include "dmd.h" @@ -35,25 +36,36 @@ #define QR_CODE_MODULE_SIZE 3 #define QR_CODE_BORDER_SIZE 0 -static GLIB_Context_t glibContext; #ifdef QR_CODE_ENABLED static uint8_t qrCode[qrcodegen_BUFFER_LEN_FOR_VERSION(QR_CODE_VERSION)]; static uint8_t workBuffer[qrcodegen_BUFFER_LEN_FOR_VERSION(QR_CODE_VERSION)]; #endif // QR_CODE_ENABLED -#ifdef QR_CODE_ENABLED -static void LCDFillRect(uint8_t x, uint8_t y, uint8_t w, uint8_t h); -#endif // QR_CODE_ENABLED - -void initLCD(void) +CHIP_ERROR SilabsLCD::Init(uint8_t * name, bool initialState) { EMSTATUS status; + CHIP_ERROR err = CHIP_NO_ERROR; + + // Check if Name is to long + if (name != nullptr) + { + if (APP_NAME_MAX_LENGTH < strlen((char *) name)) + { + EFR32_LOG("App Name too long"); + return CHIP_ERROR_INVALID_ARGUMENT; + } + else + { + strcpy((char *) mName, (char *) name); + } + } /* Enable the memory lcd */ status = sl_board_enable_display(); - if (status == SL_STATUS_OK) + if (status != SL_STATUS_OK) { EFR32_LOG("Board Display enable fail %d", status); + err = CHIP_ERROR_INTERNAL; } /* Initialize the DMD module for the DISPLAY device driver. */ @@ -61,6 +73,7 @@ void initLCD(void) if (DMD_OK != status) { EFR32_LOG("DMD init failed %d", status); + err = CHIP_ERROR_INTERNAL; } /* Initialize the glib context */ @@ -68,6 +81,7 @@ void initLCD(void) if (GLIB_OK != status) { EFR32_LOG("Glib context init failed %d", status); + err = CHIP_ERROR_INTERNAL; } glibContext.backgroundColor = White; @@ -76,34 +90,57 @@ void initLCD(void) if (GLIB_OK != status) { EFR32_LOG("Glib clear failed %d", status); + err = CHIP_ERROR_INTERNAL; } + demoUIInit(&glibContext); + + dState.mainState = initialState; + + return err; } /* This function is necessary because currently glib.h cannot be used within a C++ context. */ -void * LCDContext() +void * SilabsLCD::Context() { return (void *) &glibContext; } -int LCD_clear(void * pContext) +int SilabsLCD::Clear() { - return GLIB_clear((GLIB_Context_t *) pContext); + return GLIB_clear(&glibContext); } -int LCD_drawPixel(void * pContext, int32_t x, int32_t y) +int SilabsLCD::DrawPixel(void * pContext, int32_t x, int32_t y) { return GLIB_drawPixel((GLIB_Context_t *) pContext, x, y); } -int LCD_update(void) +int SilabsLCD::Update(void) { return DMD_updateDisplay(); } +void SilabsLCD::WriteDemoUI(bool state) +{ + if (mShowQRCode) + { + mShowQRCode = false; + } + dState.mainState = state; + WriteDemoUI(); +} + +void SilabsLCD::WriteDemoUI() +{ + Clear(); + demoUIClearMainScreen(mName); + demoUIDisplayApp(dState.mainState); +} + #ifdef QR_CODE_ENABLED -void LCDWriteQRCode(uint8_t * str) +void SilabsLCD::WriteQRCode() { - if (!qrcodegen_encodeText((const char *) str, workBuffer, qrCode, qrcodegen_Ecc_LOW, QR_CODE_VERSION, QR_CODE_VERSION, + if (!qrcodegen_encodeText((const char *) mQRCodeBuffer, workBuffer, qrCode, qrcodegen_Ecc_LOW, QR_CODE_VERSION, QR_CODE_VERSION, qrcodegen_Mask_AUTO, true)) { EFR32_LOG("qrcodegen_encodeText() failed"); @@ -133,7 +170,30 @@ void LCDWriteQRCode(uint8_t * str) DMD_updateDisplay(); } -void LCDFillRect(uint8_t x, uint8_t y, uint8_t w, uint8_t h) +void SilabsLCD::SetQRCode(uint8_t * str, uint32_t size) +{ + if (size < chip::QRCodeBasicSetupPayloadGenerator::kMaxQRCodeBase38RepresentationLength + 1) + { + memcpy(mQRCodeBuffer, str, size); + } +} + +void SilabsLCD::ShowQRCode(bool show, bool forceRefresh) +{ + if (show != mShowQRCode || forceRefresh) + { + (show) ? WriteQRCode() : WriteDemoUI(); + mShowQRCode = show; + } +} + +void SilabsLCD::ToggleQRCode(void) +{ + (mShowQRCode) ? WriteDemoUI() : WriteQRCode(); + mShowQRCode = !mShowQRCode; +} + +void SilabsLCD::LCDFillRect(uint8_t x, uint8_t y, uint8_t w, uint8_t h) { for (int i = 0; i < h; i++) { diff --git a/examples/platform/efr32/display/lcd.h b/examples/platform/efr32/display/lcd.h new file mode 100644 index 00000000000000..c9729e15d05de4 --- /dev/null +++ b/examples/platform/efr32/display/lcd.h @@ -0,0 +1,71 @@ +/* + * + * Copyright (c) 2020 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include "AppConfig.h" +#include "glib.h" +#ifdef QR_CODE_ENABLED +#include "qrcodegen.h" +#include +#endif // QR_CODE_ENABLED + +#include "demo-ui.h" + +#define MAX_STR_LEN 48 + +class SilabsLCD +{ + +public: + CHIP_ERROR Init(uint8_t * name = nullptr, bool initialState = false); + void * Context(); + int Clear(void); + int DrawPixel(void * pContext, int32_t x, int32_t y); + int Update(void); + void WriteDemoUI(bool state); +#ifdef QR_CODE_ENABLED + void SetQRCode(uint8_t * str, uint32_t size); + void ShowQRCode(bool show, bool forceRefresh = false); + void ToggleQRCode(void); +#endif + +private: + typedef struct demoState + { + bool mainState = false; + bool protocol1 = false; /* data */ + } DemoState_t; + + void WriteQRCode(); + void WriteDemoUI(); +#ifdef QR_CODE_ENABLED + void LCDFillRect(uint8_t x, uint8_t y, uint8_t w, uint8_t h); + char mQRCodeBuffer[chip::QRCodeBasicSetupPayloadGenerator::kMaxQRCodeBase38RepresentationLength + 1]; + bool mShowQRCode = true; +#endif + GLIB_Context_t glibContext; + +#ifdef SL_DEMO_NAME + uint8_t mName[] = SL_DEMO_NAME +#else + uint8_t mName[APP_NAME_MAX_LENGTH + 1]; +#endif + + DemoState_t dState; +}; diff --git a/examples/platform/efr32/init_efrPlatform.cpp b/examples/platform/efr32/init_efrPlatform.cpp index d0fb913165c469..36ee0018e8a814 100644 --- a/examples/platform/efr32/init_efrPlatform.cpp +++ b/examples/platform/efr32/init_efrPlatform.cpp @@ -56,10 +56,6 @@ extern "C" { #include "sl_mbedtls.h" #include "sl_system_init.h" -#if DISPLAY_ENABLED -#include "lcd.h" -#endif - void initAntenna(void); void init_efrPlatform(void) @@ -67,16 +63,13 @@ void init_efrPlatform(void) sl_system_init(); sl_mbedtls_init(); -#if DISPLAY_ENABLED - initLCD(); -#endif - #if EFR32_LOG_ENABLED efr32InitLog(); #endif #if CHIP_ENABLE_OPENTHREAD - sl_ot_sys_init(); + efr32RadioInit(); + efr32AlarmInit(); #endif // CHIP_ENABLE_OPENTHREAD } diff --git a/examples/platform/esp32/ota/OTAHelper.cpp b/examples/platform/esp32/ota/OTAHelper.cpp index 83b65776928104..b2be750db337c9 100644 --- a/examples/platform/esp32/ota/OTAHelper.cpp +++ b/examples/platform/esp32/ota/OTAHelper.cpp @@ -118,6 +118,14 @@ CHIP_ERROR RequestorCanConsentHandler(int argc, char ** argv) return CHIP_NO_ERROR; } +CHIP_ERROR SetPeriodicQueryTimeoutHandler(int argc, char ** argv) +{ + VerifyOrReturnError(argc == 1, CHIP_ERROR_INVALID_ARGUMENT); + gRequestorUser.SetPeriodicQueryTimeout(strtoul(argv[0], NULL, 0)); + gRequestorUser.RekickPeriodicQueryTimer(); + return CHIP_NO_ERROR; +} + CHIP_ERROR OTARequestorHandler(int argc, char ** argv) { if (argc == 0) @@ -147,6 +155,9 @@ void OTARequestorCommands::Register() { &RequestorCanConsentHandler, "requestorCanConsent", "Set requestorCanConsent for QueryImageCommand\n" "Usage: OTARequestor requestorCanConsent " }, + { &SetPeriodicQueryTimeoutHandler, "PeriodicQueryTimeout", + "Set timeout for querying the OTA provider for an update\n" + "Usage: OTARequestor PeriodicQueryTimeout " }, }; diff --git a/examples/platform/cyw30739/BUILD.gn b/examples/platform/infineon/cyw30739/BUILD.gn similarity index 100% rename from examples/platform/cyw30739/BUILD.gn rename to examples/platform/infineon/cyw30739/BUILD.gn diff --git a/examples/platform/cyw30739/OTAConfig.cpp b/examples/platform/infineon/cyw30739/OTAConfig.cpp similarity index 97% rename from examples/platform/cyw30739/OTAConfig.cpp rename to examples/platform/infineon/cyw30739/OTAConfig.cpp index 05902c113aa451..206db24040f98c 100644 --- a/examples/platform/cyw30739/OTAConfig.cpp +++ b/examples/platform/infineon/cyw30739/OTAConfig.cpp @@ -23,7 +23,7 @@ #include #include #include -#include +#include using namespace ::chip; using namespace ::chip::DeviceLayer; diff --git a/examples/platform/cyw30739/OTAConfig.h b/examples/platform/infineon/cyw30739/OTAConfig.h similarity index 100% rename from examples/platform/cyw30739/OTAConfig.h rename to examples/platform/infineon/cyw30739/OTAConfig.h diff --git a/examples/platform/cyw30739/args.gni b/examples/platform/infineon/cyw30739/args.gni similarity index 100% rename from examples/platform/cyw30739/args.gni rename to examples/platform/infineon/cyw30739/args.gni diff --git a/examples/platform/cyw30739/project_include/OpenThreadConfig.h b/examples/platform/infineon/cyw30739/project_include/OpenThreadConfig.h similarity index 100% rename from examples/platform/cyw30739/project_include/OpenThreadConfig.h rename to examples/platform/infineon/cyw30739/project_include/OpenThreadConfig.h diff --git a/examples/platform/p6/BUILD.gn b/examples/platform/infineon/psoc6/BUILD.gn similarity index 89% rename from examples/platform/p6/BUILD.gn rename to examples/platform/infineon/psoc6/BUILD.gn index 6d4842abf36dc1..d574f634a6e53e 100644 --- a/examples/platform/p6/BUILD.gn +++ b/examples/platform/infineon/psoc6/BUILD.gn @@ -13,9 +13,9 @@ # limitations under the License. import("//build_overrides/chip.gni") -import("//build_overrides/p6.gni") +import("//build_overrides/psoc6.gni") -import("${p6_sdk_build_root}/p6_sdk.gni") +import("${psoc6_sdk_build_root}/psoc6_sdk.gni") config("chip_examples_project_config") { include_dirs = [ "project_include" ] diff --git a/examples/platform/p6/LEDWidget.cpp b/examples/platform/infineon/psoc6/LEDWidget.cpp similarity index 100% rename from examples/platform/p6/LEDWidget.cpp rename to examples/platform/infineon/psoc6/LEDWidget.cpp diff --git a/examples/platform/p6/LEDWidget.h b/examples/platform/infineon/psoc6/LEDWidget.h similarity index 100% rename from examples/platform/p6/LEDWidget.h rename to examples/platform/infineon/psoc6/LEDWidget.h diff --git a/examples/platform/p6/args.gni b/examples/platform/infineon/psoc6/args.gni similarity index 100% rename from examples/platform/p6/args.gni rename to examples/platform/infineon/psoc6/args.gni diff --git a/examples/platform/p6/init_p6Platform.cpp b/examples/platform/infineon/psoc6/init_psoc6Platform.cpp similarity index 100% rename from examples/platform/p6/init_p6Platform.cpp rename to examples/platform/infineon/psoc6/init_psoc6Platform.cpp diff --git a/examples/platform/p6/init_p6Platform.h b/examples/platform/infineon/psoc6/init_psoc6Platform.h similarity index 100% rename from examples/platform/p6/init_p6Platform.h rename to examples/platform/infineon/psoc6/init_psoc6Platform.h diff --git a/examples/shell/shell_common/BUILD.gn b/examples/shell/shell_common/BUILD.gn index d4b57df2f969ee..0217eb057fdff4 100644 --- a/examples/shell/shell_common/BUILD.gn +++ b/examples/shell/shell_common/BUILD.gn @@ -52,17 +52,10 @@ static_library("shell_common") { if (chip_enable_openthread && (current_os == "freertos" || current_os == "zephyr")) { - if (chip_openthread_ftd) { - public_deps += [ - "${chip_root}/third_party/openthread/repo:libopenthread-cli-ftd", - "${chip_root}/third_party/openthread/repo:libopenthread-ftd", - ] - } else { - public_deps += [ - "${chip_root}/third_party/openthread/repo:libopenthread-cli-mtd", - "${chip_root}/third_party/openthread/repo:libopenthread-mtd", - ] - } + public_deps += [ + "${chip_root}/third_party/openthread:openthread_cli", + "${chip_root}/third_party/openthread:openthread_device", + ] } if (chip_shell_cmd_server) { diff --git a/examples/thermostat/efr32/BUILD.gn b/examples/thermostat/efr32/BUILD.gn index fe2be76adf88a8..edb03073686e3e 100644 --- a/examples/thermostat/efr32/BUILD.gn +++ b/examples/thermostat/efr32/BUILD.gn @@ -196,6 +196,7 @@ efr32_executable("thermostat_app") { if (chip_enable_openthread) { deps += [ "${chip_root}/third_party/openthread:openthread", + "${chip_root}/third_party/openthread:openthread_device", "${examples_plat_dir}:efr-matter-shell", ] } diff --git a/examples/window-app/efr32/BUILD.gn b/examples/window-app/efr32/BUILD.gn index bcd17e3b6dddcf..c7a3f57e4b9ff8 100644 --- a/examples/window-app/efr32/BUILD.gn +++ b/examples/window-app/efr32/BUILD.gn @@ -188,6 +188,7 @@ efr32_executable("window_app") { if (chip_enable_openthread) { deps += [ "${chip_root}/third_party/openthread:openthread", + "${chip_root}/third_party/openthread:openthread_device", "${examples_plat_dir}:efr-matter-shell", ] } @@ -237,9 +238,11 @@ efr32_executable("window_app") { if (!disable_lcd) { sources += [ - "${examples_plat_dir}/display/lcd.c", + "${examples_plat_dir}/display/demo-ui.c", + "${examples_plat_dir}/display/lcd.cpp", "src/LcdPainter.cpp", ] + include_dirs += [ "${examples_plat_dir}/display" ] defines += [ "DISPLAY_ENABLED" ] if (show_qr_code) { diff --git a/examples/window-app/efr32/include/LcdPainter.h b/examples/window-app/efr32/include/LcdPainter.h index 448c750e166613..4a30bdede2c3ea 100644 --- a/examples/window-app/efr32/include/LcdPainter.h +++ b/examples/window-app/efr32/include/LcdPainter.h @@ -23,6 +23,8 @@ #include "app-common/app-common/zap-generated/cluster-enums.h" // clang-format on +#include + #include enum class LcdIcon @@ -104,7 +106,7 @@ class VerticalBlindPainter : public PixelPainter class LcdPainter { public: - static void Paint(chip::app::Clusters::WindowCovering::Type type, uint16_t lift, uint16_t tilt, LcdIcon icon); + static void Paint(SilabsLCD & lcd, chip::app::Clusters::WindowCovering::Type type, uint16_t lift, uint16_t tilt, LcdIcon icon); private: static PixelPainter * GetCoverPainter(chip::app::Clusters::WindowCovering::Type type, uint16_t lift, uint16_t tilt); diff --git a/examples/window-app/efr32/src/LcdPainter.cpp b/examples/window-app/efr32/src/LcdPainter.cpp index 6ff452cf197eee..e1a8041f075c79 100644 --- a/examples/window-app/efr32/src/LcdPainter.cpp +++ b/examples/window-app/efr32/src/LcdPainter.cpp @@ -18,7 +18,6 @@ */ #include -#include using namespace chip::app::Clusters::WindowCovering; @@ -202,15 +201,15 @@ PixelPainter * LcdPainter::GetCoverPainter(Type type, uint16_t lift, uint16_t ti return nullptr; } -void LcdPainter::Paint(Type type, uint16_t lift, uint16_t tilt, LcdIcon icon) +void LcdPainter::Paint(SilabsLCD & lcd, Type type, uint16_t lift, uint16_t tilt, LcdIcon icon) { FramePainter framePaint = FramePainter(lift, tilt); IconPainter iconPaint = IconPainter(lift, tilt, icon); PixelPainter * coverPaint = GetCoverPainter(type, lift, tilt); CompositePainter compositePaint = CompositePainter(lift, tilt, &framePaint, &iconPaint, coverPaint); - void * context = LCDContext(); + void * context = lcd.Context(); - LCD_clear(context); + lcd.Clear(); for (int i = 0; i < LCD_SIZE; i++) { @@ -218,10 +217,10 @@ void LcdPainter::Paint(Type type, uint16_t lift, uint16_t tilt, LcdIcon icon) { if (compositePaint.Color(i, j)) { - LCD_drawPixel(context, i, j); + lcd.DrawPixel(context, i, j); } } } - LCD_update(); + lcd.Update(); delete coverPaint; } diff --git a/examples/window-app/efr32/src/WindowAppImpl.cpp b/examples/window-app/efr32/src/WindowAppImpl.cpp index 2330bade5d2506..8ccfa97ea098a7 100644 --- a/examples/window-app/efr32/src/WindowAppImpl.cpp +++ b/examples/window-app/efr32/src/WindowAppImpl.cpp @@ -129,6 +129,10 @@ StaticQueue_t sAppEventQueueStruct; WindowAppImpl WindowAppImpl::sInstance; +#ifdef DISPLAY_ENABLED +SilabsLCD slLCD; +#endif + WindowApp & WindowApp::Instance() { return WindowAppImpl::sInstance; @@ -184,6 +188,10 @@ CHIP_ERROR WindowAppImpl::Init() mStatusLED.Init(APP_STATE_LED); mActionLED.Init(APP_ACTION_LED); +#ifdef DISPLAY_ENABLED + slLCD.Init(); +#endif + return CHIP_NO_ERROR; } @@ -427,7 +435,7 @@ void WindowAppImpl::UpdateLCD() if (!tilt.IsNull() && !lift.IsNull()) { - LcdPainter::Paint(type, lift.Value(), tilt.Value(), mIcon); + LcdPainter::Paint(slLCD, type, lift.Value(), tilt.Value(), mIcon); } } #ifdef QR_CODE_ENABLED @@ -436,7 +444,8 @@ void WindowAppImpl::UpdateLCD() chip::MutableCharSpan qrCode(mQRCodeBuffer); if (GetQRCode(qrCode, chip::RendezvousInformationFlags(chip::RendezvousInformationFlag::kBLE)) == CHIP_NO_ERROR) { - LCDWriteQRCode((uint8_t *) qrCode.data()); + slLCD.SetQRCode((uint8_t *) qrCode.data(), qrCode.size()); + slLCD.ShowQRCode(true, true); } } #endif // QR_CODE_ENABLED diff --git a/gn_build.sh b/gn_build.sh index 0615a1833ef40d..18473f34f6d517 100755 --- a/gn_build.sh +++ b/gn_build.sh @@ -106,7 +106,7 @@ for arg; do enable_p6_builds=true) p6_builds_enabled=1 ;; - p6_board=*) + psoc6_board=*) p6_board_selected=1 ;; esac @@ -141,13 +141,13 @@ fi echo -# P6 Build setup +# PSoC6 Build setup if [[ -z "$p6_builds_enabled" ]]; then echo "Hint: Pass enable_p6_builds=true to this script to enable building for PSoC6-43012" else - p6_sdk_args="" + psoc6_sdk_args="" if [[ -z "$p6_board_selected" ]]; then - p6_sdk_args="p6_board=\"CY8CKIT-062S2-43012\"" + psoc6_sdk_args="psoc6_board=\"CY8CKIT-062S2-43012\"" fi fi diff --git a/integrations/cloudbuild/build-all.yaml b/integrations/cloudbuild/build-all.yaml index 3326bb4ac1ce16..c8c09ad722319f 100644 --- a/integrations/cloudbuild/build-all.yaml +++ b/integrations/cloudbuild/build-all.yaml @@ -1,4 +1,11 @@ steps: + - name: gcr.io/cloud-builders/git + args: + - submodule + - update + - "--init" + - "--recursive" + id: Submodules - name: "connectedhomeip/chip-build-vscode:0.5.91" env: - PW_ENVIRONMENT_ROOT=/pwenv @@ -6,6 +13,8 @@ steps: - "-c" - source ./scripts/bootstrap.sh id: Bootstrap + waitFor: + - Submodules entrypoint: /usr/bin/bash volumes: - name: pwenv diff --git a/integrations/cloudbuild/smoke-test.yaml b/integrations/cloudbuild/smoke-test.yaml index 72dc9aa5678706..b0333fab36f327 100644 --- a/integrations/cloudbuild/smoke-test.yaml +++ b/integrations/cloudbuild/smoke-test.yaml @@ -1,4 +1,11 @@ steps: + - name: gcr.io/cloud-builders/git + args: + - submodule + - update + - "--init" + - "--recursive" + id: Submodules - name: "connectedhomeip/chip-build-vscode:0.5.91" env: - PW_ENVIRONMENT_ROOT=/pwenv @@ -6,6 +13,8 @@ steps: - "-c" - source ./scripts/bootstrap.sh id: Bootstrap + waitFor: + - Submodules entrypoint: /usr/bin/bash volumes: - name: pwenv diff --git a/integrations/docker/images/chip-build/Dockerfile b/integrations/docker/images/chip-build/Dockerfile index b09c9c9dd43fbd..bfcfea5e40e755 100644 --- a/integrations/docker/images/chip-build/Dockerfile +++ b/integrations/docker/images/chip-build/Dockerfile @@ -11,6 +11,7 @@ RUN set -x \ automake \ bison \ bridge-utils \ + ccache \ clang \ clang-format \ clang-tidy \ diff --git a/integrations/docker/images/chip-build/version b/integrations/docker/images/chip-build/version index 6b92033b6525c6..0791656d59351a 100644 --- a/integrations/docker/images/chip-build/version +++ b/integrations/docker/images/chip-build/version @@ -1 +1 @@ -0.5.93 Version bump reason: [ESP32] Update ESP-IDF to release v4.4.2 +0.5.94 Version bump reason: Install ccache to the chip-build image diff --git a/integrations/docker/images/chip-cert-bins/Dockerfile b/integrations/docker/images/chip-cert-bins/Dockerfile index 7cb52537acbcff..2aa6f10e767fb0 100644 --- a/integrations/docker/images/chip-cert-bins/Dockerfile +++ b/integrations/docker/images/chip-cert-bins/Dockerfile @@ -254,12 +254,14 @@ RUN case ${TARGETPLATFORM} in \ RUN npm --prefix third_party/zap/repo/ ci RUN scripts/examples/gn_build_test_example.sh app1 +RUN source scripts/activate.sh && scripts/build_python.sh -m platform -d true -i no + # Stage 3: Copy relevant cert bins to a minimal image to reduce size. FROM ubuntu:22.04 ENV TZ=Etc/UTC RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone RUN apt-get update -y -RUN apt-get install -y libssl-dev libdbus-1-dev libglib2.0-dev libavahi-client-dev avahi-utils iproute2 +RUN apt-get install -y libssl-dev libdbus-1-dev libglib2.0-dev libavahi-client-dev avahi-utils iproute2 libcairo2-dev libgirepository1.0-dev python3-pip WORKDIR /root/ COPY --from=chip-build-cert-bins /root/.sdk-sha-version .sdk-sha-version COPY --from=chip-build-cert-bins /root/connectedhomeip/out/debug/chip-tool chip-tool @@ -276,3 +278,8 @@ COPY --from=chip-build-cert-bins /root/connectedhomeip/out/chip-ota-provider-app COPY --from=chip-build-cert-bins /root/connectedhomeip/out/chip-ota-requestor-app chip-ota-requestor-app COPY --from=chip-build-cert-bins /root/connectedhomeip/out/chip-lock-app chip-lock-app COPY --from=chip-build-cert-bins /root/connectedhomeip/out/app1/chip-app1 chip-app1 + +# Stage 3.1 Setup the Matter Python environment +COPY --from=chip-build-cert-bins /root/connectedhomeip/out/python_lib python_lib +COPY --from=chip-build-cert-bins /root/connectedhomeip/src/python_testing python_testing +RUN pip install --no-cache-dir python_lib/controller/python/chip*.whl diff --git a/scripts/build/build/targets.py b/scripts/build/build/targets.py index cb457e61a4b6a6..c9edb01794bca9 100755 --- a/scripts/build/build/targets.py +++ b/scripts/build/build/targets.py @@ -520,7 +520,7 @@ def InfineonTargets(): builder.AppendVariant(name="ota", enable_ota_requestor=True) builder.AppendVariant(name="updateimage", update_image=True) - target = Target('infineon-p6', InfineonBuilder, board=InfineonBoard.P6BOARD) + target = Target('infineon-psoc6', InfineonBuilder, board=InfineonBoard.PSOC6BOARD) builder.targets.append(target.Extend('lock', app=InfineonApp.LOCK)) builder.targets.append(target.Extend('light', app=InfineonApp.LIGHT)) diff --git a/scripts/build/builders/cyw30739.py b/scripts/build/builders/cyw30739.py index 5d4470fef17535..b0347750c6593a 100644 --- a/scripts/build/builders/cyw30739.py +++ b/scripts/build/builders/cyw30739.py @@ -44,7 +44,7 @@ def AppNamePrefix(self): raise Exception("Unknown app type: %r" % self) def BuildRoot(self, root): - return os.path.join(root, "examples", self.ExampleName(), "cyw30739") + return os.path.join(root, "examples", self.ExampleName(), "infineon/cyw30739") class Cyw30739Board(Enum): diff --git a/scripts/build/builders/efr32.py b/scripts/build/builders/efr32.py index 0f8abe07cb6865..d4a536a1e80ca2 100644 --- a/scripts/build/builders/efr32.py +++ b/scripts/build/builders/efr32.py @@ -120,7 +120,7 @@ def __init__(self, self.extra_gn_options = ['efr32_board="%s"' % board.GnArgName()] if enable_rpcs: - self.extra_gn_options.append('import("//with_pw_rpc.gni")') + self.extra_gn_options.append('is_debug=false import("//with_pw_rpc.gni")') if enable_ota_requestor: self.extra_gn_options.append('chip_enable_ota_requestor=true') diff --git a/scripts/build/builders/infineon.py b/scripts/build/builders/infineon.py index d0b73611a318cc..1783faefa0ef75 100644 --- a/scripts/build/builders/infineon.py +++ b/scripts/build/builders/infineon.py @@ -38,13 +38,13 @@ def ExampleName(self): def AppNamePrefix(self): if self == InfineonApp.LOCK: - return 'chip-p6-lock-example' + return 'chip-psoc6-lock-example' elif self == InfineonApp.LIGHT: - return 'chip-p6-lighting-example' + return 'chip-psoc6-lighting-example' elif self == InfineonApp.ALL_CLUSTERS: - return 'chip-p6-clusters-example' + return 'chip-psoc6-clusters-example' elif self == InfineonApp.ALL_CLUSTERS_MINIMAL: - return 'chip-p6-clusters-minimal-example' + return 'chip-psoc6-clusters-minimal-example' else: raise Exception('Unknown app type: %r' % self) @@ -61,14 +61,14 @@ def FlashBundleName(self): raise Exception('Unknown app type: %r' % self) def BuildRoot(self, root): - return os.path.join(root, 'examples', self.ExampleName(), 'p6') + return os.path.join(root, 'examples', self.ExampleName(), 'infineon/psoc6') class InfineonBoard(Enum): - P6BOARD = 1 + PSOC6BOARD = 1 def GnArgName(self): - if self == InfineonBoard.P6BOARD: + if self == InfineonBoard.PSOC6BOARD: return 'CY8CKIT-062S2-43012' @@ -78,7 +78,7 @@ def __init__(self, root, runner, app: InfineonApp = InfineonApp.LOCK, - board: InfineonBoard = InfineonBoard.P6BOARD, + board: InfineonBoard = InfineonBoard.PSOC6BOARD, enable_ota_requestor: bool = False, update_image: bool = False): super(InfineonBuilder, self).__init__( @@ -86,7 +86,7 @@ def __init__(self, runner=runner) self.app = app - self.extra_gn_options = ['p6_board="%s"' % board.GnArgName()] + self.extra_gn_options = ['psoc6_board="%s"' % board.GnArgName()] if enable_ota_requestor: self.extra_gn_options.append('chip_enable_ota_requestor=true') diff --git a/scripts/build/testdata/all_targets_except_host.txt b/scripts/build/testdata/all_targets_except_host.txt index fe98801f8ee5ac..ffbe1be7a1a4f2 100644 --- a/scripts/build/testdata/all_targets_except_host.txt +++ b/scripts/build/testdata/all_targets_except_host.txt @@ -178,22 +178,22 @@ imx-ota-provider-app imx-ota-provider-app-release imx-thermostat imx-thermostat-release -infineon-p6-all-clusters -infineon-p6-all-clusters-minimal -infineon-p6-all-clusters-minimal-ota (NOGLOB: Reduce default build variants) -infineon-p6-all-clusters-minimal-ota-updateimage (NOGLOB: Reduce default build variants) -infineon-p6-all-clusters-minimal-updateimage (NOGLOB: Reduce default build variants) -infineon-p6-all-clusters-ota (NOGLOB: Reduce default build variants) -infineon-p6-all-clusters-ota-updateimage (NOGLOB: Reduce default build variants) -infineon-p6-all-clusters-updateimage (NOGLOB: Reduce default build variants) -infineon-p6-light -infineon-p6-light-ota (NOGLOB: Reduce default build variants) -infineon-p6-light-ota-updateimage (NOGLOB: Reduce default build variants) -infineon-p6-light-updateimage (NOGLOB: Reduce default build variants) -infineon-p6-lock -infineon-p6-lock-ota (NOGLOB: Reduce default build variants) -infineon-p6-lock-ota-updateimage (NOGLOB: Reduce default build variants) -infineon-p6-lock-updateimage (NOGLOB: Reduce default build variants) +infineon-psoc6-all-clusters +infineon-psoc6-all-clusters-minimal +infineon-psoc6-all-clusters-minimal-ota (NOGLOB: Reduce default build variants) +infineon-psoc6-all-clusters-minimal-ota-updateimage (NOGLOB: Reduce default build variants) +infineon-psoc6-all-clusters-minimal-updateimage (NOGLOB: Reduce default build variants) +infineon-psoc6-all-clusters-ota (NOGLOB: Reduce default build variants) +infineon-psoc6-all-clusters-ota-updateimage (NOGLOB: Reduce default build variants) +infineon-psoc6-all-clusters-updateimage (NOGLOB: Reduce default build variants) +infineon-psoc6-light +infineon-psoc6-light-ota (NOGLOB: Reduce default build variants) +infineon-psoc6-light-ota-updateimage (NOGLOB: Reduce default build variants) +infineon-psoc6-light-updateimage (NOGLOB: Reduce default build variants) +infineon-psoc6-lock +infineon-psoc6-lock-ota (NOGLOB: Reduce default build variants) +infineon-psoc6-lock-ota-updateimage (NOGLOB: Reduce default build variants) +infineon-psoc6-lock-updateimage (NOGLOB: Reduce default build variants) k32w-light-ota-se (NOGLOB: Only on demand build) k32w-light-release-no-ota k32w-lock-low-power-release (NOGLOB: Only on demand build) diff --git a/scripts/build/testdata/build_all_except_host.txt b/scripts/build/testdata/build_all_except_host.txt index 6cb3d25fcf67a2..ea86e68d1139fd 100644 --- a/scripts/build/testdata/build_all_except_host.txt +++ b/scripts/build/testdata/build_all_except_host.txt @@ -173,25 +173,25 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/shell/cc13x2x7_26x2x7 '--args=ti_sysconfig_root="TEST_TI_SYSCONFIG_ROOT"' {out}/cc13x2x7_26x2x7-shell # Generating cyw30739-cyw930739m2evb_01-light -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/cyw30739 {out}/cyw30739-cyw930739m2evb_01-light +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/infineon/cyw30739 {out}/cyw30739-cyw930739m2evb_01-light # Generating cyw30739-cyw930739m2evb_01-lock -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/cyw30739 {out}/cyw30739-cyw930739m2evb_01-lock +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/infineon/cyw30739 {out}/cyw30739-cyw930739m2evb_01-lock # Generating cyw30739-cyw930739m2evb_01-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/ota-requestor-app/cyw30739 {out}/cyw30739-cyw930739m2evb_01-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/ota-requestor-app/infineon/cyw30739 {out}/cyw30739-cyw930739m2evb_01-ota-requestor # Generating cyw30739-cyw930739m2evb_01-ota-requestor-no-progress-logging -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/ota-requestor-app/cyw30739 --args=chip_progress_logging=false {out}/cyw30739-cyw930739m2evb_01-ota-requestor-no-progress-logging +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/ota-requestor-app/infineon/cyw30739 --args=chip_progress_logging=false {out}/cyw30739-cyw930739m2evb_01-ota-requestor-no-progress-logging # Generating efr32-brd4161a-light gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4161A"' {out}/efr32-brd4161a-light # Generating efr32-brd4161a-light-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4161A" import("//with_pw_rpc.gni")' {out}/efr32-brd4161a-light-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4161A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4161a-light-rpc # Generating efr32-brd4161a-light-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4161A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4161a-light-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4161A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4161a-light-rpc-with-ota-requestor # Generating efr32-brd4161a-light-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4161A" chip_enable_ota_requestor=true' {out}/efr32-brd4161a-light-with-ota-requestor @@ -200,10 +200,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4161A"' {out}/efr32-brd4161a-lock # Generating efr32-brd4161a-lock-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4161A" import("//with_pw_rpc.gni")' {out}/efr32-brd4161a-lock-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4161A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4161a-lock-rpc # Generating efr32-brd4161a-lock-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4161A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4161a-lock-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4161A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4161a-lock-rpc-with-ota-requestor # Generating efr32-brd4161a-lock-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4161A" chip_enable_ota_requestor=true' {out}/efr32-brd4161a-lock-with-ota-requestor @@ -230,10 +230,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4163A"' {out}/efr32-brd4163a-light # Generating efr32-brd4163a-light-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4163A" import("//with_pw_rpc.gni")' {out}/efr32-brd4163a-light-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4163A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4163a-light-rpc # Generating efr32-brd4163a-light-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4163A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4163a-light-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4163A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4163a-light-rpc-with-ota-requestor # Generating efr32-brd4163a-light-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4163A" chip_enable_ota_requestor=true' {out}/efr32-brd4163a-light-with-ota-requestor @@ -242,10 +242,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4163A"' {out}/efr32-brd4163a-lock # Generating efr32-brd4163a-lock-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4163A" import("//with_pw_rpc.gni")' {out}/efr32-brd4163a-lock-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4163A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4163a-lock-rpc # Generating efr32-brd4163a-lock-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4163A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4163a-lock-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4163A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4163a-lock-rpc-with-ota-requestor # Generating efr32-brd4163a-lock-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4163A" chip_enable_ota_requestor=true' {out}/efr32-brd4163a-lock-with-ota-requestor @@ -272,10 +272,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4164A"' {out}/efr32-brd4164a-light # Generating efr32-brd4164a-light-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4164A" import("//with_pw_rpc.gni")' {out}/efr32-brd4164a-light-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4164A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4164a-light-rpc # Generating efr32-brd4164a-light-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4164A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4164a-light-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4164A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4164a-light-rpc-with-ota-requestor # Generating efr32-brd4164a-light-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4164A" chip_enable_ota_requestor=true' {out}/efr32-brd4164a-light-with-ota-requestor @@ -284,10 +284,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4164A"' {out}/efr32-brd4164a-lock # Generating efr32-brd4164a-lock-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4164A" import("//with_pw_rpc.gni")' {out}/efr32-brd4164a-lock-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4164A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4164a-lock-rpc # Generating efr32-brd4164a-lock-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4164A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4164a-lock-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4164A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4164a-lock-rpc-with-ota-requestor # Generating efr32-brd4164a-lock-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4164A" chip_enable_ota_requestor=true' {out}/efr32-brd4164a-lock-with-ota-requestor @@ -314,10 +314,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4166A"' {out}/efr32-brd4166a-light # Generating efr32-brd4166a-light-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4166A" import("//with_pw_rpc.gni")' {out}/efr32-brd4166a-light-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4166A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4166a-light-rpc # Generating efr32-brd4166a-light-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4166A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4166a-light-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4166A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4166a-light-rpc-with-ota-requestor # Generating efr32-brd4166a-light-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4166A" chip_enable_ota_requestor=true' {out}/efr32-brd4166a-light-with-ota-requestor @@ -326,10 +326,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4166A"' {out}/efr32-brd4166a-lock # Generating efr32-brd4166a-lock-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4166A" import("//with_pw_rpc.gni")' {out}/efr32-brd4166a-lock-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4166A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4166a-lock-rpc # Generating efr32-brd4166a-lock-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4166A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4166a-lock-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4166A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4166a-lock-rpc-with-ota-requestor # Generating efr32-brd4166a-lock-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4166A" chip_enable_ota_requestor=true' {out}/efr32-brd4166a-lock-with-ota-requestor @@ -356,10 +356,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4170A"' {out}/efr32-brd4170a-light # Generating efr32-brd4170a-light-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4170A" import("//with_pw_rpc.gni")' {out}/efr32-brd4170a-light-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4170A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4170a-light-rpc # Generating efr32-brd4170a-light-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4170A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4170a-light-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4170A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4170a-light-rpc-with-ota-requestor # Generating efr32-brd4170a-light-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4170A" chip_enable_ota_requestor=true' {out}/efr32-brd4170a-light-with-ota-requestor @@ -368,10 +368,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4170A"' {out}/efr32-brd4170a-lock # Generating efr32-brd4170a-lock-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4170A" import("//with_pw_rpc.gni")' {out}/efr32-brd4170a-lock-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4170A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4170a-lock-rpc # Generating efr32-brd4170a-lock-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4170A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4170a-lock-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4170A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4170a-lock-rpc-with-ota-requestor # Generating efr32-brd4170a-lock-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4170A" chip_enable_ota_requestor=true' {out}/efr32-brd4170a-lock-with-ota-requestor @@ -398,10 +398,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4186A"' {out}/efr32-brd4186a-light # Generating efr32-brd4186a-light-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4186A" import("//with_pw_rpc.gni")' {out}/efr32-brd4186a-light-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4186A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4186a-light-rpc # Generating efr32-brd4186a-light-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4186A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4186a-light-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4186A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4186a-light-rpc-with-ota-requestor # Generating efr32-brd4186a-light-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4186A" chip_enable_ota_requestor=true' {out}/efr32-brd4186a-light-with-ota-requestor @@ -410,10 +410,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4186A"' {out}/efr32-brd4186a-lock # Generating efr32-brd4186a-lock-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4186A" import("//with_pw_rpc.gni")' {out}/efr32-brd4186a-lock-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4186A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4186a-lock-rpc # Generating efr32-brd4186a-lock-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4186A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4186a-lock-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4186A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4186a-lock-rpc-with-ota-requestor # Generating efr32-brd4186a-lock-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4186A" chip_enable_ota_requestor=true' {out}/efr32-brd4186a-lock-with-ota-requestor @@ -440,10 +440,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4187A"' {out}/efr32-brd4187a-light # Generating efr32-brd4187a-light-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4187A" import("//with_pw_rpc.gni")' {out}/efr32-brd4187a-light-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4187A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4187a-light-rpc # Generating efr32-brd4187a-light-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4187A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4187a-light-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4187A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4187a-light-rpc-with-ota-requestor # Generating efr32-brd4187a-light-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4187A" chip_enable_ota_requestor=true' {out}/efr32-brd4187a-light-with-ota-requestor @@ -452,10 +452,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4187A"' {out}/efr32-brd4187a-lock # Generating efr32-brd4187a-lock-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4187A" import("//with_pw_rpc.gni")' {out}/efr32-brd4187a-lock-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4187A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4187a-lock-rpc # Generating efr32-brd4187a-lock-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4187A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4187a-lock-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4187A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4187a-lock-rpc-with-ota-requestor # Generating efr32-brd4187a-lock-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4187A" chip_enable_ota_requestor=true' {out}/efr32-brd4187a-lock-with-ota-requestor @@ -482,10 +482,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4304A"' {out}/efr32-brd4304a-light # Generating efr32-brd4304a-light-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4304A" import("//with_pw_rpc.gni")' {out}/efr32-brd4304a-light-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4304A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4304a-light-rpc # Generating efr32-brd4304a-light-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4304A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4304a-light-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4304A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4304a-light-rpc-with-ota-requestor # Generating efr32-brd4304a-light-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4304A" chip_enable_ota_requestor=true' {out}/efr32-brd4304a-light-with-ota-requestor @@ -494,10 +494,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4304A"' {out}/efr32-brd4304a-lock # Generating efr32-brd4304a-lock-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4304A" import("//with_pw_rpc.gni")' {out}/efr32-brd4304a-lock-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4304A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4304a-lock-rpc # Generating efr32-brd4304a-lock-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4304A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4304a-lock-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4304A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4304a-lock-rpc-with-ota-requestor # Generating efr32-brd4304a-lock-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4304A" chip_enable_ota_requestor=true' {out}/efr32-brd4304a-lock-with-ota-requestor @@ -843,53 +843,53 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa # Generating imx-thermostat-release gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/thermostat/linux '--args=treat_warnings_as_errors=false target_os="linux" target_cpu="arm64" arm_arch="armv8-a" import("//build_overrides/build.gni") custom_toolchain="${build_root}/toolchain/custom" sysroot="IMX_SDK_ROOT/sysroots/cortexa53-crypto-poky-linux" target_cflags=[ "-DCHIP_DEVICE_CONFIG_WIFI_STATION_IF_NAME=\"mlan0\"", "-DCHIP_DEVICE_CONFIG_LINUX_DHCPC_CMD=\"udhcpc -b -i %s \"" ] target_cc="IMX_SDK_ROOT/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-gcc" target_cxx="IMX_SDK_ROOT/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-g++" target_ar="IMX_SDK_ROOT/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-ar" is_debug=false' {out}/imx-thermostat-release -# Generating infineon-p6-all-clusters -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-app/p6 '--args=p6_board="CY8CKIT-062S2-43012"' {out}/infineon-p6-all-clusters +# Generating infineon-psoc6-all-clusters +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-app/infineon/psoc6 '--args=psoc6_board="CY8CKIT-062S2-43012"' {out}/infineon-psoc6-all-clusters -# Generating infineon-p6-all-clusters-minimal -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-minimal-app/p6 '--args=p6_board="CY8CKIT-062S2-43012"' {out}/infineon-p6-all-clusters-minimal +# Generating infineon-psoc6-all-clusters-minimal +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-minimal-app/infineon/psoc6 '--args=psoc6_board="CY8CKIT-062S2-43012"' {out}/infineon-psoc6-all-clusters-minimal -# Generating infineon-p6-all-clusters-minimal-ota -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-minimal-app/p6 '--args=p6_board="CY8CKIT-062S2-43012" chip_enable_ota_requestor=true' {out}/infineon-p6-all-clusters-minimal-ota +# Generating infineon-psoc6-all-clusters-minimal-ota +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-minimal-app/infineon/psoc6 '--args=psoc6_board="CY8CKIT-062S2-43012" chip_enable_ota_requestor=true' {out}/infineon-psoc6-all-clusters-minimal-ota -# Generating infineon-p6-all-clusters-minimal-ota-updateimage -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-minimal-app/p6 '--args=p6_board="CY8CKIT-062S2-43012" chip_enable_ota_requestor=true build_update_image=true' {out}/infineon-p6-all-clusters-minimal-ota-updateimage +# Generating infineon-psoc6-all-clusters-minimal-ota-updateimage +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-minimal-app/infineon/psoc6 '--args=psoc6_board="CY8CKIT-062S2-43012" chip_enable_ota_requestor=true build_update_image=true' {out}/infineon-psoc6-all-clusters-minimal-ota-updateimage -# Generating infineon-p6-all-clusters-minimal-updateimage -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-minimal-app/p6 '--args=p6_board="CY8CKIT-062S2-43012" build_update_image=true' {out}/infineon-p6-all-clusters-minimal-updateimage +# Generating infineon-psoc6-all-clusters-minimal-updateimage +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-minimal-app/infineon/psoc6 '--args=psoc6_board="CY8CKIT-062S2-43012" build_update_image=true' {out}/infineon-psoc6-all-clusters-minimal-updateimage -# Generating infineon-p6-all-clusters-ota -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-app/p6 '--args=p6_board="CY8CKIT-062S2-43012" chip_enable_ota_requestor=true' {out}/infineon-p6-all-clusters-ota +# Generating infineon-psoc6-all-clusters-ota +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-app/infineon/psoc6 '--args=psoc6_board="CY8CKIT-062S2-43012" chip_enable_ota_requestor=true' {out}/infineon-psoc6-all-clusters-ota -# Generating infineon-p6-all-clusters-ota-updateimage -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-app/p6 '--args=p6_board="CY8CKIT-062S2-43012" chip_enable_ota_requestor=true build_update_image=true' {out}/infineon-p6-all-clusters-ota-updateimage +# Generating infineon-psoc6-all-clusters-ota-updateimage +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-app/infineon/psoc6 '--args=psoc6_board="CY8CKIT-062S2-43012" chip_enable_ota_requestor=true build_update_image=true' {out}/infineon-psoc6-all-clusters-ota-updateimage -# Generating infineon-p6-all-clusters-updateimage -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-app/p6 '--args=p6_board="CY8CKIT-062S2-43012" build_update_image=true' {out}/infineon-p6-all-clusters-updateimage +# Generating infineon-psoc6-all-clusters-updateimage +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-app/infineon/psoc6 '--args=psoc6_board="CY8CKIT-062S2-43012" build_update_image=true' {out}/infineon-psoc6-all-clusters-updateimage -# Generating infineon-p6-light -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/p6 '--args=p6_board="CY8CKIT-062S2-43012"' {out}/infineon-p6-light +# Generating infineon-psoc6-light +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/infineon/psoc6 '--args=psoc6_board="CY8CKIT-062S2-43012"' {out}/infineon-psoc6-light -# Generating infineon-p6-light-ota -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/p6 '--args=p6_board="CY8CKIT-062S2-43012" chip_enable_ota_requestor=true' {out}/infineon-p6-light-ota +# Generating infineon-psoc6-light-ota +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/infineon/psoc6 '--args=psoc6_board="CY8CKIT-062S2-43012" chip_enable_ota_requestor=true' {out}/infineon-psoc6-light-ota -# Generating infineon-p6-light-ota-updateimage -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/p6 '--args=p6_board="CY8CKIT-062S2-43012" chip_enable_ota_requestor=true build_update_image=true' {out}/infineon-p6-light-ota-updateimage +# Generating infineon-psoc6-light-ota-updateimage +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/infineon/psoc6 '--args=psoc6_board="CY8CKIT-062S2-43012" chip_enable_ota_requestor=true build_update_image=true' {out}/infineon-psoc6-light-ota-updateimage -# Generating infineon-p6-light-updateimage -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/p6 '--args=p6_board="CY8CKIT-062S2-43012" build_update_image=true' {out}/infineon-p6-light-updateimage +# Generating infineon-psoc6-light-updateimage +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/infineon/psoc6 '--args=psoc6_board="CY8CKIT-062S2-43012" build_update_image=true' {out}/infineon-psoc6-light-updateimage -# Generating infineon-p6-lock -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/p6 '--args=p6_board="CY8CKIT-062S2-43012"' {out}/infineon-p6-lock +# Generating infineon-psoc6-lock +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/infineon/psoc6 '--args=psoc6_board="CY8CKIT-062S2-43012"' {out}/infineon-psoc6-lock -# Generating infineon-p6-lock-ota -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/p6 '--args=p6_board="CY8CKIT-062S2-43012" chip_enable_ota_requestor=true' {out}/infineon-p6-lock-ota +# Generating infineon-psoc6-lock-ota +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/infineon/psoc6 '--args=psoc6_board="CY8CKIT-062S2-43012" chip_enable_ota_requestor=true' {out}/infineon-psoc6-lock-ota -# Generating infineon-p6-lock-ota-updateimage -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/p6 '--args=p6_board="CY8CKIT-062S2-43012" chip_enable_ota_requestor=true build_update_image=true' {out}/infineon-p6-lock-ota-updateimage +# Generating infineon-psoc6-lock-ota-updateimage +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/infineon/psoc6 '--args=psoc6_board="CY8CKIT-062S2-43012" chip_enable_ota_requestor=true build_update_image=true' {out}/infineon-psoc6-lock-ota-updateimage -# Generating infineon-p6-lock-updateimage -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/p6 '--args=p6_board="CY8CKIT-062S2-43012" build_update_image=true' {out}/infineon-p6-lock-updateimage +# Generating infineon-psoc6-lock-updateimage +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/infineon/psoc6 '--args=psoc6_board="CY8CKIT-062S2-43012" build_update_image=true' {out}/infineon-psoc6-lock-updateimage {root}/third_party/nxp/k32w0_sdk/sdk_fixes/patch_k32w_sdk.sh @@ -2103,53 +2103,53 @@ ninja -C {out}/imx-thermostat # Building imx-thermostat-release ninja -C {out}/imx-thermostat-release -# Building infineon-p6-all-clusters -ninja -C {out}/infineon-p6-all-clusters +# Building infineon-psoc6-all-clusters +ninja -C {out}/infineon-psoc6-all-clusters -# Building infineon-p6-all-clusters-minimal -ninja -C {out}/infineon-p6-all-clusters-minimal +# Building infineon-psoc6-all-clusters-minimal +ninja -C {out}/infineon-psoc6-all-clusters-minimal -# Building infineon-p6-all-clusters-minimal-ota -ninja -C {out}/infineon-p6-all-clusters-minimal-ota +# Building infineon-psoc6-all-clusters-minimal-ota +ninja -C {out}/infineon-psoc6-all-clusters-minimal-ota -# Building infineon-p6-all-clusters-minimal-ota-updateimage -ninja -C {out}/infineon-p6-all-clusters-minimal-ota-updateimage +# Building infineon-psoc6-all-clusters-minimal-ota-updateimage +ninja -C {out}/infineon-psoc6-all-clusters-minimal-ota-updateimage -# Building infineon-p6-all-clusters-minimal-updateimage -ninja -C {out}/infineon-p6-all-clusters-minimal-updateimage +# Building infineon-psoc6-all-clusters-minimal-updateimage +ninja -C {out}/infineon-psoc6-all-clusters-minimal-updateimage -# Building infineon-p6-all-clusters-ota -ninja -C {out}/infineon-p6-all-clusters-ota +# Building infineon-psoc6-all-clusters-ota +ninja -C {out}/infineon-psoc6-all-clusters-ota -# Building infineon-p6-all-clusters-ota-updateimage -ninja -C {out}/infineon-p6-all-clusters-ota-updateimage +# Building infineon-psoc6-all-clusters-ota-updateimage +ninja -C {out}/infineon-psoc6-all-clusters-ota-updateimage -# Building infineon-p6-all-clusters-updateimage -ninja -C {out}/infineon-p6-all-clusters-updateimage +# Building infineon-psoc6-all-clusters-updateimage +ninja -C {out}/infineon-psoc6-all-clusters-updateimage -# Building infineon-p6-light -ninja -C {out}/infineon-p6-light +# Building infineon-psoc6-light +ninja -C {out}/infineon-psoc6-light -# Building infineon-p6-light-ota -ninja -C {out}/infineon-p6-light-ota +# Building infineon-psoc6-light-ota +ninja -C {out}/infineon-psoc6-light-ota -# Building infineon-p6-light-ota-updateimage -ninja -C {out}/infineon-p6-light-ota-updateimage +# Building infineon-psoc6-light-ota-updateimage +ninja -C {out}/infineon-psoc6-light-ota-updateimage -# Building infineon-p6-light-updateimage -ninja -C {out}/infineon-p6-light-updateimage +# Building infineon-psoc6-light-updateimage +ninja -C {out}/infineon-psoc6-light-updateimage -# Building infineon-p6-lock -ninja -C {out}/infineon-p6-lock +# Building infineon-psoc6-lock +ninja -C {out}/infineon-psoc6-lock -# Building infineon-p6-lock-ota -ninja -C {out}/infineon-p6-lock-ota +# Building infineon-psoc6-lock-ota +ninja -C {out}/infineon-psoc6-lock-ota -# Building infineon-p6-lock-ota-updateimage -ninja -C {out}/infineon-p6-lock-ota-updateimage +# Building infineon-psoc6-lock-ota-updateimage +ninja -C {out}/infineon-psoc6-lock-ota-updateimage -# Building infineon-p6-lock-updateimage -ninja -C {out}/infineon-p6-lock-updateimage +# Building infineon-psoc6-lock-updateimage +ninja -C {out}/infineon-psoc6-lock-updateimage # Building k32w-light-ota-se ninja -C {out}/k32w-light-ota-se diff --git a/scripts/build/testdata/glob_star_targets_except_host.txt b/scripts/build/testdata/glob_star_targets_except_host.txt index d7090c2c52ccfd..9d7a22bfc4c937 100644 --- a/scripts/build/testdata/glob_star_targets_except_host.txt +++ b/scripts/build/testdata/glob_star_targets_except_host.txt @@ -72,10 +72,10 @@ imx-ota-provider-app imx-ota-provider-app-release imx-thermostat imx-thermostat-release -infineon-p6-all-clusters -infineon-p6-all-clusters-minimal -infineon-p6-light -infineon-p6-lock +infineon-psoc6-all-clusters +infineon-psoc6-all-clusters-minimal +infineon-psoc6-light +infineon-psoc6-lock k32w-light-release-no-ota k32w-lock-release k32w-shell-release diff --git a/scripts/checkout_submodules.py b/scripts/checkout_submodules.py index b150b8df71253e..c98f54c249e418 100755 --- a/scripts/checkout_submodules.py +++ b/scripts/checkout_submodules.py @@ -30,15 +30,14 @@ 'bl602', 'cc13x2_26x2', 'cc32xx', - 'cyw30739', 'darwin', 'efr32', 'esp32', + 'infineon', 'k32w0', 'linux', 'mbed', 'nrfconnect', - 'p6', 'qpg', 'telink', 'tizen', diff --git a/scripts/examples/gn_p6_example.sh b/scripts/examples/gn_psoc6_example.sh similarity index 95% rename from scripts/examples/gn_p6_example.sh rename to scripts/examples/gn_psoc6_example.sh index 746c2d743779e4..403063ff575f0d 100755 --- a/scripts/examples/gn_p6_example.sh +++ b/scripts/examples/gn_psoc6_example.sh @@ -43,7 +43,7 @@ env EXAMPLE_DIR=$1 shift OUTPUT_DIR=out/example_app -P6_BOARD=CY8CKIT-062S2-43012 +PSOC6_BOARD=CY8CKIT-062S2-43012 if [[ ! -z "$1" ]]; then OUTPUT_DIR=$1 @@ -70,7 +70,7 @@ for arg; do esac done -gn gen --check --fail-on-unused-args "$OUTPUT_DIR" --root="$EXAMPLE_DIR" --args="p6_board=\"$P6_BOARD\" ${GN_ARGS[*]}" +gn gen --check --fail-on-unused-args "$OUTPUT_DIR" --root="$EXAMPLE_DIR" --args="psoc6_board=\"$PSOC6_BOARD\" ${GN_ARGS[*]}" ninja -C "$OUTPUT_DIR" "${NINJA_ARGS[@]}" #print stats arm-none-eabi-size -A "$OUTPUT_DIR"/*.out diff --git a/scripts/flashing/p6_firmware_utils.py b/scripts/flashing/psoc6_firmware_utils.py similarity index 90% rename from scripts/flashing/p6_firmware_utils.py rename to scripts/flashing/psoc6_firmware_utils.py index 0fe247247b4070..aeef78030a1d74 100755 --- a/scripts/flashing/p6_firmware_utils.py +++ b/scripts/flashing/psoc6_firmware_utils.py @@ -12,18 +12,18 @@ # 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. -"""Flash an P6 device. +"""Flash an Infineon PSoC6 device. This is layered so that a caller can perform individual operations through an `Flasher` instance, or operations according to a command line. For `Flasher`, see the class documentation. For the parse_command() interface or standalone execution: -usage: p6_firmware_utils.py [-h] [--verbose] [--erase] [--application FILE] +usage: psoc6_firmware_utils.py [-h] [--verbose] [--erase] [--application FILE] [--verify_application] [--reset] [--skip_reset] [--device DEVICE] -Flash P6 device +Flash PSoC6 device optional arguments: -h, --help show this help message and exit @@ -64,7 +64,7 @@ "-C", {'option': 'sdk_path'}, ['TARGET={device}'], - ['CY_OPENOCD_PROGRAM_IMG=../../../{application}'], + ['CY_OPENOCD_PROGRAM_IMG=../../../../{application}'], {'option': 'mtb_target'} ], 'verify': ['{make}', '--version'], @@ -77,15 +77,15 @@ }, 'device': { 'help': 'Device family or platform to target', - 'default': 'P6', + 'default': 'PSoC6', 'alias': ['-d'], 'argparse': { 'metavar': 'DEVICE' }, }, 'sdk_path': { - 'help': 'Path to p6 sdk', - 'default': 'third_party/p6/p6_sdk', + 'help': 'Path to psoc6 sdk', + 'default': 'third_party/infineon/psoc6/psoc6_sdk', 'alias': ['-p'], 'argparse': { 'metavar': 'SDK_PATH' @@ -96,10 +96,10 @@ class Flasher(firmware_utils.Flasher): - """Manage P6 flashing.""" + """Manage PSoC6 flashing.""" def __init__(self, **options): - super().__init__(platform='P6', module=__name__, **options) + super().__init__(platform='PSOC6', module=__name__, **options) self.define_options(P6_OPTIONS) def erase(self): diff --git a/scripts/requirements.esp32.txt b/scripts/requirements.esp32.txt index c870b03a23cd56..4bf5479986c5a2 100644 --- a/scripts/requirements.esp32.txt +++ b/scripts/requirements.esp32.txt @@ -1,12 +1,12 @@ -click>=7.0 -future>=0.15.2 -pyparsing>=2.0.3,<2.4.0 -idf-component-manager>=0.2.99-beta -gdbgui==0.13.2.0 -pygdbmi<=0.9.0.2 -reedsolo>=1.5.3,<=1.5.4 -bitstring>=3.1.6 -ecdsa>=0.16.0 -kconfiglib==13.7.1 -construct==2.10.54 -python-socketio<5 +click>=7.0 ; platform_machine != 'aarch64' and sys_platform == 'linux' +future>=0.15.2 ; platform_machine != 'aarch64' and sys_platform == 'linux' +pyparsing>=2.0.3,<2.4.0 ; platform_machine != 'aarch64' and sys_platform == 'linux' +idf-component-manager>=0.2.99-beta ; platform_machine != 'aarch64' and sys_platform == 'linux' +gdbgui==0.13.2.0 ; platform_machine != 'aarch64' and sys_platform == 'linux' +pygdbmi<=0.9.0.2 ; platform_machine != 'aarch64' and sys_platform == 'linux' +reedsolo>=1.5.3,<=1.5.4 ; platform_machine != 'aarch64' and sys_platform == 'linux' +bitstring>=3.1.6 ; platform_machine != 'aarch64' and sys_platform == 'linux' +ecdsa>=0.16.0 ; platform_machine != 'aarch64' and sys_platform == 'linux' +kconfiglib==13.7.1 ; platform_machine != 'aarch64' and sys_platform == 'linux' +construct==2.10.54 ; platform_machine != 'aarch64' and sys_platform == 'linux' +python-socketio<5 ; platform_machine != 'aarch64' and sys_platform == 'linux' diff --git a/scripts/tools/check_includes_config.py b/scripts/tools/check_includes_config.py index 30b66bcd01fddd..3ab64a2f9250be 100644 --- a/scripts/tools/check_includes_config.py +++ b/scripts/tools/check_includes_config.py @@ -40,7 +40,7 @@ '/platform/Ameba/', '/platform/android/', '/platform/Beken/', - '/platform/CYW30739/', + '/platform/Infineon/CYW30739/', '/platform/Darwin/', '/platform/EFR32/', '/platform/ESP32/', @@ -48,7 +48,7 @@ '/platform/Linux/', '/platform/nxp/', '/platform/Tizen/', - '/platform/P6/', + '/platform/Infineon/PSOC6/', '/platform/bouffalolab/BL602', '/platform/webos/', r'POSIX\.h$', diff --git a/scripts/tools/convert_ini.py b/scripts/tools/convert_ini.py index a8c17157ffd802..d1abd22c4498df 100755 --- a/scripts/tools/convert_ini.py +++ b/scripts/tools/convert_ini.py @@ -21,6 +21,8 @@ import click import typing import re +from os.path import exists +import logging def convert_ini_to_json(ini_dir: str, json_path: str): @@ -32,39 +34,55 @@ def convert_ini_to_json(ini_dir: str, json_path: str): """ python_json_store = {} - python_json_store['repl-config'] = { - 'fabricAdmins': { - '1': { - 'fabricId': 1, - 'vendorId': 65521 - }, - '2': { - 'fabricId': 2, - 'vendorId': 65521 - }, - '3': { - 'fabricId': 3, - 'vendorId': 65521 - } - } - } - - python_json_store['sdk-config'] = {} - - load_ini_into_dict(ini_file=ini_dir + '/chip_tool_config.alpha.ini', - json_dict=python_json_store['sdk-config'], replace_suffix='1') - load_ini_into_dict(ini_file=ini_dir + '/chip_tool_config.beta.ini', - json_dict=python_json_store['sdk-config'], replace_suffix='2') - load_ini_into_dict(ini_file=ini_dir + '/chip_tool_config.gamma.ini', - json_dict=python_json_store['sdk-config'], replace_suffix='3') + ini_file_paths = ['/chip_tool_config.alpha.ini', '/chip_tool_config.beta.ini', '/chip_tool_config.gamma.ini'] + counter = 1 + + for path in ini_file_paths: + full_path = ini_dir + path + if (exists(full_path)): + logging.critical(f"Found chip tool INI file at: {full_path} - Converting...") + create_repl_config_from_init(ini_file=full_path, + json_dict=python_json_store, replace_suffix=str(counter)) + counter = counter + 1 json_file = open(json_path, 'w') json.dump(python_json_store, json_file, ensure_ascii=True, indent=4) +def create_repl_config_from_init(ini_file: str, json_dict: typing.Dict, replace_suffix: str): + ''' This updates a provided JSON dictionary to create a REPL compliant configuration store that + contains the correct 'repl-config' and 'sdk-config' keys built from the provided chip-tool + INI file that contains the root public keys. The INI file will typically be named + with the word 'alpha', 'beta' or 'gamma' in the name. + + ini_file: Path to source INI file + json_dict: JSON dictionary to be updated. Multiple passes through this function using + the same dictionary is possible. + replace_suffix: The credentials in the INI file typically have keys that end with 0. This suffix + can be replaced with a different number. + ''' + if ('repl-config' not in json_dict): + json_dict['repl-config'] = {} + + if ('caList' not in json_dict['repl-config']): + json_dict['repl-config']['caList'] = {} + + json_dict['repl-config']['caList'][replace_suffix] = [ + {'fabricId': int(replace_suffix), 'vendorId': 0XFFF1} + ] + + if ('sdk-config' not in json_dict): + json_dict['sdk-config'] = {} + + load_ini_into_dict(ini_file=ini_file, json_dict=json_dict['sdk-config'], replace_suffix=replace_suffix) + + def load_ini_into_dict(ini_file: str, json_dict: typing.Dict, replace_suffix: str): - """ Loads the specific INI file into the provided dictionary. A 'replace_suffix' string + """ Loads the specific INI file containing CA credential information into the provided dictionary. A 'replace_suffix' string has to be provided to convert the existing numerical suffix to a different value. + + NOTE: This does not do any conversion of the keys into a format acceptable by the Python REPL environment. Please see + create_repl_config_from_init above if that is desired. """ config = ConfigParser() diff --git a/src/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/ChipClient.kt b/src/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/ChipClient.kt index 10d7c32e994a9e..6e3833820716a3 100644 --- a/src/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/ChipClient.kt +++ b/src/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/ChipClient.kt @@ -20,6 +20,7 @@ package com.google.chip.chiptool import android.content.Context import android.util.Log import chip.devicecontroller.ChipDeviceController +import chip.devicecontroller.ControllerParams import chip.devicecontroller.GetConnectedDeviceCallbackJni.GetConnectedDeviceCallback import chip.platform.AndroidBleManager import chip.platform.AndroidChipPlatform @@ -38,12 +39,14 @@ object ChipClient { private const val TAG = "ChipClient" private lateinit var chipDeviceController: ChipDeviceController private lateinit var androidPlatform: AndroidChipPlatform + /* 0xFFF4 is a test vendor ID, replace with your assigned company ID */ + private const val VENDOR_ID = 0xFFF4 fun getDeviceController(context: Context): ChipDeviceController { getAndroidChipPlatform(context) if (!this::chipDeviceController.isInitialized) { - chipDeviceController = ChipDeviceController() + chipDeviceController = ChipDeviceController(ControllerParams.newBuilder().setControllerVendorId(VENDOR_ID).build()) } return chipDeviceController } diff --git a/src/app/EventLogging.h b/src/app/EventLogging.h index b2ce7667ab2364..f9fa56837f07e9 100644 --- a/src/app/EventLogging.h +++ b/src/app/EventLogging.h @@ -73,7 +73,7 @@ CHIP_ERROR LogEvent(const T & aEventData, EndpointId aEndpoint, EventNumber & aE eventOptions.mPriority = aEventData.GetPriorityLevel(); eventOptions.mFabricIndex = aEventData.GetFabricIndex(); // this skips logging the event if it's fabric-scoped but no fabric association exists yet. - VerifyOrReturnError(eventOptions.mFabricIndex != kUndefinedFabricIndex, CHIP_NO_ERROR); + VerifyOrReturnError(eventOptions.mFabricIndex != kUndefinedFabricIndex, CHIP_ERROR_INVALID_FABRIC_INDEX); // // Unlike attributes which have a different 'EncodeForRead' for fabric-scoped structs, diff --git a/src/app/clusters/fault-injection-server/fault-injection-server.cpp b/src/app/clusters/fault-injection-server/fault-injection-server.cpp index 83e1e678f8e8e2..925640c8ce8d00 100644 --- a/src/app/clusters/fault-injection-server/fault-injection-server.cpp +++ b/src/app/clusters/fault-injection-server/fault-injection-server.cpp @@ -36,21 +36,14 @@ using namespace chip::app; using namespace chip::app::Clusters::FaultInjection; using chip::Protocols::InteractionModel::Status; -bool emberAfFaultInjectionClusterFailAtFaultCallback(CommandHandler * commandObj, const ConcreteCommandPath & commandPath, - const Commands::FailAtFault::DecodableType & commandData) -{ - if (commandPath.mClusterId != Clusters::FaultInjection::Id) - { - // We shouldn't have been called at all. - commandObj->AddStatus(commandPath, Status::UnsupportedCluster); - return true; - } +namespace { #if CHIP_WITH_NLFAULTINJECTION - Status returnStatus = Status::Success; +nl::FaultInjection::Manager * GetFaultInjectionManager(FaultType type) +{ nl::FaultInjection::Manager * faultInjectionMgr = nullptr; - switch (commandData.type) + switch (type) { case FaultType::kSystemFault: faultInjectionMgr = &chip::System::FaultInjection::GetManager(); @@ -62,11 +55,29 @@ bool emberAfFaultInjectionClusterFailAtFaultCallback(CommandHandler * commandObj faultInjectionMgr = &chip::FaultInjection::GetManager(); break; default: - ChipLogError(Zcl, "FaultInjection: Unsupported Fault type received"); - returnStatus = Status::InvalidCommand; break; } + return faultInjectionMgr; +} +#endif + +} // anonymous namespace + +bool emberAfFaultInjectionClusterFailAtFaultCallback(CommandHandler * commandObj, const ConcreteCommandPath & commandPath, + const Commands::FailAtFault::DecodableType & commandData) +{ + if (commandPath.mClusterId != Clusters::FaultInjection::Id) + { + // We shouldn't have been called at all. + commandObj->AddStatus(commandPath, Status::UnsupportedCluster); + return true; + } + +#if CHIP_WITH_NLFAULTINJECTION + Status returnStatus = Status::Success; + nl::FaultInjection::Manager * faultInjectionMgr = GetFaultInjectionManager(commandData.type); + if (faultInjectionMgr != nullptr) { ChipLogProgress(Zcl, "FaultInjection: Configure a fault of type: %d and Id: %d to be triggered deterministically", @@ -93,4 +104,49 @@ bool emberAfFaultInjectionClusterFailAtFaultCallback(CommandHandler * commandObj return true; } +bool emberAfFaultInjectionClusterFailRandomlyAtFaultCallback(CommandHandler * commandObj, const ConcreteCommandPath & commandPath, + const Commands::FailRandomlyAtFault::DecodableType & commandData) +{ + if (commandPath.mClusterId != Clusters::FaultInjection::Id) + { + // We shouldn't have been called at all. + commandObj->AddStatus(commandPath, Status::UnsupportedCluster); + return true; + } + + if (commandData.percentage > 100) + { + commandObj->AddStatus(commandPath, Status::InvalidCommand); + return true; + } + +#if CHIP_WITH_NLFAULTINJECTION + Status returnStatus = Status::Success; + nl::FaultInjection::Manager * faultInjectionMgr = GetFaultInjectionManager(commandData.type); + + if (faultInjectionMgr != nullptr) + { + ChipLogProgress(Zcl, "FaultInjection: Configure a fault of type: %d and Id: %d to be triggered randomly", + static_cast(commandData.type), commandData.id); + int32_t err = faultInjectionMgr->FailRandomlyAtFault(commandData.id, commandData.percentage); + + if (err != 0) + { + ChipLogError(Zcl, "FaultInjection: Pass invalid inputs to FailAtFault"); + returnStatus = Status::InvalidCommand; + } + } + else + { + ChipLogError(Zcl, "FaultInjection: Failed to get Fault Injection manager"); + returnStatus = Status::Failure; + } +#else + Status returnStatus = Status::UnsupportedCommand; +#endif // CHIP_WITH_NLFAULTINJECTION + + commandObj->AddStatus(commandPath, returnStatus); + return true; +} + void MatterFaultInjectionPluginServerInitCallback() {} diff --git a/src/app/clusters/ota-requestor/DefaultOTARequestor.cpp b/src/app/clusters/ota-requestor/DefaultOTARequestor.cpp index f31bb2e0c5408a..f96b85ed9b4963 100644 --- a/src/app/clusters/ota-requestor/DefaultOTARequestor.cpp +++ b/src/app/clusters/ota-requestor/DefaultOTARequestor.cpp @@ -767,6 +767,7 @@ CHIP_ERROR DefaultOTARequestor::SendQueryImageRequest(Messaging::ExchangeManager args.location.SetValue(CharSpan("XX", strlen("XX"))); } + args.metadataForProvider = mMetadataForProvider; Controller::OtaSoftwareUpdateProviderCluster cluster(exchangeMgr, sessionHandle, mProviderLocation.Value().endpoint); return cluster.InvokeCommand(args, this, OnQueryImageResponse, OnQueryImageFailure); diff --git a/src/app/clusters/ota-requestor/DefaultOTARequestor.h b/src/app/clusters/ota-requestor/DefaultOTARequestor.h index 9f9902858c3141..938f2be59f671a 100644 --- a/src/app/clusters/ota-requestor/DefaultOTARequestor.h +++ b/src/app/clusters/ota-requestor/DefaultOTARequestor.h @@ -92,6 +92,10 @@ class DefaultOTARequestor : public OTARequestorInterface, public BDXDownloader:: void GetProviderLocation(Optional & providerLocation) override { providerLocation = mProviderLocation; } + // Set the metadata value for the provider to be used in the next query and OTA update process + // NOTE: Does not persist across reboot. + void SetMetadataForProvider(ByteSpan metadataForProvider) override { mMetadataForProvider.SetValue(metadataForProvider); } + // Add a default OTA provider to the cached list CHIP_ERROR AddDefaultOtaProvider(const ProviderLocationType & providerLocation) override; @@ -319,6 +323,7 @@ class DefaultOTARequestor : public OTARequestorInterface, public BDXDownloader:: BDXDownloader * mBdxDownloader = nullptr; // TODO: this should be OTADownloader BDXMessenger mBdxMessenger; // TODO: ideally this is held by the application uint8_t mUpdateTokenBuffer[kMaxUpdateTokenLen]; + Optional mMetadataForProvider; ByteSpan mUpdateToken; uint32_t mCurrentVersion = 0; uint32_t mTargetVersion = 0; diff --git a/src/app/clusters/ota-requestor/DefaultOTARequestorDriver.cpp b/src/app/clusters/ota-requestor/DefaultOTARequestorDriver.cpp index 5183026932c927..f2e4f6870c4db4 100644 --- a/src/app/clusters/ota-requestor/DefaultOTARequestorDriver.cpp +++ b/src/app/clusters/ota-requestor/DefaultOTARequestorDriver.cpp @@ -388,6 +388,13 @@ void DefaultOTARequestorDriver::StopPeriodicQueryTimer() CancelDelayedAction(PeriodicQueryTimerHandler, this); } +void DefaultOTARequestorDriver::RekickPeriodicQueryTimer(void) +{ + ChipLogProgress(SoftwareUpdate, "Rekicking the Periodic Query timer"); + StopPeriodicQueryTimer(); + StartPeriodicQueryTimer(); +} + void DefaultOTARequestorDriver::WatchdogTimerHandler(System::Layer * systemLayer, void * appState) { DefaultOTARequestorDriver * driver = ToDriver(appState); diff --git a/src/app/clusters/ota-requestor/DefaultOTARequestorDriver.h b/src/app/clusters/ota-requestor/DefaultOTARequestorDriver.h index 0d76af626d6dc6..4a643da36e1251 100644 --- a/src/app/clusters/ota-requestor/DefaultOTARequestorDriver.h +++ b/src/app/clusters/ota-requestor/DefaultOTARequestorDriver.h @@ -52,6 +52,9 @@ class DefaultOTARequestorDriver : public OTARequestorDriver } } + // Restart the periodic query timer + void RekickPeriodicQueryTimer(void); + // Set the timeout (in seconds) for the watchdog timer; must be non-zero void SetWatchdogTimeout(uint32_t timeout) { diff --git a/src/app/clusters/ota-requestor/OTARequestorInterface.h b/src/app/clusters/ota-requestor/OTARequestorInterface.h index f24563d36c3c79..bd09f833971cc0 100644 --- a/src/app/clusters/ota-requestor/OTARequestorInterface.h +++ b/src/app/clusters/ota-requestor/OTARequestorInterface.h @@ -203,6 +203,9 @@ class OTARequestorInterface // Set the provider location to be used in the next query and OTA update process virtual void SetCurrentProviderLocation(ProviderLocationType providerLocation) = 0; + // Set the metadata value for the provider to be used in the next query and OTA update process + virtual void SetMetadataForProvider(chip::ByteSpan metadataForProvider) = 0; + // If there is an OTA update in progress, returns the provider location for the current OTA update, otherwise, returns the // provider location that was last used virtual void GetProviderLocation(Optional & providerLocation) = 0; diff --git a/src/app/tests/suites/certification/PICS.yaml b/src/app/tests/suites/certification/PICS.yaml index 1a05e449616317..a953e5b9568b2a 100644 --- a/src/app/tests/suites/certification/PICS.yaml +++ b/src/app/tests/suites/certification/PICS.yaml @@ -5490,3 +5490,68 @@ PICS: "Is the device a Server and capable of generating large data which is greater than 1 MTU(1280 bytes)" id: MCORE.IDM.S.LargeData + + - label: + "Is the device a Client and supports writing an attribute of DataType + Bool" + id: MCORE.IDM.C.WriteRequest.Attribute.DataType_Bool + + - label: + "Is the device a Client and supports writing an attribute of DataType + String" + id: MCORE.IDM.C.WriteRequest.Attribute.DataType_String + + - label: + "Is the device a Client and supports writing an attribute of DataType + Unsigned Integer" + id: MCORE.IDM.C.WriteRequest.Attribute.DataType_UnsignedInteger + + - label: + "Is the device a Client and supports writing an attribute of DataType + Signed Integer" + id: MCORE.IDM.C.WriteRequest.Attribute.DataType_SignedInteger + + - label: + "Is the device a Client and supports writing an attribute of DataType + Struct" + id: MCORE.IDM.C.WriteRequest.Attribute.DataType_Struct + + - label: + "Is the device a Client and supports writing an attribute of DataType + Floating Point" + id: MCORE.IDM.C.WriteRequest.Attribute.DataType_FloatingPoint + + - label: + "Is the device a Client and supports writing an attribute of DataType + List" + id: MCORE.IDM.C.WriteRequest.Attribute.DataType_List + + - label: + "Is the device a Client and supports writing an attribute of DataType + Octet String" + id: MCORE.IDM.C.WriteRequest.Attribute.DataType_OctetString + + - label: + "Is the device a Client and supports writing an attribute of DataType + Enum" + id: MCORE.IDM.C.WriteRequest.Attribute.DataType_Enum + + - label: + "Is the device a Client and supports writing an attribute of DataType + Bitmap" + id: MCORE.IDM.C.WriteRequest.Attribute.DataType_Bitmap + + - label: + "Is the device a Client and supports subscribing to an attribute of + DataType Bool" + id: MCORE.IDM.C.SubscribeRequest.Attribute.DataType_Bool + + - label: + "Is the device a Client and supports subscribing to an attribute of + DataType String" + id: MCORE.IDM.C.SubscribeRequest.Attribute.DataType_String + + - label: + "Is the device a Client and supports subscribing for multiple + attribute" + id: MCORE.IDM.C.SubscribeRequest.MultipleAttributes diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_10.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_10.yaml index 839480f42307ce..6f1fdcd88a860a 100644 --- a/src/app/tests/suites/certification/Test_TC_ACL_2_10.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACL_2_10.yaml @@ -24,6 +24,20 @@ config: endpoint: 0 tests: + - label: "Pre-Conditions" + verification: | + 1.N1 is the node ID of TH1 + + 2.N2 is the node ID of TH2 + + 2.D_OK_EMPTY:"1718" which is an octstr of length 2 containing valid TLV: + + - top-level anonymous list (empty) + 3.D_OK_SINGLE:"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018" which is an octstr of length 50-100 containing valid TLV: + + - top-level anonymous list, containing - one element with profile-specific tag in fully-qualified form + disabled: true + - label: "TH1 commissions DUT using admin node ID N1" verification: | DUT diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_3.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_3.yaml index 57e02159a3319b..a0ecce5d17f816 100644 --- a/src/app/tests/suites/certification/Test_TC_ACL_2_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACL_2_3.yaml @@ -24,9 +24,58 @@ config: endpoint: 0 tests: + - label: "Pre-Conditions" + verification: | + Notes + + 1.N1 is the node ID of TH1 + + 2.D_OK_EMPTY:"1718" which is an octstr of length 2 containing valid TLV: + + - top-level anonymous list (empty) + + 3.D_OK_SINGLE:"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018" which is an octstr of length 50-100 containing valid TLV: + + - top-level anonymous list, containing - one element with profile-specific tag in fully-qualified form + + 4.D_OK_FULL:"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E6700D00000F1FF02003148656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E7420616761696E2E2E2E2E2E0018" which is an octstr of length 128 containing valid TLV: + + - top-level anonymous list, containing - two elements with profile-specific tag in fully-qualified form + + 5.D_BAD_LENGTH:"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E6700D00000F1FF02003248656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E7420616761696E2E2E2E2E2E2E0018" which is an octstr of length 129 containing valid TLV: + + - top-level anonymous list, containing - one element with profile-specific tag in fully-qualified form + + 6 .D_BAD_STRUCT: "1518" which is an octstr of length 2 containing valid TLV: + + - top-level anonymous struct, empty + + 7.D_BAD_LIST:"3701D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018" which is an octstr of length 50-100 containing valid TLV: + + - top-level list with context-specific tag, containing - one element with profile-specific tag in fully-qualified form + + 8.D_BAD_ELEM:"17103D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018" which is an octstr of length 50-100 containing valid TLV: + + - top-level anonymous list, containing - one element with anonymous tag + + 9 .D_BAD_OVERFLOW: "17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018FF" which is an octstr of length 50-100 containing valid TLV: + + - top-level anonymous list, containing - one element with profile-specific tag in fully-qualified form - but having extra bytes after the top level list end-of-container + + 10.D_BAD_UNDERFLOW:"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E6700" which is an octstr of length 50-100 containing invalid TLV: + + - top-level anonymous list, containing - one element with profile-specific tag in fully-qualified form - but lacking the top-level list end-of-container + + 11.D_BAD_NONE: "" which is an octstr of length 0 + disabled: true + - label: "TH1 commissions DUT using admin node ID N1" verification: | - verification step to be updated. + DUT + sudo ./chip-all-clusters-app + + TH1 + ./chip-tool pairing ble-wifi 1 zigbee-thread matter123 20202021 3841 disabled: true - label: @@ -63,7 +112,7 @@ tests: struct: Data field: D_OK_EMPTY : 1718" PICS: ACL.S.A0001 verification: | - ./chip-tool accesscontrol write extension "[{"data":"1718"}]" 1 0 + ./chip-tool accesscontrol write extension '[{"data":"1718"}]' 1 0 On TH1(Chiptool) , Verify AccessControl cluster Extension attribute, contains the list of AccessControlExtensionStruct containing 1 element @@ -160,7 +209,7 @@ tests: :17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018" PICS: ACL.S.A0001 verification: | - ./chip-tool accesscontrol write extension "[{"data":"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018"}]" 1 0 + ./chip-tool accesscontrol write extension '[{"data":"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018"}]' 1 0 On TH1(Chiptool) , Verify AccessControl cluster Extension attribute, contains the list of AccessControlExtensionStruct containing 1 element . @@ -289,7 +338,7 @@ tests: which is an octstr of length 128 containing valid TLV:" PICS: ACL.S.A0001 verification: | - ./chip-tool accesscontrol write extension "[{"data":"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E6700D00000F1FF02003148656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E7420616761696E2E2E2E2E2E0018"}]" 1 0 + ./chip-tool accesscontrol write extension '[{"data":"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E6700D00000F1FF02003148656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E7420616761696E2E2E2E2E2E0018"}]' 1 0 On TH1(Chiptool) , Verify AccessControl cluster Extension attribute, contains the list of AccessControlExtensionStruct containing 1 element [1656417544.279572][3888:3893] CHIP:DMG: WriteResponseMessage = @@ -407,7 +456,7 @@ tests: :17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E6700D00000F1FF02003248656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E7420616761696E2E2E2E2E2E2E0018" PICS: ACL.S.A0001 verification: | - ./chip-tool accesscontrol write extension "[{"data":"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E6700D00000F1FF02003248656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E7420616761696E2E2E2E2E2E2E0018"}]" 1 0 + ./chip-tool accesscontrol write extension '[{"data":"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E6700D00000F1FF02003248656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E7420616761696E2E2E2E2E2E2E0018"}]' 1 0 On TH1(Chiptool) , Verify AccessControl cluster Extension attribute, contains the list of AccessControlExtensionStruct containing 1 element which Returns CONSTRAINT_ERROR (0x87) @@ -436,7 +485,7 @@ tests: struct Data field: D_BAD_STRUCT : 1518" PICS: ACL.S.A0001 verification: | - ./chip-tool accesscontrol write extension "[{"data":"1518"}]" 1 0 + ./chip-tool accesscontrol write extension '[{"data":"1518"}]' 1 0 On TH1(Chiptool) , Verify AccessControl cluster Extension attribute, contains the list of AccessControlExtensionStruct containing 1 element which Returns CONSTRAINT_ERROR (0x87) @@ -463,7 +512,7 @@ tests: :3701D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018" PICS: ACL.S.A0001 verification: | - ./chip-tool accesscontrol write extension "[{"data":"3701D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018"}]" 1 0 + ./chip-tool accesscontrol write extension '[{"data":"3701D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018"}]' 1 0 On TH1(Chiptool) , Verify AccessControl cluster Extension attribute, value is list of AccessControlExtensionStruct containing 1 element which Returns CONSTRAINT_ERROR (0x87) @@ -490,7 +539,7 @@ tests: :17103D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018" PICS: ACL.S.A0001 verification: | - ./chip-tool accesscontrol write extension "[{"data":"17103D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018"}]" 1 0 + ./chip-tool accesscontrol write extension '[{"data":"17103D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018"}]' 1 0 On TH1(Chiptool) , Verify AccessControl cluster Extension attribute, value is list of AccessControlExtensionStruct containing 1 element Returns CONSTRAINT_ERROR (0x87) @@ -518,7 +567,7 @@ tests: 17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018FF" PICS: ACL.S.A0001 verification: | - ./chip-tool accesscontrol write extension "[{"data":"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018FF"}]" 1 0 + ./chip-tool accesscontrol write extension '[{"data":"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018FF"}]' 1 0 On TH1(Chiptool) , Verify AccessControl cluster Extension attribute, value is list of AccessControlExtensionStruct containing 1 element Returns CONSTRAINT_ERROR (0x87) @@ -545,7 +594,7 @@ tests: :17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E6700" PICS: ACL.S.A0001 verification: | - ./chip-tool accesscontrol write extension "[{"data":"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E6700"}]" 1 0 + ./chip-tool accesscontrol write extension '[{"data":"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E6700"}]' 1 0 On TH1(Chiptool) , Verify AccessControl cluster Extension attribute, value is list of AccessControlExtensionStruct containing 1 element, Returns CONSTRAINT_ERROR (0x87) @@ -570,7 +619,7 @@ tests: 1.struct Data field: D_BAD_NOnE" PICS: ACL.S.A0001 verification: | - ./chip-tool accesscontrol write extension "[{"data":""}]" 1 0 + ./chip-tool accesscontrol write extension '[{"data":""}]' 1 0 On TH1(Chiptool) , Verify AccessControl cluster Extension attribute, value is list of AccessControlExtensionStruct containing 1 element, Returns CONSTRAINT_ERROR (0x87) @@ -600,7 +649,7 @@ tests: 17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018" PICS: ACL.S.A0001 verification: | - ./chip-tool accesscontrol write extension "[{"data":"1718"},{"data":"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018"}]" 1 0 + ./chip-tool accesscontrol write extension '[{"data":"1718"},{"data":"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018"}]' 1 0 On TH1(Chiptool) , Verify Successfully AccessControl cluster Extension attribute, value is list of AccessControlExtensionStruct containing 2 elements and CONSTRAINT_ERROR (0x87) for second element path @@ -696,7 +745,7 @@ tests: value is an empty list" PICS: ACL.S.A0001 verification: | - ./chip-tool accesscontrol write extension "[]" 1 0 + ./chip-tool accesscontrol write extension '[]' 1 0 On TH1(Chiptool) , Verify Successfully,AccessControl cluster Extension attribute, value is an empty list diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_4.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_4.yaml index 9e74143347d01c..03dba82825bc9b 100644 --- a/src/app/tests/suites/certification/Test_TC_ACL_2_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACL_2_4.yaml @@ -26,7 +26,11 @@ config: tests: - label: "TH1 commissions DUT using admin node ID N1" verification: | - verification step to be updated. + DUT + sudo ./chip-all-clusters-app + + TH1 + ./chip-tool pairing ble-wifi 1 zigbee-thread matter123 20202021 3841 disabled: true - label: @@ -88,9 +92,9 @@ tests: 888] Targets field: [{Cluster: 55}, {Endpoint: 66}]" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 1, "authMode": 3, "subjects": [111,222,333,444], "targets": [{"cluster":11 , "endpoint":22, "deviceType": null}]}, - { "privilege": 3, "authMode": 3, "subjects": [555,666,777,888], "targets": [{"cluster": 55, "endpoint": 66, "deviceType":null }]}]" 1 0 + { "privilege": 3, "authMode": 3, "subjects": [555,666,777,888], "targets": [{"cluster": 55, "endpoint": 66, "deviceType":null }]}]' 1 0 On TH1(Chiptool), Verify Successfully AccessControl cluster ACL attribute value is list of AccessControlEntryStruct containing 3 elements [1658323877.660699][2502:2507] CHIP:DMG: WriteClient moving to [ResponseRe] [1658323877.660829][2502:2507] CHIP:DMG: WriteResponseMessage = @@ -235,7 +239,7 @@ tests: 666, 555] Targets field: [{Cluster: 88}, {Endpoint: 77}]" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 4, "authMode": 2, "subjects": [444,333,222,111], "targets": [{"cluster":44 , "endpoint":33, "deviceType":null}]},{ "privilege":4 , "authMode":3, "subjects": [888,777,666,555], "targets": [{"cluster": 88, "endpoint": 77, "deviceType":null}]}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 4, "authMode": 2, "subjects": [444,333,222,111], "targets": [{"cluster":44 , "endpoint":33, "deviceType":null}]},{ "privilege":4 , "authMode":3, "subjects": [888,777,666,555], "targets": [{"cluster": 88, "endpoint": 77, "deviceType":null}]}]' 1 0 On TH1(Chiptool) , Verify Successfully AccessControl cluster ACL attribute value is list of AccessControlEntryStruct containing 3 elements 1658226959.554674][4736:4741] CHIP:DMG: AttributeStatusIBs = @@ -377,7 +381,7 @@ tests: Endpoint: 66}, {Cluster: 77, DeviceType: 88}]" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 1, "authMode": 2, "subjects": [111,222,333,444], "targets":[{ "cluster": 11, "endpoint": 22, "deviceType": null },{ "cluster": 33, "endpoint": null, "deviceType": 44 }]}, { "privilege": 3, "authMode": 3, "subjects": [555,666,777,888], "targets":[{ "cluster": 55, "endpoint": 66, "deviceType": null },{ "cluster": 77, "endpoint": null, "deviceType": 88 }]}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 1, "authMode": 2, "subjects": [111,222,333,444], "targets":[{ "cluster": 11, "endpoint": 22, "deviceType": null },{ "cluster": 33, "endpoint": null, "deviceType": 44 }]}, { "privilege": 3, "authMode": 3, "subjects": [555,666,777,888], "targets":[{ "cluster": 55, "endpoint": 66, "deviceType": null },{ "cluster": 77, "endpoint": null, "deviceType": 88 }]}]' 1 0 On TH1(Chiptool), Verify the Successfully to acl attribute with a value is list of AccessControlEntryStruct containing 3 elements 1657276276.708941][2297:2302] CHIP:DMG: WriteClient moving to [ResponseRe] [1657276276.709021][2297:2302] CHIP:DMG: WriteResponseMessage = @@ -535,7 +539,7 @@ tests: DeviceType: 88}]" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 1, "authMode": 2, "subjects": [], "targets":[{ "cluster": 11, "endpoint": 22, "deviceType": null },{ "cluster": 33, "endpoint": null, "deviceType": 44 }]}, { "privilege": 3, "authMode": 3, "subjects": [], "targets":[{ "cluster": 55, "endpoint": 66, "deviceType": null },{ "cluster": 77, "endpoint": null, "deviceType": 88 }]}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 1, "authMode": 2, "subjects": [], "targets":[{ "cluster": 11, "endpoint": 22, "deviceType": null },{ "cluster": 33, "endpoint": null, "deviceType": 44 }]}, { "privilege": 3, "authMode": 3, "subjects": [], "targets":[{ "cluster": 55, "endpoint": 66, "deviceType": null },{ "cluster": 77, "endpoint": null, "deviceType": 88 }]}]' 1 0 On TH1(Chiptool) , Verify Successfully AccessControl cluster ACL attribute value is list of AccessControlEntryStruct containing 3 elements [1657541707.114348][3004:3009] CHIP:DMG: { @@ -686,9 +690,9 @@ tests: Group (3) Subjects field: [555, 666, 777, 888] Targets field: null" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 1, "authMode": 2, "subjects": [111, 222, 333, 444], "targets": null}, - { "privilege": 3, "authMode": 3, "subjects": [555, 666, 777, 888], "targets": null}]" 1 0 + { "privilege": 3, "authMode": 3, "subjects": [555, 666, 777, 888], "targets": null}]' 1 0 On TH1(Chiptool) , Verify Successfully to acl attribute value is list of AccessControlEntryStruct containing 3 elements as Target Null. [1657542060.230268][3398:3403] CHIP:DMG: { @@ -819,8 +823,8 @@ tests: AuthMode field: Group (3) Subjects field: null Targets field: null" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 3, "authMode": 3, "subjects": null, "targets": null}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, + { "privilege": 3, "authMode": 3, "subjects": null, "targets": null}]' 1 0 On TH1(Chiptool) , Verify Successfully to acl attribute with a value is list of AccessControlEntryStruct containing 2 elements as Target Null @@ -866,7 +870,7 @@ tests: [1656507141.631353][3224:3229] CHIP:DMG: AttributePathIB = [1656507141.631426][3224:3229] CHIP:DMG: { [1656507141.631501][3224:3229] CHIP:DMG: Endpoint = 0x0, - [1656507141.631584][3224:3229] CHIP:DMG: Cluster = 0x1f, + [1656507141.631584][3224:3229] CHIP:DMG: Cluster = 0x1f, [1656507141.631664][3224:3229] CHIP:DMG: Attribute = 0x0000_0000, [1656507141.631742][3224:3229] CHIP:DMG: ListIndex = Null, [1656507141.631824][3224:3229] CHIP:DMG: } @@ -925,8 +929,8 @@ tests: (2) AuthMode field: CASE (2) Subjects field: null Targets field: null" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 2, "authMode": 2, "subjects": null, "targets": null}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, + { "privilege": 2, "authMode": 2, "subjects": null, "targets": null}]' 1 0 On TH1(Chiptool), Verify Successfully that acl attribute with a value is list of AccessControlEntryStruct containing 2 elements as Subject and Target as null [1656507439.868495][3249:3254] CHIP:DMG: WriteClient moving to [ResponseRe] [1656507439.868612][3249:3254] CHIP:DMG: WriteResponseMessage = @@ -1050,7 +1054,7 @@ tests: node IDs (stored as SUBJECTS) Targets field: null" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects":[33,44,55,66] , "targets": null}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects":[33,44,55,66] , "targets": null}]' 1 0 On TH1(Chiptool), Verify Successfully acl attribute with a value is list of AccessControlEntryStruct containing 2 elements as Subject as SUBJECTS and Target as null @@ -1160,8 +1164,8 @@ tests: Targets field: null" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 3, "authMode": 2, "subjects":[65520,65521,65522,65523] , "targets": null}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, + { "privilege": 3, "authMode": 2, "subjects":[65520,65521,65522,65523] , "targets": null}]' 1 0 On TH1(Chiptool) , Verify Successfully acl attribute value is list of AccessControlEntryStruct containing 2 elements , Subjects as CAT Values and Target as null [1656509348.174135][3403:3408] CHIP:DMG: WriteClient moving to [ResponseRe] @@ -1289,7 +1293,7 @@ tests: MAXTARGETS targets {Cluster: random} (stored as TARGETS)" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": 40, "endpoint": null, "deviceType": null },{ "cluster": 28, "endpoint": null, "deviceType": null }]}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": 40, "endpoint": null, "deviceType": null },{ "cluster": 28, "endpoint": null, "deviceType": null }]}]' 1 0 On TH1(Chiptool) , Verify Successfully acl attribute with value is list of AccessControlEntryStruct containing 2 elements , Subjects as null and and Target as null @@ -1436,9 +1440,9 @@ tests: field: null subsequent elements same as second element" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": null, "targets": null}, + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": null, "targets": null}, { "privilege": 3, "authMode": 2, "subjects": [], "targets":null}, - { "privilege": 3, "authMode": 2, "subjects": [], "targets":null}]" 1 0 + { "privilege": 3, "authMode": 2, "subjects": [], "targets":null}]' 1 0 On TH1(Chiptool) , Verify Successfully that acl attribute value is list of AccessControlEntryStruct containing MAXENTRIES elements @@ -1559,8 +1563,8 @@ tests: AuthMode field: PASE (1) Subjects field: null Targets field: null" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{"privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 3, "authMode": 1, "subjects": [], "targets":null}]" 1 0 + ./chip-tool accesscontrol write acl '[{"privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, + { "privilege": 3, "authMode": 1, "subjects": [], "targets":null}]' 1 0 On TH1(Chiptool) , Verify Successfully acl attribute value is list of AccessControlEntryStruct containing 2 elements and Returns CONSTRAINT_ERROR (0x87) for second element path [1658475475.310438][3113:3119] CHIP:DMG: { @@ -1704,8 +1708,8 @@ tests: (5) AuthMode field: Group (3) Subjects field: null Targets field: null" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 5, "authMode": 3, "subjects": [], "targets":null}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, + { "privilege": 5, "authMode": 3, "subjects": [], "targets":null}]' 1 0 On TH1(Chiptool) , Verify Successfully to AccessControlEntryStruct containing 2 elements as Subject null and Target null for second element path Returns CONSTRAINT_ERROR (0x87) [1658475916.602576][3151:3156] CHIP:DMG: WriteResponseMessage = @@ -1780,8 +1784,8 @@ tests: field: null" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 6, "authMode": 2, "subjects": null, "targets":null}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, + { "privilege": 6, "authMode": 2, "subjects": null, "targets":null}]' 1 0 @@ -1861,10 +1865,10 @@ tests: field: null" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 3, "authMode": 4, "subjects": [], "targets":null}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, + { "privilege": 3, "authMode": 4, "subjects": [], "targets":null}]' 1 0 - On TH(Chiptool) , Verify Successfully to AccessControlEntryStruct containing 2 elements using + On TH1(Chiptool) , Verify Successfully to AccessControlEntryStruct containing 2 elements using Invalid Authmode for second element path Returns CONSTRAINT_ERROR (0x87) [1658476412.664216][3192:3197] CHIP:DMG: WriteResponseMessage = [1658476412.664247][3192:3197] CHIP:DMG: { @@ -1937,8 +1941,8 @@ tests: AuthMode field: CASE (2) Subjects field: [0] Targets field: null" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 3, "authMode": 2, "subjects": [0], "targets":null}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, + { "privilege": 3, "authMode": 2, "subjects": [0], "targets":null}]' 1 0 On TH1(Chiptool) , Verify Successfully to AccessControlEntryStruct containing 2 elements using Invalid Subject Field for second element path Returns CONSTRAINT_ERROR (0x87) [1658476622.665126][3229:3234] CHIP:DMG: WriteClient moving to [ResponseRe] @@ -2012,8 +2016,8 @@ tests: field: null" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 3, "authMode": 2, "subjects": [18446744073709551615], "targets":null}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, + { "privilege": 3, "authMode": 2, "subjects": [18446744073709551615], "targets":null}]' 1 0 On TH1(Chiptool) , Verify Successfully to AccessControlEntryStruct containing 2 elements using @@ -2088,7 +2092,7 @@ tests: Targets field: null" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": [18446744060824649728], "targets": null}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": [18446744060824649728], "targets": null}]' 1 0 On TH1(Chiptool) , Verify Successfully to AccessControlEntryStruct containing 2 elements using Invalid Subject Field for second element path Returns CONSTRAINT_ERROR (0x87) 8477037.056167][3264:3269] CHIP:DMG: { @@ -2158,8 +2162,8 @@ tests: field: null" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 3, "authMode": 2, "subjects": [18446744073709486080], "targets":null}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, + { "privilege": 3, "authMode": 2, "subjects": [18446744073709486080], "targets":null}]' 1 0 On TH1(Chiptool) , Verify Successfully to AccessControlEntryStruct containing 2 elements using Invalid Subject Field for second element path Returns CONSTRAINT_ERROR (0x87) @@ -2232,7 +2236,7 @@ tests: AuthMode field: CASE (2) Subjects field: null Targets field: [{}]" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": null, "endpoint": null, "deviceType": null }]}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": null, "endpoint": null, "deviceType": null }]}]' 1 0 On TH1(Chiptool) , Verify Successfully to AccessControlEntryStruct containing 2 elements using Invalid Target Field for second element path Returns CONSTRAINT_ERROR (0x87) @@ -2308,7 +2312,7 @@ tests: [{Cluster: 0xFFFFFFFF}]" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": 4294967295, "endpoint": null, "deviceType": null }]}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": 4294967295, "endpoint": null, "deviceType": null }]}]' 1 0 On TH1(Chiptool) , Verify Successfully to AccessControlEntryStruct containing 2 elements using Invalid Target Field for second element path Returns CONSTRAINT_ERROR (0x87) @@ -2383,7 +2387,7 @@ tests: null Targets field: [{Endpoint: 65535}]" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": null, "endpoint": 65535, "deviceType": null }]}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": null, "endpoint": 65535, "deviceType": null }]}]' 1 0 On TH1(Chiptool) , Verify Successfully to AccessControlEntryStruct containing 2 elements using Invalid Target field for second element path Returns CONSTRAINT_ERROR (0x87) [1657617920.044059][8948:8953] CHIP:DMG: { @@ -2456,7 +2460,7 @@ tests: [{DeviceType: 0xFFFFFFFF}]" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": null, "endpoint": null, "deviceType": 4294967295 }]}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": null, "endpoint": null, "deviceType": 4294967295 }]}]' 1 0 On TH1(Chiptool) , Verify Successfully to AccessControlEntryStruct containing 2 elements using Invalid Target field for second element path Returns CONSTRAINT_ERROR (0x87) @@ -2532,7 +2536,7 @@ tests: [{Endpoint: 22, DeviceType: 33}]" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": null, "endpoint": 22, "deviceType": 33 }]}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": null, "endpoint": 22, "deviceType": 33 }]}]' 1 0 On TH1(Chiptool) , Verify Successfully to AccessControlEntryStruct containing 2 elements using Invalid Target field for second element path Returns CONSTRAINT_ERROR (0x87) [1658477583.616961][3701:3706] CHIP:DMG: WriteClient moving to [ResponseRe] @@ -2608,7 +2612,7 @@ tests: [{Cluster: 11, Endpoint: 22, DeviceType: 33}]" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": 11, "endpoint": 22, "deviceType": 33 }]}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": 11, "endpoint": 22, "deviceType": 33 }]}]' 1 0 On TH1(Chiptool) , Verify Successfully AccessControlEntryStruct containing 2 elements using Invalid Target field for second element path Returns CONSTRAINT_ERROR (0x87) [1658477662.415412][3710:3715] CHIP:EM: Removed CHIP MessageCounter:35384027 from RetransTable on exchange 6953i @@ -2682,7 +2686,7 @@ tests: is an empty list" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[]" 1 0 + ./chip-tool accesscontrol write acl '[]' 1 0 On TH1(Chiptool) , Verify Successfully to AccessControl cluster ACL attribute value is an empty list since all ACL entries removed. RetransTable on exchange 43997i diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_5.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_5.yaml index a2815f360a1d95..5bef11cd027112 100644 --- a/src/app/tests/suites/certification/Test_TC_ACL_2_5.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACL_2_5.yaml @@ -24,6 +24,23 @@ config: endpoint: 0 tests: + - label: "Pre-Conditions" + verification: | + 1.N1 is the node ID of TH1 + + 2.D_OK_EMPTY:"1718" which is an octstr of length 2 containing valid TLV: + + - top-level anonymous list (empty) + + 3.D_OK_SINGLE:"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018" which is an octstr of length 50-100 containing valid TLV: + + - top-level anonymous list, containing - one element with profile-specific tag in fully-qualified form + + 4 .D_BAD_LENGTH: "17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E6700D00000F1FF02003248656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E7420616761696E2E2E2E2E2E2E0018" which is an octstr of length 129 containing valid TLV: + + - top-level anonymous list, containing - one element with profile-specific tag in fully-qualified form + disabled: true + - label: "TH1 commissions DUT using admin node ID N1" verification: | DUT diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_6.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_6.yaml index 7f8e420f6d489c..0723273609cab5 100644 --- a/src/app/tests/suites/certification/Test_TC_ACL_2_6.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACL_2_6.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Pre-Conditions" + verification: | + N1 is the node ID of TH1 + disabled: true + - label: "TH1 commissions DUT using admin node ID N1" verification: | DUT diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_7.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_7.yaml index 4cd0beae949f05..1bf38fb69a4ff0 100644 --- a/src/app/tests/suites/certification/Test_TC_ACL_2_7.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACL_2_7.yaml @@ -24,6 +24,21 @@ config: endpoint: 0 tests: + - label: "Pre-Conditions" + verification: | + 1.N1 is the node ID of TH1 + + 2.N2 is the node ID of TH2 + + 2.D_OK_EMPTY: "1718" which is an octstr of length 2 containing valid TLV: + + - top-level anonymous list (empty) + + 3.D_OK_SINGLE:"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018" which is an octstr of length 50-100 containing valid TLV: + + - top-level anonymous list, containing - one element with profile-specific tag in fully-qualified form + disabled: true + - label: "TH1 commissions DUT using admin node ID N1" verification: | DUT diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_8.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_8.yaml index 37805cdfb0bca0..d2aa037f31964e 100644 --- a/src/app/tests/suites/certification/Test_TC_ACL_2_8.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACL_2_8.yaml @@ -24,6 +24,13 @@ config: endpoint: 0 tests: + - label: "Pre-Conditions" + verification: | + 1.N1 is the node ID of TH1 + + 2 .N2 is the node ID of TH2 + disabled: true + - label: "TH1 commissions DUT using admin node ID N1" verification: | DUT diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_9.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_9.yaml index e605cc3c6ba305..ee834c11f4752f 100644 --- a/src/app/tests/suites/certification/Test_TC_ACL_2_9.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACL_2_9.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Pre-Conditions" + verification: | + N1 is the node ID of TH1 + disabled: true + - label: "TH1 commissions DUT using admin node ID N1" verification: | DUT diff --git a/src/app/tests/suites/certification/Test_TC_ACT_1_1.yaml b/src/app/tests/suites/certification/Test_TC_ACT_1_1.yaml index ef12fae26a6a2a..8c6429ee483a14 100644 --- a/src/app/tests/suites/certification/Test_TC_ACT_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACT_1_1.yaml @@ -53,7 +53,7 @@ tests: response: constraints: type: list - contains: [0, 1] + contains: [0, 1, 65528, 65529, 65531, 65532, 65533] - label: "Read the optional attribute(SetupURL) in AttributeList" PICS: ACT.S.A0002 @@ -62,7 +62,7 @@ tests: response: constraints: type: list - contains: [0, 1, 2] + contains: [2] # Checking only type check all attributes are optional - label: "Read the global attribute: AcceptedCommandList" diff --git a/src/app/tests/suites/certification/Test_TC_ACT_2_1.yaml b/src/app/tests/suites/certification/Test_TC_ACT_2_1.yaml index d1f38dd809f311..068cde853d3751 100644 --- a/src/app/tests/suites/certification/Test_TC_ACT_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACT_2_1.yaml @@ -81,7 +81,7 @@ tests: - label: "Read EndpointLists attribute of Actions server" PICS: ACT.S.A0001 verification: | - ./chip-tool bridgedactions read endpoint-list 1 1 + ./chip-tool actions read endpoint-lists 1 1 On TH(chip-tool), verify the EndpointListStructs in TH Log: @@ -153,7 +153,7 @@ tests: - label: "Read ActionList attribute of Actions server" PICS: ACT.S.A0000 verification: | - ./chip-tool bridgedactions read action-list 1 1 + ./chip-tool actions read action-list 1 1 Verify ActionStructs in TH(chip-tool) Log: @@ -340,7 +340,7 @@ tests: - label: "Read SetupURL attribute" PICS: ACT.S.A0002 verification: | - ./chip-tool bridgedactions read setup-url 1 1 + ./chip-tool actions read setup-url 1 1 Verify in TH(chip-tool) log diff --git a/src/app/tests/suites/certification/Test_TC_ACT_2_2.yaml b/src/app/tests/suites/certification/Test_TC_ACT_2_2.yaml index cfdb21d3bd883b..659c95c871835d 100644 --- a/src/app/tests/suites/certification/Test_TC_ACT_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACT_2_2.yaml @@ -43,9 +43,8 @@ tests: disabled: true - label: "Read EndpointLists attribute" - PICS: ACT.S.A0001 && ACT.S.M.FillEndpointLists verification: | - ./chip-tool bridgedactions read endpoint-list 1 1 + ./chip-tool actions read endpoint-lists 1 1 On TH(chip-tool), verify the EndpointListStructs in TH Log: [1658426570.716289][16527:16532] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0025 Attribute 0x0000_0001 DataVersion: 3768747568 @@ -79,7 +78,7 @@ tests: - label: "Read EndpointLists attribute again" PICS: ACT.S.A0001 && ACT.S.M.FillEndpointLists verification: | - ./chip-tool bridgedactions read endpoint-list 1 1 + ./chip-tool actions read endpoint-lists 1 1 On TH(chip-tool), verify the EndpointListStructs in below Log: [1658408033.786811][14495:14500] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0025 Attribute 0x0000_0001 DataVersion: 3742844648 @@ -160,7 +159,7 @@ tests: - label: "Read EndpointLists attribute again" PICS: ACT.S.A0001 && ACT.S.M.FillEndpointLists verification: | - ./chip-tool bridgedactions read endpoint-list 1 1 + ./chip-tool actions read endpoint-lists 1 1 On TH(chip-tool), verify the EndpointListStructs [1658408033.786811][14495:14500] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0025 Attribute 0x0000_0001 DataVersion: 3742844648 @@ -182,7 +181,7 @@ tests: [1658408033.788278][14495:14500] CHIP:TOO: } disabled: true - - label: "compare result of step 2g to what was read in step 2e" + - label: "compare result of step 2g to what was read in step 2d" PICS: ACT.S.A0001 && ACT.S.M.FillEndpointLists verification: | compare result of step 2g to what was read in step 2d, Verify one EP (EP 3 in this case) has been moved from one EndpointListStruct to another EndpointListStruct @@ -199,7 +198,7 @@ tests: - label: "Read EndpointLists attribute again" PICS: ACT.S.A0001 && ACT.S.M.FillEndpointLists verification: | - ./chip-tool bridgedactions read endpoint-list 1 1 + ./chip-tool actions read endpoint-lists 1 1 On TH(chip-tool), verify the EndpointListStructs [1658426959.409374][16560:16565] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0025 Attribute 0x0000_0001 DataVersion: 3768747568 @@ -213,7 +212,7 @@ tests: [1658426959.409755][16560:16565] CHIP:TOO: } disabled: true - - label: "compare result of step 2j to what was read in step 2h" + - label: "compare result of step 2j to what was read in step 2g" PICS: ACT.S.A0001 && ACT.S.M.FillEndpointLists verification: | compare result of step 2j to what was read in step 2g, Verify one EndpointListStruct (the 2nd one in this example) got removed while the other one(s) did not change @@ -231,7 +230,7 @@ tests: - label: "Read EndpointLists attribute again" PICS: ACT.S.A0001 && ACT.S.M.OverlappingEndpointLists verification: | - ./chip-tool bridgedactions read endpoint-list 1 1 + ./chip-tool actions read endpoint-lists 1 1 On TH(chip-tool), verify the EndpointListStructs 1658427088.316681][16578:16583] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0025 Attribute 0x0000_0001 DataVersion: 3768747568 @@ -268,7 +267,7 @@ tests: - label: "Read ActionList attribute" PICS: ACT.S.A0000 && ACT.S.M.FillActionList verification: | - ./chip-tool bridgedactions read action-list 1 1 + ./chip-tool actions read action-list 1 1 Verify ActionStructs in TH(chip-tool) Log: [1658479958.699434][26130:26135] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0025 Attribute 0x0000_0000 DataVersion: 198994220 @@ -302,7 +301,7 @@ tests: - label: "Read ActionList attribute again" PICS: ACT.S.A0000 && ACT.S.M.FillActionList verification: | - ./chip-tool bridgedactions read action-list 1 1 + ./chip-tool actions read action-list 1 1 Verify ActionStructs in TH(chip-tool) Log: [1658480004.064867][26153:26158] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0025 Attribute 0x0000_0000 DataVersion: 198994220 @@ -384,7 +383,7 @@ tests: - label: "Read ActionList attribute again" PICS: ACT.S.A0000 && ACT.S.M.FillActionList verification: | - ./chip-tool bridgedactions read action-list 1 1 + ./chip-tool actions read action-list 1 1 Verify ActionStructs in TH(chip-tool) Log: [1658480039.164683][26172:26177] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0025 Attribute 0x0000_0000 DataVersion: 198994220 @@ -415,7 +414,7 @@ tests: - label: "Read ActionList attribute again" PICS: ACT.S.A0000 && ACT.S.M.FillActionList verification: | - ./chip-tool bridgedactions read action-list 1 1 + ./chip-tool actions read action-list 1 1 Verify ActionStructs in TH(chip-tool) Log: [1658480059.199268][26178:26183] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0025 Attribute 0x0000_0000 DataVersion: 198994220 @@ -454,7 +453,7 @@ tests: - label: "Read ActionList attribute" PICS: ACT.S.A0000 verification: | - ./chip-tool bridgedactions read action-list 1 1 + ./chip-tool actions read action-list 1 1 Verify ActionStructs in TH(chip-tool) Log: [1658480080.135069][26185:26190] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0025 Attribute 0x0000_0000 DataVersion: 198994220 @@ -481,7 +480,7 @@ tests: verification: | To subscribe StateChanged event follow below steps 1) ./chip-tool interactive start - 2) bridgedactions subscribe-event action-failed 2 30 1 0 + 2) actions subscribe-event action-failed 2 30 1 0 Verify in TH Log: [1659962630.453221][25381:25386] CHIP:EM: Removed CHIP MessageCounter:65903257 from RetransTable on exchange 50035i [1659962630.453246][25381:25386] CHIP:DMG: ReportDataMessage = @@ -506,7 +505,7 @@ tests: [1659962630.456551][25381:25386] CHIP:DMG: } [1659962630.456563][25381:25386] CHIP:DMG: Subscription established with SubscriptionID = 0x78f0a04c MinInterval = 0s MaxInterval = 100s Peer = 01:0000000000000001 - 3) bridgedactions instant-action 0x1001 1 1 + 3) actions instant-action 0x1001 1 1 Verify in TH Log @@ -524,7 +523,7 @@ tests: verification: | Only InstantActions command is supported - ./chip-tool bridgedactions instant-action 0x1001 1 1 + ./chip-tool actions instant-action 0x1001 1 1 Verify in TH Log diff --git a/src/app/tests/suites/certification/Test_TC_ACT_3_1.yaml b/src/app/tests/suites/certification/Test_TC_ACT_3_1.yaml index 3c8b4a75a40ad1..89258aeb54ec2b 100644 --- a/src/app/tests/suites/certification/Test_TC_ACT_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACT_3_1.yaml @@ -28,11 +28,16 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT reads all supported mandatory attributes from TH one at a time in a manufacturer specific order" verification: | - ./chip-tool bridgedactions read action-list 1 1 + ./chip-tool actions read action-list 1 1 Verify read command is received on TH(all-clusters-app) @@ -59,7 +64,7 @@ tests: - ./chip-tool bridgedactions read endpoint-list 1 1 + ./chip-tool actions read endpoint-list 1 1 Verify read command is received on TH(all-clusters-app ) @@ -91,7 +96,7 @@ tests: verification: | Optional attibute - ./chip-tool bridgedactions read setup-url 1 1 + ./chip-tool actions read setup-url 1 1 Verify read command is received on TH(all-clusters-app) @@ -137,7 +142,7 @@ tests: also reflects this in global attributes such as FeatureMap and AttributeList. Commission DUT to TH again" verification: | - ./chip-tool bridgedactions read attribute-list 1 1 + ./chip-tool actions read attribute-list 1 1 Verify attribute-list attribute contains 7 entries on TH(all-clusters-minimal-app) [1658393025.602745][13481:13486] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0025 Attribute 0x0000_FFFB DataVersion: 2868144574 @@ -211,7 +216,7 @@ tests: verification: | Optional attibute - ./chip-tool bridgedactions read setup-url 1 1 + ./chip-tool actions read setup-url 1 1 General error: 0x86 (UNSUPPORTED_ATTRIBUTE) disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_ACT_3_2.yaml b/src/app/tests/suites/certification/Test_TC_ACT_3_2.yaml index 14fe1033e00e10..49353e5ffc64c1 100644 --- a/src/app/tests/suites/certification/Test_TC_ACT_3_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACT_3_2.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "Preparation: TH as server exposes an Actions server cluster on EP 1, with one action (supporting all possible commands) and corresponding @@ -41,7 +46,7 @@ tests: - label: "DUT issues an InstantAction command to TH" PICS: ACT.C.C00.Tx verification: | - ./chip-tool bridgedactions instant-action 0x1001 1 1 + ./chip-tool actions instant-action 0x1001 1 1 Verify command is successfully sent on TH(all-clusters-app) @@ -84,7 +89,7 @@ tests: - label: "DUT issues an StartAction command to TH" PICS: ACT.C.C02.Tx verification: | - ./chip-tool bridgedactions start-action 0x1001 1 1 + ./chip-tool actions start-action 0 1 1 Note: Message log similar as in step 1 disabled: true @@ -92,7 +97,7 @@ tests: - label: "DUT issues an StopAction command to TH" PICS: ACT.C.C04.Tx verification: | - ./chip-tool bridgedactions stop-action 0x1001 1 1 + ./chip-tool actions stop-action 0 1 1 Note: Message log similar as in step 1 disabled: true @@ -100,7 +105,7 @@ tests: - label: "DUT issues an PauseAction command to TH" PICS: ACT.C.C05.Tx verification: | - ./chip-tool bridgedactions pause-action 0x1001 1 1 + ./chip-tool actions pause-action 0 1 1 Note: Message log similar as in step 1 disabled: true @@ -108,7 +113,7 @@ tests: - label: "DUT issues an ResumeAction command to TH" PICS: ACT.C.C07.Tx verification: | - ./chip-tool bridgedactions resume-action 0x1001 1 1 + ./chip-tool actions resume-action 0 1 1 Note: Message log similar as in step 1 disabled: true @@ -116,7 +121,7 @@ tests: - label: "DUT issues an EnableAction command to TH" PICS: ACT.C.C08.Tx verification: | - ./chip-tool bridgedactions enable-action 0x1001 1 1 + ./chip-tool actions enable-action 0 1 1 Note: Message log similar as in step 1 disabled: true @@ -124,7 +129,7 @@ tests: - label: "DUT issues an DisableAction command to TH" PICS: ACT.C.C0a.Tx verification: | - ./chip-tool bridgedactions disable-action 0x1001 1 1 + ./chip-tool actions disable-action 0 1 1 Note: Message log similar as in step 1 disabled: true @@ -132,7 +137,7 @@ tests: - label: "DUT issues an StartActionWithDuration command to TH" PICS: ACT.C.C03.Tx verification: | - ./chip-tool bridgedactions start-action-with-duration 0x1001 1 1 + ./chip-tool actions start-action-with-duration 0x1001 100 1 1 Note: Message log similar as in step 1 disabled: true @@ -140,7 +145,7 @@ tests: - label: "DUT issues an PauseActionWithDuration command to TH" PICS: ACT.C.C06.Tx verification: | - ./chip-tool bridgedactions pause-action-with-duration 0x1001 1 1 + ./chip-tool actions pause-action-with-duration 0x1001 200 1 1 Note: Message log similar as in step 1 disabled: true @@ -148,7 +153,7 @@ tests: - label: "DUT issues an EnableActionWithDuration command to TH" PICS: ACT.C.C09.Tx verification: | - ./chip-tool bridgedactions enable-action-with-duration 0x1001 1 1 + ./chip-tool actions enable-action-with-duration 0x1001 300 1 1 Note: Message log similar as in step 1 disabled: true @@ -156,7 +161,7 @@ tests: - label: "DUT issues an DisableActionWithDuration command to TH" PICS: ACT.C.C0b.Tx verification: | - ./chip-tool bridgedactions disable-action-with-duration 0x1001 1 1 + ./chip-tool actions disable-action-with-duration 0 100 1 1 Note: Message log similar as in step 1 disabled: true @@ -164,7 +169,7 @@ tests: - label: "DUT issues an InstantActionWithTransition command to TH" PICS: ACT.C.C01.Tx verification: | - ./chip-tool bridgedactions instant-action-with-transition 0x1001 1 1 + ./chip-tool actions instant-action-with-transition 0x1001 400 1 1 Note: Message log similar as in step 1 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_8_1.yaml b/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_8_1.yaml index e47b10028fba67..2e8d999ea1b3f2 100644 --- a/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_8_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_8_1.yaml @@ -25,9 +25,12 @@ config: endpoint: 0 tests: - - label: "Preconditions:" + - label: + "Preconditions: Commission TH to DUT, if not done so already. In some + cases, such as with a Casting Video Player, the TH commissions the + DUT." verification: | - Commission TH to DUT, if not done so already. In some cases, such as with a Casting Video Player, the TH commissions the DUT. + disabled: true - label: "DUT sends StopApp command to TH" diff --git a/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_9_1.yaml b/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_9_1.yaml index 24136fc704c78f..ab3748ba234aca 100644 --- a/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_9_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_9_1.yaml @@ -25,9 +25,12 @@ config: endpoint: 0 tests: - - label: "Preconditions:" + - label: + "Preconditions: Commission TH to DUT, if not done so already. In some + cases, such as with a Casting Video Player, the TH commissions the + DUT." verification: | - Commission TH to DUT, if not done so already. In some cases, such as with a Casting Video Player, the TH commissions the DUT. + disabled: true - label: "DUT sends HideApp command to TH" diff --git a/src/app/tests/suites/certification/Test_TC_BDX_1_2.yaml b/src/app/tests/suites/certification/Test_TC_BDX_1_2.yaml index 7f0f8f54599661..3c755cd927f1b2 100644 --- a/src/app/tests/suites/certification/Test_TC_BDX_1_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_BDX_1_2.yaml @@ -25,6 +25,11 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + This test can be verified using TC-SU-2.3 from the OTA Software Update section. Pls refer to OTA section for steps. + disabled: true + - label: "DUT sends a ReceiveInit message to TH" verification: | 1. Verify that the OTA Reference Provider App logs show ReceiveInit message from DUT diff --git a/src/app/tests/suites/certification/Test_TC_BDX_1_4.yaml b/src/app/tests/suites/certification/Test_TC_BDX_1_4.yaml index 164b89b58c0c6f..992be636e12a7c 100644 --- a/src/app/tests/suites/certification/Test_TC_BDX_1_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_BDX_1_4.yaml @@ -25,6 +25,11 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + This test can be verified using TC-SU-3.3 from the OTA Software Update section. Pls refer to OTA section for steps. + disabled: true + - label: "TH sends a ReceiveInit message to DUT + DUT sends a ReceiveAccept message back to TH" diff --git a/src/app/tests/suites/certification/Test_TC_BDX_2_1.yaml b/src/app/tests/suites/certification/Test_TC_BDX_2_1.yaml index eb8cd3dede6d48..449215850abb40 100644 --- a/src/app/tests/suites/certification/Test_TC_BDX_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_BDX_2_1.yaml @@ -24,6 +24,12 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + This test can be verified using TC-SU-3.3 from the OTA Software Update section. Pls refer to OTA section for steps. + This test can also be verified with TH sending a ReceiveInit message to the DUT. + disabled: true + - label: "DUT sends a SendInit message to TH + TH sends a SendAccept message back to DUT + DUT sends a Block message to TH + TH sends a BlockAck diff --git a/src/app/tests/suites/certification/Test_TC_BDX_2_2.yaml b/src/app/tests/suites/certification/Test_TC_BDX_2_2.yaml index d8ea0b6645e8d5..21a032bf91f87f 100644 --- a/src/app/tests/suites/certification/Test_TC_BDX_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_BDX_2_2.yaml @@ -24,6 +24,12 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + This test can be verified using TC-SU-2.3 from the OTA Software Update section. Pls refer to OTA section for steps. + This test can also be verified with DUT sending a ReceiveInit message to the TH. + disabled: true + - label: "TH sends the first Block message to DUT + DUT sends a BlockAck message back to TH." diff --git a/src/app/tests/suites/certification/Test_TC_BIND_2_1.yaml b/src/app/tests/suites/certification/Test_TC_BIND_2_1.yaml index 6f5ddedb6cbbef..0be1511b414bf6 100644 --- a/src/app/tests/suites/certification/Test_TC_BIND_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_BIND_2_1.yaml @@ -24,6 +24,28 @@ config: endpoint: 0 tests: + - label: "Pre-Conditions" + verification: | + TH2 supports On/Off server on Endpoint 1. + + TH3 supports On/Off server on Endpoint 2. + + DUT supports On/Off client. + disabled: true + + - label: "Note" + verification: | + 1.This test case requires 4 raspi to execute. 1 raspi as Commissioner. and 1 raspi as dut[Controller] 2 raspi as controllee + + 2. In this example, RASP is used as DUT & it requires additional shell access to execute the controller commands. To support the shell, use the following command to build the all-clusters-app . On the DUT device Use - [scripts/examples/gn_build_example.sh examples/all-clusters-app/linux/ out/all-clusters-app chip_inet_config_enable_ipv4=false chip_build_libshell=true ] - (Vendor DUT must have this provision to execute the controller commands. ) + + 3.Pair TH2 , TH3 with ble-wifi with different discriminator as mentioned below test steps , using the chip-tool running as commissioner in one RPI. + + 4.using the commissioner write the ACL entries on both TH2 and TH3 for allowing to receive commands for onoff cluster from DUT(Controller) + + 5.Hit the Enter button on raspi , you will see a shell prompt (>) , enter help, this would list the command for switch . At the prompt enter switch on ,the "on" command is sent to both TH2 and TH3. and the command and corresponding response can be verified in the log. to test if the TH2/TH3 are turned on or not, you can read the on-off attribute status. Read the status before sending the switch on command and read after sending the command. you should see the value changing. + disabled: true + - label: "Factory Reset DUT" verification: | Vendor specific action, for chip-tool run @@ -53,7 +75,7 @@ tests: verification: | ./chip-tool binding write binding "[{"node" : 2 , "cluster" : "0x0006" , "endpoint" : 1 }, { "node" : 3 , "cluster" : "0x0006" , "endpoint" : 2 }]" 1 1 - + On TH1(Chip-tool), Verify the success response for binding entries [1657797710.456056][3796:3801] CHIP:DMG: status = 0x00 (SUCCESS), @@ -81,19 +103,26 @@ tests: verification: | ./chip-tool accesscontrol write acl "[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, {"fabricIndex": 1, "privilege": 3, "authMode": 2, "subjects": [1], "targets": [{"cluster": 6, "endpoint": 1, "deviceType": null}]}]" 2 0 + on TH1 (Chip-tool), Verify the on command receives success response + [1652330385.328196][3240:3245] CHIP:DMG: StatusIB = [1652330385.328229][3240:3245] CHIP:DMG: { [1652330385.328264][3240:3245] CHIP:DMG: status = 0x00 (SUCCESS), [1652330385.328298][3240:3245] CHIP:DMG: }, - ./chip-tool accesscontrol write acl "[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, {"fabricIndex": 1, "privilege": 3, "authMode": 2, "subjects": [1], "targets": [{"cluster": 6, "endpoint": 1, "deviceType": null}]}]" 3 0 + ./chip-tool accesscontrol write acl "[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, {"fabricIndex": 1, "privilege": 3, "authMode": 2, "subjects": [1], "targets": [{"cluster": 6, "endpoint": 2, "deviceType": null}]}]" 3 0 + + on TH1(Chip-tool), Verify the on command receives success response [1650610345.847274][2626:2631] CHIP:DMG: StatusIB = [1650610345.847317][2626:2631] CHIP:DMG: { [1650610345.847383][2626:2631] CHIP:DMG: status = 0x00 (SUCCESS), [1650610345.847429][2626:2631] CHIP:DMG: }, + NOTE: + Every DUT should have their own mechanism to trigger on/off mechanism ,this for raspi platform + DUT sends on command in the shell > switch on @@ -197,11 +226,15 @@ tests: verification: | ./chip-tool onoff read on-off 2 1 + Verify on TH2 (Chip-tool),the onoff value is set to ON + [1657798291.396477][3835:3841] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 4260513117 [1657798291.396514][3835:3841] CHIP:TOO: OnOff: TRUE ./chip-tool onoff read on-off 3 2 + Verify on TH3 (Chip-tool) ,the onoff value is set to ON + [1657798691.194894][3869:3874] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 470320746 [1657798691.194948][3869:3874] CHIP:TOO: OnOff: TRUE disabled: true @@ -210,6 +243,8 @@ tests: verification: | ./chip-tool binding write binding "[{"node" : 2 , "cluster" : "0x0006" , "endpoint" : 1 }]" 1 1 + Verify on TH1(Chip-tool) ,binding entry receives success response + [1657800844.739833][4000:4006] CHIP:EM: Removed CHIP MessageCounter:244702117 from RetransTable on exchange 12653i [1657800844.739867][4000:4006] CHIP:DMG: WriteClient moving to [ResponseRe] [1657800844.739922][4000:4006] CHIP:DMG: WriteResponseMessage = @@ -312,6 +347,7 @@ tests: verification: | ./chip-tool onoff read on-off 2 1 + Verify on TH2 (Chip-tool),the onoff value is set to OFF [1657803168.769564][4272:4277] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 1968648540 @@ -323,6 +359,8 @@ tests: verification: | ./chip-tool onoff read on-off 3 2 + Verify on TH3 (Chip-tool) ,the onoff value is set to ON + [1657803609.731464][4333:4339] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 3914456390 [1657803609.731521][4333:4339] CHIP:TOO: OnOff: TRUE diff --git a/src/app/tests/suites/certification/Test_TC_BIND_2_2.yaml b/src/app/tests/suites/certification/Test_TC_BIND_2_2.yaml index 370adaa9174646..e55907df9aaf6f 100644 --- a/src/app/tests/suites/certification/Test_TC_BIND_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_BIND_2_2.yaml @@ -26,6 +26,25 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as controller test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Pre-Conditions" + verification: | + TH2 supports On/Off server on Endpoint 1. + TH2 supports Groups server on Endpoint 1. + DUT behaves as Group Admin + TH2 should have an ACL entry with the AuthMode as Group by DUT + DUT supports On/Off client + disabled: true + + - label: "Note" + verification: | + Take 2 raspi, 1 as Lighting app and another one as chip-tool. and use [ nRF52840-DK ]Thread device as light-switch-app. + disabled: true + - label: "Factory Reset DUT" verification: | Vendor specific action, for chip-tool run @@ -34,9 +53,9 @@ tests: - label: "Commission DUT to TH1s fabric" verification: | - Run this cmmd in Thread device terminal: + Advertise the [ light-switch-app ] on [ nRF52840-DK ]Thread device and pair the TH using below cmmd. - ./chip-tool pairing ble-thread 73 hex:0e080000000000010000000300000f35060004001fffe0020810101191022022920708fd6587bfe9821353051000112237945966880899aabbccddeeff030f7070656e5468726561644465696f6c010212340410f23d85dd55d9748cc6a1fd5fccbb1da20c0402a0fff8 20202021 3840 + ./chip-tool pairing ble-thread 74 hex:0e080000000000010000000300000f35060004001fffe0020810101191022022920708fd6587bfe9821353051000112237945966880899aabbccddeeff030f7070656e5468726561644465696f6c010212340410f23d85dd55d9748cc6a1fd5fccbb1da20c0402a0fff8 20202021 3840 disabled: true - label: "TH1 enables DUT as Controller" @@ -46,7 +65,9 @@ tests: - label: "Commission TH2 to TH1s fabric (Node ID = 2)" verification: | - ./chip-tool pairing onnetwork 1 20202021 + Advertise the [Lighting-app] on Raspi and pair the TH using below cmmd. + + ./chip-tool pairing onnetwork 2 20202021 On TH(Chip-tool), Verify the success response @@ -68,6 +89,8 @@ tests: Endpoint 0." PICS: GRPKEY.C.C00.Tx verification: | + Run this cmmd for lighting app in chip-tool: + ./chip-tool groupkeymanagement key-set-write "{"groupKeySetID": 42, "groupKeySecurityPolicy": 0, "epochKey0": "d0d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime0": 2220000,"epochKey1": @@ -115,6 +138,8 @@ tests: list on GroupKeyManagement cluster to TH2 on Endpoint 0" PICS: GRPKEY.C.A0000 verification: | + Run this cmmd for lighting app in chip-tool: + ./chip-tool groupkeymanagement write group-key-map "[{"groupId": 1, "groupKeySetID": 42, "fabricIndex": 1}]" 2 0 On DUT, Verify the success response for GroupKeySetID @@ -130,6 +155,8 @@ tests: Endpoint 1." PICS: G.C.C00.Tx verification: | + Run this cmmd for lighting app in chip-tool: + ./chip-tool groups add-group 0x0001 grp1 2 1 On DUT, Verify the success response for AddGroup @@ -163,7 +190,9 @@ tests: "TH1 writes Binding entry into DUT with Entry 1: Group = The Group ID in the AddGroup command sent from DUT to TH2" verification: | - ./chip-tool binding write binding "[{"group" : "0x0001"}]" 73 1 + Run this cmmd for [ nRF52840-DK ]Thread device in chip-tool: + + ./chip-tool binding write binding "[{"group" : "0x0001"}]" 74 1 On TH, Verify the success response for binding entry @@ -179,31 +208,37 @@ tests: entries" PICS: OO.C.C01.Tx verification: | + Run this cmmd for [ nRF52840-DK ]Thread device in chip-tool: + ./chip-tool accesscontrol write acl "[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null },{"fabricIndex": 1, "privilege": 4, "authMode": 3, "subjects": [1], "targets": null }]" 74 0 - On TH(Chip-tool), Verify the success response for Acl: + On TH1(Chip-tool), Verify the success response for Acl: [1659075680.943991][2687:2692] CHIP:DMG: StatusIB = [1659075680.944052][2687:2692] CHIP:DMG: { [1659075680.944116][2687:2692] CHIP:DMG: status = 0x00 (SUCCESS), - ./chip-tool accesscontrol write acl "[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null },{"fabricIndex": 1, "privilege": 4, "authMode": 3, "subjects": [1], "targets": null }]" 1 0 + Run this cmmd for lighting app in chip-tool: - On TH(Chip-tool), Verify the success response for Acl: + ./chip-tool accesscontrol write acl "[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null },{"fabricIndex": 1, "privilege": 4, "authMode": 3, "subjects": [1], "targets": null }]" 2 0 + + On TH1(Chip-tool), Verify the success response for Acl: [1659075680.943991][2687:2692] CHIP:DMG: StatusIB = [1659075680.944052][2687:2692] CHIP:DMG: { [1659075680.944116][2687:2692] CHIP:DMG: status = 0x00 (SUCCESS), - Press button no.2 on thread board + Press button no.2 on [ nRF52840-DK ]thread board disabled: true - label: "TH1 reads OnOff attribute from TH2 (Endpoint 1)" PICS: OO.C.C01.Tx verification: | - ./chip-tool onoff read on-off 1 1 + Run this cmmd for lighting app in chip-tool: + + ./chip-tool onoff read on-off 2 1 - On TH (Chip-tool), Verify the value is set to ON + On TH1 (Chip-tool), Verify the value is set to ON [1657717900.832851][4381:4386] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 1558029216 [1657717900.832890][4381:4386] CHIP:TOO: OnOff: TRUE @@ -211,9 +246,11 @@ tests: - label: "TH1 removes all the binding entries from DUT" verification: | - ./chip-tool binding write binding "[]" 73 1 + Run this cmmd for [ nRF52840-DK ]Thread device in chip-tool: - On TH(Chip-tool), Verify the success response for removing binding entry + ./chip-tool binding write binding "[]" 74 1 + + On TH1(Chip-tool), Verify the success response for removing binding entry [1659362827.431927][2469:2475] CHIP:DMG: StatusIB = [1659362827.431996][2469:2475] CHIP:DMG: { @@ -226,15 +263,17 @@ tests: entries" PICS: OO.C.C00.Tx verification: | - Press button no.2 on thread board + Press button no.2 on [ nRF52840-DK ] thread board disabled: true - label: "TH1 reads OnOff attribute from TH2 (Endpoint 1)" PICS: OO.C.C01.Tx verification: | - ./chip-tool onoff read on-off 1 1 + Run this cmmd for lighting app in chip-tool: + + ./chip-tool onoff read on-off 2 1 - On TH(Chip-tool), Verify the value is set to ON + On TH1(Chip-tool), Verify the value is set to ON [1657718251.169765][4425:4431] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 1558029223 [1657718251.169817][4425:4431] CHIP:TOO: OnOff: TRUE diff --git a/src/app/tests/suites/certification/Test_TC_BIND_2_3.yaml b/src/app/tests/suites/certification/Test_TC_BIND_2_3.yaml index 5422042e31e77c..3457cdc91e536e 100644 --- a/src/app/tests/suites/certification/Test_TC_BIND_2_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_BIND_2_3.yaml @@ -26,6 +26,25 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as controller test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Pre-Conditions" + verification: | + TH1 enables DUT to handle group communication + TH2 supports On/Off server on Endpoint 1 + TH2 supports Groups server on Endpoint 1 + TH2 should have an ACL entry with the AuthMode as Group by TH1 + DUT supports On/Off client + disabled: true + + - label: "Note" + verification: | + Take 2 raspi, 1 as Lighting app and another one as chip-tool. and use [ nRF52840-DK ]Thread device as light-switch-app. + disabled: true + - label: "Factory Reset DUT" verification: | Vendor specific action, for chip-tool run @@ -34,7 +53,7 @@ tests: - label: "Commission DUT to TH1s fabric" verification: | - Run this cmmd in Thread device terminal: + Advertise the [ light-switch-app ] on [ nRF52840-DK ]Thread device and pair the TH using below cmmd. ./chip-tool pairing ble-thread 74 hex:0e080000000000010000000300000f35060004001fffe0020810101191022022920708fd6587bfe9821353051000112237945966880899aabbccddeeff030f7070656e5468726561644465696f6c010212340410f23d85dd55d9748cc6a1fd5fccbb1da20c0402a0fff8 20202021 3840 disabled: true @@ -46,9 +65,11 @@ tests: - label: "Commission TH2 to TH1s fabric (Node ID = 2)" verification: | - ./chip-tool pairing onnetwork 1 20202021 + Advertise the [Lighting-app] on Raspi and pair the TH using below cmmd. - On TH(Chip-tool), Verify the success response + ./chip-tool pairing onnetwork 2 20202021 + + On TH1(Chip-tool), Verify the success response [1659104612.592373][62366:62371] CHIP:DMG: SuppressResponse = true, [1659104612.592399][62366:62371] CHIP:DMG: InteractionModelRevision = 1 @@ -67,13 +88,16 @@ tests: "TH1 sends KeySetWrite command to GroupKeyManagement cluster to TH2 on Endpoint 0." verification: | + Run this cmmd for [ nRF52840-DK ]Thread device in chip-tool: + + ./chip-tool groupkeymanagement key-set-write "{"groupKeySetID": 42, "groupKeySecurityPolicy": 0, "epochKey0": "d0d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime0": 2220000,"epochKey1": "d1d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime1": 2220001,"epochKey2": "d2d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime2": 2220002 }" 74 0 - On TH(Chip-tool), Verify the success response for KeySetWrite + On TH1(Chip-tool), Verify the success response for KeySetWrite [1657719041.075123][4541:4546] CHIP:DMG: ICR moving to [ResponseRe] [1657719041.075174][4541:4546] CHIP:DMG: InvokeResponseMessage = @@ -105,16 +129,16 @@ tests: [1657719041.075988][4541:4546] CHIP:DMG: [1657719041.076012][4541:4546] CHIP:DMG: InteractionModelRevision = 1 - + Run this cmmd for lighting app in chip-tool: ./chip-tool groupkeymanagement key-set-write "{"groupKeySetID": 42, "groupKeySecurityPolicy": 0, "epochKey0": "d0d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime0": 2220000,"epochKey1": "d1d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime1": 2220001,"epochKey2": - "d2d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime2": 2220002 }" 1 0 + "d2d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime2": 2220002 }" 2 0 [1657719041.076036][4541:4546] CHIP:DMG: } - On TH, Verify the success response for KeySetWrite + On TH1, Verify the success response for KeySetWrite [1657719041.075743][4541:4546] CHIP:DMG: status = 0x00 (SUCCESS), disabled: true @@ -123,9 +147,11 @@ tests: "TH1 binds GroupId with GroupKeySetID in the GroupKeyMap attribute list on GroupKeyManagement cluster to TH2 on Endpoint 0" verification: | + Run this cmmd for [ nRF52840-DK ]Thread device in chip-tool: + ./chip-tool groupkeymanagement write group-key-map "[{"groupId": 1, "groupKeySetID": 42, "fabricIndex": 1}]" 74 0 - On TH(Chip-tool), Verify the success response for GroupKeySetID + On TH1(Chip-tool), Verify the success response for GroupKeySetID [1657719130.464175][4557:4562] CHIP:DMG: StatusIB = [1657719130.464214][4557:4562] CHIP:DMG: { @@ -133,11 +159,11 @@ tests: [1657719130.464298][4557:4562] CHIP:DMG: }, [1657719130.464342][4557:4562] CHIP:DMG: - - ./chip-tool groupkeymanagement write group-key-map "[{"groupId": 1, "groupKeySetID": 42, "fabricIndex": 1}]" 1 0 + Run this cmmd for lighting app in chip-tool: + ./chip-tool groupkeymanagement write group-key-map "[{"groupId": 1, "groupKeySetID": 42, "fabricIndex": 1}]" 2 0 - On TH(Chip-tool), Verify the success response for GroupKeySetID + On TH1(Chip-tool), Verify the success response for GroupKeySetID [1657719130.464175][4557:4562] CHIP:DMG: StatusIB = [1657719130.464214][4557:4562] CHIP:DMG: { @@ -150,9 +176,11 @@ tests: "TH1 sends AddGroup( Group Name and Group-ID) Command to TH2 on Endpoint 1." verification: | + Run this cmmd for [ nRF52840-DK ]Thread device in chip-tool: + ./chip-tool groups add-group 0x0001 grp1 74 1 - On TH(Chip-tool), Verify the success response for AddGroup + On TH1(Chip-tool), Verify the success response for AddGroup [1657719097.788236][4548:4554] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0004 Command 0x0000_0000 [1657719097.788325][4548:4554] CHIP:TOO: AddGroupResponse: { @@ -161,10 +189,11 @@ tests: [1657719097.788418][4548:4554] CHIP:TOO: } + Run this cmmd for lighting app in chip-tool: - ./chip-tool groups add-group 0x0001 grp1 1 1 + ./chip-tool groups add-group 0x0001 grp1 2 1 - On TH(Chip-tool), Verify the success response for AddGroup + On TH1(Chip-tool), Verify the success response for AddGroup [1657719097.788236][4548:4554] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0004 Command 0x0000_0000 [1657719097.788325][4548:4554] CHIP:TOO: AddGroupResponse: { @@ -195,9 +224,11 @@ tests: "TH1 writes Binding entry into DUT with Entry 1: Group = The Group ID in the AddGroup command sent from TH1 to TH2" verification: | + Run this cmmd for [ nRF52840-DK ]Thread device in chip-tool: + ./chip-tool binding write binding "[{"group" : "0x0001"}]" 74 1 - On TH(Chip-tool), Verify the success response for binding entry + On TH1(Chip-tool), Verify the success response for binding entry [1657719251.763323][4597:4602] CHIP:DMG: StatusIB = [1657719251.763360][4597:4602] CHIP:DMG: { @@ -215,29 +246,35 @@ tests: entries" PICS: OO.C.C01.Tx verification: | - ./chip-tool accesscontrol write acl "[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null },{"fabricIndex": 1, "privilege": 4, "authMode": 3, "subjects": [1], "targets": null }]" 74 0 + Run this cmmd for [ nRF52840-DK ]Thread device in chip-tool: + + ./chip-tool accesscontrol write acl "[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null },{"fabricIndex": 1, "privilege": 4, "authMode": 3, "subjects": [1], "targets": null }]" 74 0 - On TH(Chip-tool), Verify the success response for Acl: + On TH1(Chip-tool), Verify the success response for Acl: [1659075680.943991][2687:2692] CHIP:DMG: StatusIB = [1659075680.944052][2687:2692] CHIP:DMG: { [1659075680.944116][2687:2692] CHIP:DMG: status = 0x00 (SUCCESS), - ./chip-tool accesscontrol write acl "[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null },{"fabricIndex": 1, "privilege": 4, "authMode": 3, "subjects": [1], "targets": null }]" 1 0 + Run this cmmd for lighting app in chip-tool: - On TH(Chip-tool), Verify the success response for Acl: + ./chip-tool accesscontrol write acl "[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null },{"fabricIndex": 1, "privilege": 4, "authMode": 3, "subjects": [1], "targets": null }]" 2 0 + + On TH1(Chip-tool), Verify the success response for Acl: [1659075680.943991][2687:2692] CHIP:DMG: StatusIB = [1659075680.944052][2687:2692] CHIP:DMG: { [1659075680.944116][2687:2692] CHIP:DMG: status = 0x00 (SUCCESS), - Press button no.2 on thread board + Press button no.2 on nrf52840 DK thread board disabled: true - label: "TH1 reads OnOff attribute from TH2 (Endpoint 1)" PICS: OO.C.C01.Tx verification: | - ./chip-tool onoff read on-off 1 1 + Run this cmmd for lighting app in chip-tool: + + ./chip-tool onoff read on-off 2 1 On TH(Chip-tool), Verify the onoff value is set to ON @@ -247,9 +284,11 @@ tests: - label: "TH1 removes all the binding entries from DUT" verification: | + Run this cmmd for [ nRF52840-DK ]Thread device in chip-tool: + ./chip-tool binding write binding "[]" 74 1 - On TH(Chip-tool), Verify the success response for removing binding entry + On TH1(Chip-tool), Verify the success response for removing binding entry [1659362827.431927][2469:2475] CHIP:DMG: StatusIB = [1659362827.431996][2469:2475] CHIP:DMG: { @@ -262,15 +301,17 @@ tests: entries" PICS: OO.C.C00.Tx verification: | - Press button no.2 on thread board + Press button no.2 on nrf52840 DK thread board disabled: true - label: "TH1 reads OnOff attribute from TH2 (Endpoint 1)" PICS: OO.C.C01.Tx verification: | - ./chip-tool onoff read on-off 1 1 + Run this cmmd for lighting app in chip-tool: - On TH(Chip-tool), Verify the onoff value is set to ON + ./chip-tool onoff read on-off 2 1 + + On TH1(Chip-tool), Verify the onoff value is set to ON [1657719448.858149][4636:4641] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 3526720174 [1657719448.858183][4636:4641] CHIP:TOO: OnOff: TRUE diff --git a/src/app/tests/suites/certification/Test_TC_BINFO_2_2.yaml b/src/app/tests/suites/certification/Test_TC_BINFO_2_2.yaml index 0ad5188ed749a4..e41fe1c356098f 100644 --- a/src/app/tests/suites/certification/Test_TC_BINFO_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_BINFO_2_2.yaml @@ -24,6 +24,19 @@ config: endpoint: 0 tests: + - label: "Precondition" + verification: | + 1. DUT and TH can interact with each other. DUT is commissioned. + + 2. BINFO.S.A0009(SoftwareVersion) - TH reads SoftwareVersion attribute from DUT and saves for future use + + 3. BINFO.S.A0011(Reachable) - TH reads Reachable attribute from DUT and saves for future use(should be true) + + 4. BINFO.S.E00(StartUp) && BINFO.S.E01(ShutDown) && BINFO.S.E02(Leave) - TH subscribes to StartUp, ShutDown, Leave and ReachableChanged events on the Basic Information cluster of the DUT + + 5. TH saves the FabricIndex during commissioning + disabled: true + - label: "Reboot the DUT TH reads the StartUp event from DUT" PICS: BINFO.S.E00 verification: | @@ -63,7 +76,7 @@ tests: 2. run below command in interactive mode shell and Turn down the DUT - verify that ShutDown event as priority set has CRITICAL on TH(chip-tool) + verify that ShutDown event as priority set has CRITICAL on TH(Chip-tool) CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Event 0x0000_0001 [1653050528.900202][119367:119372] CHIP:TOO: Event number: 5 diff --git a/src/app/tests/suites/certification/Test_TC_BOOL_2_2.yaml b/src/app/tests/suites/certification/Test_TC_BOOL_2_2.yaml index a9958cd5eed5cb..27166db07e5fbe 100644 --- a/src/app/tests/suites/certification/Test_TC_BOOL_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_BOOL_2_2.yaml @@ -24,9 +24,14 @@ config: endpoint: 0 tests: + - label: "Pre-Conditions" + verification: | + This test case is verified after the device is provisioned. Pls provision device first, Pass appropriate nodeID in the below command + disabled: true + - label: "Commission DUT to TH" verification: | - verification step to be updated. + disabled: true - label: "Bring the DUT into a state so StateValue is FALSE" @@ -80,38 +85,26 @@ tests: PICS: BOOL.M.ManuallyControlled && BOOL.S.E00 && BOOL.S.A0000 verification: | On TH(chip-tool), verify the StateValue value as FALSE - - [1646119162.628169][3311:3316] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0045 Attribute 0x0000_0000DataVersion: 2127727071 - [1646119162.628207][3311:3316] CHIP:TOO: StateValue: FALSE disabled: true - label: "TH reads the StateValue attribute from the DUT" PICS: BOOL.M.ManuallyControlled && BOOL.S.E00 && BOOL.S.A0000 verification: | - ./chip-tool booleanstate read state-value 1 1 + booleanstate read state-value 1 1 On TH(chip-tool), verify the StateValue value as FALSE - - [1646118838.087500][3279:3284] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0045 Attribute 0x0000_0000DataVersion: 2127727071 - [1646118838.087536][3279:3284] CHIP:TOO: StateValue: FALSE disabled: true - label: "Bring the DUT into a state so StateValue is TRUE" PICS: BOOL.M.ManuallyControlled && BOOL.S.E00 && BOOL.S.A0000 verification: | On TH(chip-tool), verify the StateValue value as TRUE - - [1646119162.628169][3311:3316] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0045 Attribute 0x0000_0000DataVersion: 2127727071 - [1646119162.628207][3311:3316] CHIP:TOO: StateValue: TRUE disabled: true - label: "TH reads the StateValue attribute from the DUT" PICS: BOOL.M.ManuallyControlled && BOOL.S.E00 && BOOL.S.A0000 verification: | - ./chip-tool booleanstate read state-value 1 1 + booleanstate read state-value 1 1 On TH(chip-tool), verify the StateValue value as TRUE - - [1646118838.087500][3279:3284] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0045 Attribute 0x0000_0000DataVersion: 2127727071 - [1646118838.087536][3279:3284] CHIP:TOO: StateValue: TRUE disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_BRBINFO_1_1.yaml b/src/app/tests/suites/certification/Test_TC_BRBINFO_1_1.yaml index 3e19e783a71e9b..f4eebc4d1089df 100644 --- a/src/app/tests/suites/certification/Test_TC_BRBINFO_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_BRBINFO_1_1.yaml @@ -23,9 +23,24 @@ config: endpoint: 0 tests: + - label: "" + verification: | + Validate these PICS items of attributes which are not allowed in this server cluster implementation - these PICS items should all be FALSE, if any of them is TRUE then FAIL the test + + BRBINFO.S.A0000(DataModelRevision) + + BRBINFO.S.A0004(ProductID) + + BRBINFO.S.A0006(Location) + + BRBINFO.S.A0010(LocalConfigDisabled) + + BRBINFO.S.A0013(CapabilityMinima) + disabled: true + - label: "Commission DUT to TH (if not already done)" verification: | - verification step to be updated. + disabled: true - label: "TH reads the ClusterRevision from DUT" diff --git a/src/app/tests/suites/certification/Test_TC_BRBINFO_2_1.yaml b/src/app/tests/suites/certification/Test_TC_BRBINFO_2_1.yaml index 8ec428966a1037..af032127cea265 100644 --- a/src/app/tests/suites/certification/Test_TC_BRBINFO_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_BRBINFO_2_1.yaml @@ -26,8 +26,9 @@ tests: verification: | ./chip-tool bridgeddevicebasic read vendor-name 1 3 - Verify VendorName is of type string and is less than or equal to 32 bytes on TH(chip-tool) Log: + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + Example Log: [1656495199.434300][2158:2163] CHIP:TOO: VendorName: TEST_VENDOR disabled: true @@ -46,8 +47,9 @@ tests: verification: | ./chip-tool bridgeddevicebasic read vendor-name 1 3 - Verify VendorName is not chnged when compared to step 1 on TH(chip-tool) Log + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + Example Log: [1656495199.434300][2158:2163] CHIP:TOO: VendorName: TEST_VENDOR disabled: true @@ -56,8 +58,9 @@ tests: verification: | ./chip-tool bridgeddevicebasic read vendor-id 1 3 - Veify VendorID value is in range of 0x0001 to 0xFFF0 on TH(chip-tool) Log + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + Example Log: [1656495322.252171][2177:2182] CHIP:TOO: VendorID: 65521 disabled: true @@ -76,8 +79,9 @@ tests: verification: | ./chip-tool bridgeddevicebasic read vendor-id 1 3 - Verify VendorID is not chnged when compared to step 8 on TH(chip-tool) Log + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + Example Log: [1656495322.252171][2177:2182] CHIP:TOO: VendorID: 65521 disabled: true @@ -86,8 +90,9 @@ tests: verification: | ./chip-tool bridgeddevicebasic read product-name 1 3 - Verify ProductName has human readable string and is less or equal to 32 bytes on TH(chip-tool) Log + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + Example Log: [1656495708.412745][2200:2205] CHIP:TOO: ProductName: TEST_PRODUCT disabled: true @@ -107,8 +112,9 @@ tests: verification: | ./chip-tool bridgeddevicebasic read product-name 1 3 - Verify ProductName is not chnged when compared to step 11 on TH(chip-tool) Log + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + Example Log: [1656495708.412745][2200:2205] CHIP:TOO: ProductName: TEST_PRODUCT disabled: true @@ -117,8 +123,9 @@ tests: verification: | ./chip-tool bridgeddevicebasic read node-label 1 3 - Verify the value of node-label is type of string and contains length between 0 and 32 in TH(chip-tool) Log: + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + Example Log: [1657696463.081741][15476:15481] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_0039 Attribute 0x0000_0005 DataVersion: 2577979325 [1657696463.081791][15476:15481] CHIP:TOO: NodeLabel: Light 1 disabled: true @@ -132,15 +139,15 @@ tests: NOTE the quotes: single-quote/double-quote/string/double-quote/single-quote - On TH(chip-tool) verify that DUT sends a success response - [1656495932.122094][2236:2241] CHIP:DMG: } - [1656495932.122264][2236:2241] CHIP:DMG: - [1656495932.122332][2236:2241] CHIP:DMG: StatusIB = - [1656495932.122398][2236:2241] CHIP:DMG: { - [1656495932.122466][2236:2241] CHIP:DMG: status = 0x00 (SUCCESS), - [1656495932.122538][2236:2241] CHIP:DMG: }, - [1656495932.122602][2236:2241] CHIP:DMG: - [1656495932.122660][2236:2241] CHIP:DMG: }, + + [1660839701.840432][2444:2449] CHIP:DMG: } + [1660839701.840505][2444:2449] CHIP:DMG: + [1660839701.840578][2444:2449] CHIP:DMG: StatusIB = + [1660839701.840661][2444:2449] CHIP:DMG: { + [1660839701.840742][2444:2449] CHIP:DMG: status = 0x88 (UNSUPPORTED_WRITE), + [1660839701.840827][2444:2449] CHIP:DMG: }, + [1660839701.840905][2444:2449] CHIP:DMG: + [1660839701.840973][2444:2449] CHIP:DMG: }, disabled: true - label: "TH reads NodeLabel" @@ -159,8 +166,9 @@ tests: verification: | ./chip-tool bridgeddevicebasic read hardware-version 1 3 - Verify HardwareVersion is in range of 0 to 65534 on TH(chip-tool) Log + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + Example Log: [1656496175.564718][2302:2307] CHIP:TOO: HardwareVersion: 0 disabled: true @@ -179,8 +187,9 @@ tests: verification: | ./chip-tool bridgeddevicebasic read hardware-version 1 3 - Verify HardwareVersion is not chnged when compared to step 21 on TH(chip-tool) Log + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + Example Log: [1656496175.564718][2302:2307] CHIP:TOO: HardwareVersion: 0 disabled: true @@ -189,8 +198,9 @@ tests: verification: | ./chip-tool bridgeddevicebasic read hardware-version-string 1 3 - Verify HardwareVersionString value is type of string and in range of 1 to 64 bytes + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + Example Log: [1656496257.298675][2315:2320] CHIP:TOO: HardwareVersionString: TEST_VERSION disabled: true @@ -209,8 +219,9 @@ tests: verification: | ./chip-tool bridgeddevicebasic read hardware-version-string 1 3 - Verify HardwareVersionString is not chnged when compared to step 24 on TH(chip-tool) Log + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + Example Log: [1656496257.298675][2315:2320] CHIP:TOO: HardwareVersionString: TEST_VERSION disabled: true @@ -219,8 +230,9 @@ tests: verification: | ./chip-tool bridgeddevicebasic read software-version 1 3 - Verify SoftwareVersion value is in range of 0 to 4294967294 on TH(chip-tol) Log + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + Example Log: [1656496411.609866][2348:2353] CHIP:TOO: SoftwareVersion: 1 disabled: true @@ -239,8 +251,9 @@ tests: verification: | ./chip-tool bridgeddevicebasic read software-version 1 3 - Verify SoftwareVersion is not chnged when compared to step 27 on TH(chip-tool) Log + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + Example Log: [1656496411.609866][2348:2353] CHIP:TOO: SoftwareVersion: 1 disabled: true @@ -249,8 +262,9 @@ tests: verification: | ./chip-tool bridgeddevicebasic read software-version-string 1 3 - Verify the SoftwareVersionString is of type string and has length of 1 to 64 bytes + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + Example Log: [1656496498.568951][2362:2367] CHIP:TOO: SoftwareVersionString: 1.0 disabled: true @@ -270,8 +284,9 @@ tests: verification: | ./chip-tool bridgeddevicebasic read software-version-string 1 3 - Verify SoftwareVersionString is not chnged when compared to step 1 on TH(chip-tool) Log + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + Example Log: [1656496498.568951][2362:2367] CHIP:TOO: SoftwareVersionString: 1.0 disabled: true @@ -280,8 +295,9 @@ tests: verification: | ./chip-tool bridgeddevicebasic read manufacturing-date 1 3 - Verify manufacturing date is of type string and has length of range 8 to 16 bytes on TH() + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + Example Log: [1656496661.777852][2388:2393] CHIP:TOO: ManufacturingDate: 20200101 disabled: true @@ -300,8 +316,9 @@ tests: verification: | ./chip-tool bridgeddevicebasic read manufacturing-date 1 3 - Verify VendorName is not chnged when compared to step 1 on TH(chip-tool) Log + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + Example Log: [1656496661.777852][2388:2393] CHIP:TOO: ManufacturingDate: 20200101 disabled: true @@ -310,6 +327,10 @@ tests: verification: | ./chip-tool bridgeddevicebasic read part-number 1 3 + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + + Example Log: + [1656496800.941788][2405:2410] CHIP:TOO: PartNumber: 1234 disabled: true @@ -328,8 +349,9 @@ tests: verification: | ./chip-tool bridgeddevicebasic read part-number 1 3 - Verify VendorName is not chnged when compared to step 1 on TH(chip-tool) Log + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + Example Log: [1656496800.941788][2405:2410] CHIP:TOO: PartNumber: 1234 disabled: true @@ -338,6 +360,10 @@ tests: verification: | ./chip-tool bridgeddevicebasic read product-url 1 3 + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + + Example Log: + [1656497181.118653][2436:2441] CHIP:TOO: ProductURL: https://example.com/myproduct disabled: true @@ -356,8 +382,9 @@ tests: verification: | ./chip-tool bridgeddevicebasic read product-url 1 3 - Verify VendorName is not chnged when compared to step 1 on TH(chip-tool) Log + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + Example Log: [1656497181.118653][2436:2441] CHIP:TOO: ProductURL: https://example.com/myproduct disabled: true @@ -366,6 +393,10 @@ tests: verification: | ./chip-tool bridgeddevicebasic read product-label 1 3 + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + + Example Log: + [1656501313.811305][2602:2607] CHIP:TOO: ProductLabel: ABCD disabled: true @@ -374,8 +405,9 @@ tests: verification: | ./chip-tool bridgeddevicebasic write product-label newproductlabel 1 3 - Verify response has unsupported write on TH(chip-tool) Log: + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + Example Log: [1656495259.991989][2164:2169] CHIP:TOO: Response Failure: IM Error 0x00000588: General error: 0x88 (UNSUPPORTED_WRITE) disabled: true @@ -384,8 +416,9 @@ tests: verification: | ./chip-tool bridgeddevicebasic read product-label 1 3 - Verify VendorName is not chnged when compared to step 1 on TH(chip-tool) Log + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + Example Log: [1656501313.811305][2602:2607] CHIP:TOO: ProductLabel: ABCD disabled: true @@ -394,6 +427,10 @@ tests: verification: | ./chip-tool bridgeddevicebasic read serial-number 1 3 + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + + Example Log: + [1656501452.183890][2624:2630] CHIP:TOO: SerialNumber: 5678 disabled: true @@ -412,8 +449,9 @@ tests: verification: | ./chip-tool bridgeddevicebasic read serial-number 1 3 - Verify VendorName is not chnged when compared to step 1 on TH(chip-tool) Log + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + Example Log: [1656501452.183890][2624:2630] CHIP:TOO: SerialNumber: 5678 disabled: true @@ -434,9 +472,9 @@ tests: false." PICS: BRBINFO.S.A0011 verification: | - ./chip-tool bridgeddevicebasic write-by-id 0x0005 ‘“false”’ 1 0 + ./chip-tool bridgeddevicebasic write-by-id 0x0005 false 1 0 + - Verify response has unsupported write on TH(chip-tool) Log: On TH verify that, TH receives UNSUPPORTED_WRITE response as status [1656496372.884955][2340:2345] CHIP:DMG: } @@ -461,6 +499,10 @@ tests: verification: | ./chip-tool bridgeddevicebasic read unique-id 1 3 + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + + Example Log: + [1656501734.253827][2673:2679] CHIP:TOO: UniqueID: 30789FE4FCF832C9 disabled: true @@ -479,7 +521,8 @@ tests: verification: | ./chip-tool bridgeddevicebasic read unique-id 1 3 - Verify VendorName is not chnged when compared to step 1 on TH(chip-tool) Log + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + Example Log: [1656501734.253827][2673:2679] CHIP:TOO: UniqueID: 30789FE4FCF832C9 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_BRBINFO_2_2.yaml b/src/app/tests/suites/certification/Test_TC_BRBINFO_2_2.yaml index ed625f1badc7e6..8f9c01ccd13edb 100644 --- a/src/app/tests/suites/certification/Test_TC_BRBINFO_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_BRBINFO_2_2.yaml @@ -21,6 +21,19 @@ config: endpoint: 0 tests: + - label: "Precondition" + verification: | + 1. DUT and TH can interact with each other. DUT is commissioned. + + 2. TH reads SoftwareVersion attribute from DUT and saves for future use + + 3. TH reads Reachable attribute from DUT and saves for future use + + 4. TH subscribes to StartUp, ShutDown, ReachableChanged and Leave events on the Basic cluster of the DUT + + 5. TH saves the FabricIndex during commissioning + disabled: true + - label: "Reboot the DUT (i.e. restart by power cycle, not by making it factory new) TH receives the StartUp event from DUT" diff --git a/src/app/tests/suites/certification/Test_TC_BRBINFO_2_3.yaml b/src/app/tests/suites/certification/Test_TC_BRBINFO_2_3.yaml index ac004b610d315b..343d47dbd49355 100644 --- a/src/app/tests/suites/certification/Test_TC_BRBINFO_2_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_BRBINFO_2_3.yaml @@ -23,18 +23,18 @@ config: tests: - label: "Note" verification: | - Note: : For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. disabled: true - - label: "Note" + - label: "Precondition" verification: | - For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + 1. Commission TH to DUT disabled: true - label: "DUT reads VendorName from the TH" PICS: BRBINFO.C.A0001 verification: | - ./chip-tool bridgeddevicebasic read vendor-name 1 0 + ./chip-tool bridgeddevicebasic read vendor-name 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE @@ -66,7 +66,7 @@ tests: - label: "DUT reads VendorID from the TH" PICS: BRBINFO.C.A0002 verification: | - ./chip-tool bridgeddevicebasic read vendor-id 1 0 + ./chip-tool bridgeddevicebasic read vendor-id 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE @@ -120,7 +120,7 @@ tests: - label: "DUT reads ProductName from the TH" PICS: BRBINFO.C.A0003 verification: | - ./chip-tool bridgeddevicebasic read product-name 1 0 + ./chip-tool bridgeddevicebasic read product-name 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE @@ -150,7 +150,7 @@ tests: - label: "DUT reads NodeLabel from the TH" PICS: BRBINFO.C.A0005 verification: | - ./chip-tool bridgeddevicebasic read node-label 1 0 + ./chip-tool bridgeddevicebasic read node-label 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE @@ -183,7 +183,7 @@ tests: - label: "DUT reads Location from the TH" PICS: BRBINFO.C.A0006 verification: | - ./chip-tool bridgeddevicebasic read location 1 0 + ./chip-tool bridgeddevicebasic read location 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE @@ -216,7 +216,7 @@ tests: - label: "DUT reads HardwareVersion from the TH" PICS: BRBINFO.C.A0007 verification: | - ./chip-tool bridgeddevicebasic read hardware-version-string 1 0 + ./chip-tool bridgeddevicebasic read hardware-version 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE @@ -249,7 +249,7 @@ tests: - label: "DUT reads HardwareVersionString from the TH" PICS: BRBINFO.C.A0008 verification: | - ./chip-tool bridgeddevicebasic read hardware-version-string 1 0 + ./chip-tool bridgeddevicebasic read hardware-version-string 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE @@ -283,7 +283,7 @@ tests: - label: "DUT reads SoftwareVersion from the TH" PICS: BRBINFO.C.A0009 verification: | - ./chip-tool bridgeddevicebasic read software-version 1 0 + ./chip-tool bridgeddevicebasic read software-version 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE @@ -317,7 +317,7 @@ tests: - label: "DUT reads SoftwareVersionString from the TH" PICS: BRBINFO.C.A000a verification: | - ./chip-tool bridgeddevicebasic read software-version-string 1 0 + ./chip-tool bridgeddevicebasic read software-version-string 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE @@ -351,7 +351,7 @@ tests: - label: "DUT reads ManufacturingDate from the TH" PICS: BRBINFO.C.A000b verification: | - ./chip-tool bridgeddevicebasic read manufacturing-date 1 0 + ./chip-tool bridgeddevicebasic read manufacturing-date 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE @@ -385,7 +385,7 @@ tests: - label: "DUT reads PartNumber from the TH" PICS: BRBINFO.C.A000c verification: | - ./chip-tool bridgeddevicebasic read part-number 1 0 + ./chip-tool bridgeddevicebasic read part-number 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE @@ -419,7 +419,7 @@ tests: - label: "DUT reads ProductURL from the TH" PICS: BRBINFO.C.A000d verification: | - ./chip-tool bridgeddevicebasic read product-url 1 0 + ./chip-tool bridgeddevicebasic read product-url 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE @@ -453,7 +453,7 @@ tests: - label: "DUT reads ProductLabel from the TH" PICS: BRBINFO.C.A000e verification: | - ./chip-tool bridgeddevicebasic read product-label 1 0 + ./chip-tool bridgeddevicebasic read product-label 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE @@ -487,7 +487,7 @@ tests: - label: "DUT reads SerialNumber from the TH" PICS: BRBINFO.C.A000f verification: | - ./chip-tool bridgeddevicebasic read serial-number 1 0 + ./chip-tool bridgeddevicebasic read serial-number 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE @@ -521,7 +521,7 @@ tests: - label: "DUT reads Reachable from the TH" PICS: BRBINFO.C.A0011 verification: | - ./chip-tool bridgeddevicebasic read reachable 1 0 + ./chip-tool bridgeddevicebasic read reachable 1 3 Verify ReadRequestMessage is displayed on TH(all-clusters-app) Log [1659966974.431316][3334:3334] CHIP:IM: Received Read request @@ -552,7 +552,7 @@ tests: - label: "DUT reads UniqueID from the TH" PICS: BRBINFO.C.A0012 verification: | - ./chip-tool bridgeddevicebasic read unique-id 1 0 + ./chip-tool bridgeddevicebasic read unique-id 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE diff --git a/src/app/tests/suites/certification/Test_TC_BR_4.yaml b/src/app/tests/suites/certification/Test_TC_BR_4.yaml index e836b98ba2ffdf..0effe409a9420b 100644 --- a/src/app/tests/suites/certification/Test_TC_BR_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_BR_4.yaml @@ -29,6 +29,14 @@ tests: For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. disabled: true + - label: "Precondition" + verification: | + 1. Test Harness simulating a bridge with some bridged devices; can use the bridge-app for this purpose + + 2.DUT (client and commissioner) + + disabled: true + - label: "Start bridge-app on TH. Commission TH to DUT. Monitor traffic between DUT and TH." @@ -37,173 +45,352 @@ tests: ./chip-tool pairing ethernet 1 20202021 3840 fe80::e65f:1ff:fe0f:2753 5540 - Verify DeviceTypeList for available EP - ./chip-tool descriptor read device-list 1 1 Verify in TH(all-clusters-app) Log: - [1657002313.871608][3977:3982] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 3021853414 - [1657002313.871680][3977:3982] CHIP:TOO: device list: 1 entries - [1657002313.871740][3977:3982] CHIP:TOO: [1]: { - [1657002313.871788][3977:3982] CHIP:TOO: Type: 14 - [1657002313.871821][3977:3982] CHIP:TOO: Revision: 1 - [1657002313.871852][3977:3982] :TOOCHIP: } + [1659972694.732632][3652:3652] CHIP:IM: Received Read request + [1659972694.732712][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972694.732739][3652:3652] CHIP:DMG: { + [1659972694.732761][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972694.732800][3652:3652] CHIP:DMG: [ + [1659972694.732824][3652:3652] CHIP:DMG: AttributePathIB = + [1659972694.732866][3652:3652] CHIP:DMG: { + [1659972694.732905][3652:3652] CHIP:DMG: Endpoint = 0x1, + [1659972694.732940][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972694.732980][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972694.733009][3652:3652] CHIP:DMG: } + [1659972694.733066][3652:3652] CHIP:DMG: + [1659972694.733092][3652:3652] CHIP:DMG: ], + [1659972694.733128][3652:3652] CHIP:DMG: + [1659972694.733154][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972694.733188][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972694.733211][3652:3652] CHIP:DMG: }, + [1659972694.733292][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972694.733401][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972694.733429][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + [1659972694.733460][3652:3652] CHIP:DMG: Reading attribute: Cluster=0x0000_001D Endpoint=1 AttributeId=0x0000_0000 (expanded=0) + [1659972694.733487][3652:3652] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_001D e=1 p=v + [1659972694.733520][3652:3652] CHIP:DMG: AccessControl: allowed + + + ./chip-tool descriptor read device-list 1 2 + + Verify in TH(all-clusters-app) Log: + [1659972694.732632][3652:3652] CHIP:IM: Received Read request + [1659972694.732712][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972694.732739][3652:3652] CHIP:DMG: { + [1659972694.732761][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972694.732800][3652:3652] CHIP:DMG: [ + [1659972694.732824][3652:3652] CHIP:DMG: AttributePathIB = + [1659972694.732866][3652:3652] CHIP:DMG: { + [1659972694.732905][3652:3652] CHIP:DMG: Endpoint = 0x2, + [1659972694.732940][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972694.732980][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972694.733009][3652:3652] CHIP:DMG: } + [1659972694.733066][3652:3652] CHIP:DMG: + [1659972694.733092][3652:3652] CHIP:DMG: ], + [1659972694.733128][3652:3652] CHIP:DMG: + [1659972694.733154][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972694.733188][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972694.733211][3652:3652] CHIP:DMG: }, + [1659972694.733292][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972694.733401][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972694.733429][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + [1659972694.733460][3652:3652] CHIP:DMG: Reading attribute: Cluster=0x0000_001D Endpoint=1 AttributeId=0x0000_0000 (expanded=0) + [1659972694.733487][3652:3652] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_001D e=1 p=v + [1659972694.733520][3652:3652] CHIP:DMG: AccessControl: allowed ./chip-tool descriptor read device-list 1 3 Verify in TH(all-clusters-app) Log: - [1657002329.438065][3983:3988] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 2452512872 - [1657002329.438135][3983:3988] CHIP:TOO: device list: 2 entries - [1657002329.438193][3983:3988] CHIP:TOO: [1]: { - [1657002329.438238][3983:3988] CHIP:TOO: Type: 256 - [1657002329.438269][3983:3988] CHIP:TOO: Revision: 1 - [1657002329.438298][3983:3988] CHIP:TOO: } - [1657002329.438332][3983:3988] CHIP:TOO: [2]: { - [1657002329.438360][3983:3988] CHIP:TOO: Type: 19 - [1657002329.438389][3983:3988] CHIP:TOO: Revision: 1 - [1657002329.438416][3983:3988] CHIP:TOO: } + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x3, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + ./chip-tool descriptor read device-list 1 4 Verify in TH(all-clusters-app) Log: - [1657002348.693948][3989:3994] CHIP:TOO: Endpoint: 4 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 1398882309 - [1657002348.694013][3989:3994] CHIP:TOO: device list: 2 entries - [1657002348.694063][3989:3994] CHIP:TOO: [1]: { - [1657002348.694100][3989:3994] CHIP:TOO: Type: 259 - [1657002348.694125][3989:3994] CHIP:TOO: Revision: 1 - [1657002348.694149][3989:3994] CHIP:TOO: } - [1657002348.694176][3989:3994] CHIP:TOO: [2]: { - [1657002348.694199][3989:3994] CHIP:TOO: Type: 19 - [1657002348.694221][3989:3994] CHIP:TOO: Revision: 1 - [1657002348.694242][3989:3994] CHIP:TOO: } + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x4, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + ./chip-tool descriptor read device-list 1 5 Verify in TH(all-clusters-app) Log: - [1657002369.589492][3996:4001] CHIP:TOO: Endpoint: 5 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 130458766 - [1657002369.589556][3996:4001] CHIP:TOO: device list: 2 entries - [1657002369.589610][3996:4001] CHIP:TOO: [1]: { - [1657002369.589653][3996:4001] CHIP:TOO: Type: 259 - [1657002369.589682][3996:4001] CHIP:TOO: Revision: 1 - [1657002369.589710][3996:4001] CHIP:TOO: } - [1657002369.589742][3996:4001] CHIP:TOO: [2]: { - [1657002369.589768][3996:4001] CHIP:TOO: Type: 19 - [1657002369.589794][3996:4001] CHIP:TOO: Revision: 1 - [1657002369.589819][3996:4001] CHIP:TOO: } + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x5, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + ./chip-tool descriptor read device-list 1 6 Verify in TH(all-clusters-app) Log: - [1657002386.484093][4002:4007] CHIP:TOO: Endpoint: 6 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 295450100 - [1657002386.484155][4002:4007] CHIP:TOO: device list: 1 entries - [1657002386.484255][4002:4007] CHIP:TOO: [1]: { - [1657002386.484302][4002:4007] CHIP:TOO: Type: 19 - [1657002386.484332][4002:4007] CHIP:TOO: Revision: 1 - [1657002386.484361][4002:4007] CHIP:TOO: } + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x6, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + ./chip-tool descriptor read device-list 1 7 Verify in TH(all-clusters-app) Log: - [1657002413.721927][4015:4020] CHIP:TOO: Endpoint: 7 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 2117104859 - [1657002413.721981][4015:4020] CHIP:TOO: device list: 1 entries - [1657002413.722028][4015:4020] CHIP:TOO: [1]: { - [1657002413.722065][4015:4020] CHIP:TOO: Type: 259 - [1657002413.722090][4015:4020] CHIP:TOO: Revision: 1 - [1657002413.722113][4015:4020] CHIP:TOO: } + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x7, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + ./chip-tool descriptor read device-list 1 8 Verify in TH(all-clusters-app) Log: - [1657002436.415904][4034:4039] CHIP:TOO: Endpoint: 8 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 2026786918 - [1657002436.415972][4034:4039] CHIP:TOO: device list: 1 entries - [1657002436.416033][4034:4039] CHIP:TOO: [1]: { - [1657002436.416081][4034:4039] CHIP:TOO: Type: 259 - [1657002436.416115][4034:4039] CHIP:TOO: Revision: 1 - [1657002436.416146][4034:4039] CHIP:TOO: } + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x8, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + ./chip-tool descriptor read device-list 1 9 Verify in TH(all-clusters-app) Log: - [1657002455.445818][4040:4045] CHIP:TOO: Endpoint: 9 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 913116116 - [1657002455.445883][4040:4045] CHIP:TOO: device list: 1 entries - [1657002455.445944][4040:4045] CHIP:TOO: [1]: { - [1657002455.445991][4040:4045] CHIP:TOO: Type: 17 - [1657002455.446025][4040:4045] CHIP:TOO: Revision: 1 - [1657002455.446056][4040:4045] CHIP:TOO: } + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x9, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + ./chip-tool descriptor read device-list 1 10 Verify in TH(all-clusters-app) Log: - [1657002473.100910][4047:4052] CHIP:TOO: Endpoint: 10 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 259205426 - [1657002473.100967][4047:4052] CHIP:TOO: device list: 2 entries - [1657002473.101013][4047:4052] CHIP:TOO: [1]: { - [1657002473.101051][4047:4052] CHIP:TOO: Type: 256 - [1657002473.101076][4047:4052] CHIP:TOO: Revision: 1 - [1657002473.101098][4047:4052] CHIP:TOO: } - [1657002473.101126][4047:4052] CHIP:TOO: [2]: { - [1657002473.101148][4047:4052] CHIP:TOO: Type: 19 - [1657002473.101170][4047:4052] CHIP:TOO: Revision: 1 - [1657002473.101192][4047:4052] CHIP:TOO: } + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x10, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + ./chip-tool descriptor read device-list 1 11 Verify in TH(all-clusters-app) Log: - [1657002495.856770][4061:4066] CHIP:TOO: Endpoint: 11 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 4248421677 - [1657002495.856836][4061:4066] CHIP:TOO: device list: 2 entries - [1657002495.856893][4061:4066] CHIP:TOO: [1]: { - [1657002495.856938][4061:4066] CHIP:TOO: Type: 256 - [1657002495.856968][4061:4066] CHIP:TOO: Revision: 1 - [1657002495.856996][4061:4066] CHIP:TOO: } - [1657002495.857030][4061:4066] CHIP:TOO: [2]: { - [1657002495.857058][4061:4066] CHIP:TOO: Type: 19 - [1657002495.857085][4061:4066] CHIP:TOO: Revision: 1 - [1657002495.857112][4061:4066] CHIP:TOO: } + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x11, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + ./chip-tool descriptor read device-list 1 12 Verify in TH(all-clusters-app) Log: - [1657002515.862187][4073:4078] CHIP:TOO: Endpoint: 12 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 2731599835 - [1657002515.862249][4073:4078] CHIP:TOO: device list: 2 entries - [1657002515.862302][4073:4078] CHIP:TOO: [1]: { - [1657002515.862343][4073:4078] CHIP:TOO: Type: 256 - [1657002515.862372][4073:4078] CHIP:TOO: Revision: 1 - [1657002515.862398][4073:4078] CHIP:TOO: } - [1657002515.862429][4073:4078] CHIP:TOO: [2]: { - [1657002515.862455][4073:4078] CHIP:TOO: Type: 19 - [1657002515.862480][4073:4078] CHIP:TOO: Revision: 1 - [1657002515.862504][4073:4078] CHIP:TOO: } + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x12, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + ./chip-tool descriptor read device-list 1 13 Verify in TH(all-clusters-app) Log: - [1657002538.134605][4097:4102] CHIP:TOO: Endpoint: 13 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 3449178249 - [1657002538.134700][4097:4102] CHIP:TOO: device list: 2 entries - [1657002538.134784][4097:4102] CHIP:TOO: [1]: { - [1657002538.134869][4097:4102] CHIP:TOO: Type: 256 - [1657002538.134916][4097:4102] CHIP:TOO: Revision: 1 - [1657002538.134973][4097:4102] CHIP:TOO: } - [1657002538.135025][4097:4102] CHIP:TOO: [2]: { - [1657002538.135083][4097:4102] CHIP:TOO: Type: 19 - [1657002538.135126][4097:4102] CHIP:TOO: Revision: 1 - [1657002538.135166][4097:4102] CHIP:TOO: } + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x13, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty @@ -212,160 +399,1343 @@ tests: ./chip-tool descriptor read parts-list 1 0 Verify in TH(all-clusters-app) Log: + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x0, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + ./chip-tool descriptor read parts-list 1 1 + + Verify in TH(all-clusters-app) Log: + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x1, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + ./chip-tool descriptor read parts-list 1 2 + + Verify in TH(all-clusters-app) Log: + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x2, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + ./chip-tool descriptor read parts-list 1 3 + + Verify in TH(all-clusters-app) Log: + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x3, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 4 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x4, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 5 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x5, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 6 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x6, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 7 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x7, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 8 - [1657002201.045720][3893:3899] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0003 DataVersion: 3573910940 - [1657002201.045841][3893:3899] CHIP:TOO: parts list: 12 entries - [1657002201.045887][3893:3899] CHIP:TOO: [1]: 1 - [1657002201.045925][3893:3899] CHIP:TOO: [2]: 3 - [1657002201.045963][3893:3899] CHIP:TOO: [3]: 4 - [1657002201.046000][3893:3899] CHIP:TOO: [4]: 5 - [1657002201.046037][3893:3899] CHIP:TOO: [5]: 6 - [1657002201.046073][3893:3899] CHIP:TOO: [6]: 7 - [1657002201.046110][3893:3899] CHIP:TOO: [7]: 8 - [1657002201.046147][3893:3899] CHIP:TOO: [8]: 9 - [1657002201.046184][3893:3899] CHIP:TOO: [9]: 10 - [1657002201.046221][3893:3899] CHIP:TOO: [10]: 11 - [1657002201.046259][3893:3899] CHIP:TOO: [11]: 12 - [1657002201.046296][3893:3899] CHIP:TOO: [12]: 13 + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x8, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 9 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x9, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 10 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x10, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + ./chip-tool descriptor read parts-list 1 11 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x11, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 12 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x12, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 13 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x13, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + disabled: true + + - label: "" + PICS: MCORE.DEVLIST.UseDevices + verification: | + Verify DUT contains the (supported) devices from the above list + + ./chip-tool descriptor read device-list 1 1 + + Verify in TH(all-clusters-app) Log: + + [1659972694.732632][3652:3652] CHIP:IM: Received Read request + [1659972694.732712][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972694.732739][3652:3652] CHIP:DMG: { + [1659972694.732761][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972694.732800][3652:3652] CHIP:DMG: [ + [1659972694.732824][3652:3652] CHIP:DMG: AttributePathIB = + [1659972694.732866][3652:3652] CHIP:DMG: { + [1659972694.732905][3652:3652] CHIP:DMG: Endpoint = 0x1, + [1659972694.732940][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972694.732980][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972694.733009][3652:3652] CHIP:DMG: } + [1659972694.733066][3652:3652] CHIP:DMG: + [1659972694.733092][3652:3652] CHIP:DMG: ], + [1659972694.733128][3652:3652] CHIP:DMG: + [1659972694.733154][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972694.733188][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972694.733211][3652:3652] CHIP:DMG: }, + [1659972694.733292][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972694.733401][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972694.733429][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + [1659972694.733460][3652:3652] CHIP:DMG: Reading attribute: Cluster=0x0000_001D Endpoint=1 AttributeId=0x0000_0000 (expanded=0) + [1659972694.733487][3652:3652] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_001D e=1 p=v + [1659972694.733520][3652:3652] CHIP:DMG: AccessControl: allowed ./chip-tool descriptor read device-list 1 3 Verify in TH(all-clusters-app) Log: - [1657002843.395988][4135:4140] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 2452512872 - [1657002843.396058][4135:4140] CHIP:TOO: device list: 2 entries - [1657002843.396112][4135:4140] CHIP:TOO: [1]: { - [1657002843.396154][4135:4140] CHIP:TOO: Type: 256 - [1657002843.396204][4135:4140] CHIP:TOO: Revision: 1 - [1657002843.396232][4135:4140] CHIP:TOO: } - [1657002843.396265][4135:4140] CHIP:TOO: [2]: { - [1657002843.396291][4135:4140] CHIP:TOO: Type: 19 - [1657002843.396317][4135:4140] CHIP:TOO: Revision: 1 - [1657002843.396342][4135:4140] CHIP:TOO: } + + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x3, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + + ./chip-tool descriptor read device-list 1 4 Verify in TH(all-clusters-app) Log: - [1657002927.992247][4143:4148] CHIP:TOO: Endpoint: 4 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 1398882309 - [1657002927.992309][4143:4148] CHIP:TOO: device list: 2 entries - [1657002927.992362][4143:4148] CHIP:TOO: [1]: { - [1657002927.992405][4143:4148] CHIP:TOO: Type: 259 - [1657002927.992434][4143:4148] CHIP:TOO: Revision: 1 - [1657002927.992459][4143:4148] CHIP:TOO: } - [1657002927.992490][4143:4148] CHIP:TOO: [2]: { - [1657002927.992516][4143:4148] CHIP:TOO: Type: 19 - [1657002927.992542][4143:4148] CHIP:TOO: Revision: 1 - [1657002927.992567][4143:4148] CHIP:TOO: } - ./chip-tool descriptor read device-list 1 5 + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x4, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + + + + + ./chip-tool descriptor read device-list 1 5 Verify in TH(all-clusters-app) Log: - [1657002949.332151][4156:4161] CHIP:TOO: Endpoint: 5 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 130458766 - [1657002949.332245][4156:4161] CHIP:TOO: device list: 2 entries - [1657002949.332294][4156:4161] CHIP:TOO: [1]: { - [1657002949.332332][4156:4161] CHIP:TOO: Type: 259 - [1657002949.332356][4156:4161] CHIP:TOO: Revision: 1 - [1657002949.332379][4156:4161] CHIP:TOO: } - [1657002949.332405][4156:4161] CHIP:TOO: [2]: { - [1657002949.332427][4156:4161] CHIP:TOO: Type: 19 - [1657002949.332449][4156:4161] CHIP:TOO: Revision: 1 - [1657002949.332470][4156:4161] CHIP:TOO: } - ./chip-tool descriptor read device-list 1 6 + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x5, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + + + + + ./chip-tool descriptor read device-list 1 6 Verify in TH(all-clusters-app) Log: - [1657002965.947096][4163:4168] CHIP:TOO: Endpoint: 6 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 295450100 - [1657002965.947150][4163:4168] CHIP:TOO: device list: 1 entries - [1657002965.947196][4163:4168] CHIP:TOO: [1]: { - [1657002965.947231][4163:4168] CHIP:TOO: Type: 19 - [1657002965.947256][4163:4168] CHIP:TOO: Revision: 1 - [1657002965.947278][4163:4168] CHIP:TOO: } - ./chip-tool descriptor read device-list 1 7 + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x6, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + + + + + ./chip-tool descriptor read device-list 1 7 Verify in TH(all-clusters-app) Log: - [1657002981.963307][4176:4181] CHIP:TOO: Endpoint: 7 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 2117104859 - [1657002981.963371][4176:4181] CHIP:TOO: device list: 1 entries - [1657002981.963429][4176:4181] CHIP:TOO: [1]: { - [1657002981.963474][4176:4181] CHIP:TOO: Type: 259 - [1657002981.963505][4176:4181] CHIP:TOO: Revision: 1 - [1657002981.963533][4176:4181] CHIP:TOO: } - ./chip-tool descriptor read device-list 1 8 + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x7, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + + + + + ./chip-tool descriptor read device-list 1 8 Verify in TH(all-clusters-app) Log: - [1657003007.476575][4183:4188] CHIP:TOO: Endpoint: 8 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 2026786918 - [1657003007.476635][4183:4188] CHIP:TOO: device list: 1 entries - [1657003007.476689][4183:4188] CHIP:TOO: [1]: { - [1657003007.476731][4183:4188] CHIP:TOO: Type: 259 - [1657003007.476760][4183:4188] CHIP:TOO: Revision: 1 - [1657003007.476786][4183:4188] CHIP:TOO: } - ./chip-tool descriptor read device-list 1 9 + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x8, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + + + + + ./chip-tool descriptor read device-list 1 9 Verify in TH(all-clusters-app) Log: - [1657003023.263333][4191:4196] CHIP:TOO: Endpoint: 9 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 913116116 - [1657003023.263391][4191:4196] CHIP:TOO: device list: 1 entries - [1657003023.263443][4191:4196] CHIP:TOO: [1]: { - [1657003023.263484][4191:4196] CHIP:TOO: Type: 17 - [1657003023.263512][4191:4196] CHIP:TOO: Revision: 1 - [1657003023.263538][4191:4196] CHIP:TOO: } - ./chip-tool descriptor read device-list 1 10 + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x9, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + + + + + ./chip-tool descriptor read device-list 1 10 Verify in TH(all-clusters-app) Log: - [1657003044.071972][4204:4209] CHIP:TOO: Endpoint: 10 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 259205426 - [1657003044.072037][4204:4209] CHIP:TOO: device list: 2 entries - [1657003044.072085][4204:4209] CHIP:TOO: [1]: { - [1657003044.072123][4204:4209] CHIP:TOO: Type: 256 - [1657003044.072149][4204:4209] CHIP:TOO: Revision: 1 - [1657003044.072195][4204:4209] CHIP:TOO: } - [1657003044.072227][4204:4209] CHIP:TOO: [2]: { - [1657003044.072250][4204:4209] CHIP:TOO: Type: 19 - [1657003044.072272][4204:4209] CHIP:TOO: Revision: 1 - [1657003044.072295][4204:4209] CHIP:TOO: } - ./chip-tool descriptor read device-list 1 11 + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x10, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + + + + ./chip-tool descriptor read device-list 1 11 Verify in TH(all-clusters-app) Log: - [1657003082.358311][4217:4222] CHIP:TOO: Endpoint: 11 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 4248421677 - [1657003082.358379][4217:4222] CHIP:TOO: device list: 2 entries - [1657003082.358432][4217:4222] CHIP:TOO: [1]: { - [1657003082.358471][4217:4222] CHIP:TOO: Type: 256 - [1657003082.358501][4217:4222] CHIP:TOO: Revision: 1 - [1657003082.358529][4217:4222] CHIP:TOO: } - [1657003082.358563][4217:4222] CHIP:TOO: [2]: { - [1657003082.358591][4217:4222] CHIP:TOO: Type: 19 - [1657003082.358619][4217:4222] CHIP:TOO: Revision: 1 - [1657003082.358646][4217:4222] CHIP:TOO: } - ./chip-tool descriptor read device-list 1 12 + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x11, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + + + + + ./chip-tool descriptor read device-list 1 12 Verify in TH(all-clusters-app) Log: - [1657003103.954911][4248:4253] CHIP:TOO: Endpoint: 12 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 2731599835 - [1657003103.954986][4248:4253] CHIP:TOO: device list: 2 entries - [1657003103.955050][4248:4253] CHIP:TOO: [1]: { - [1657003103.955095][4248:4253] CHIP:TOO: Type: 256 - [1657003103.955125][4248:4253] CHIP:TOO: Revision: 1 - [1657003103.955153][4248:4253] CHIP:TOO: } - [1657003103.955186][4248:4253] CHIP:TOO: [2]: { - [1657003103.955214][4248:4253] CHIP:TOO: Type: 19 - [1657003103.955242][4248:4253] CHIP:TOO: Revision: 1 - [1657003103.955269][4248:4253] CHIP:TOO: } + + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x12, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + + + ./chip-tool descriptor read device-list 1 13 Verify in TH(all-clusters-app) Log: - [1657003125.905572][4261:4266] CHIP:TOO: Endpoint: 13 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 3449178249 - [1657003125.905638][4261:4266] CHIP:TOO: device list: 2 entries - [1657003125.905687][4261:4266] CHIP:TOO: [1]: { - [1657003125.905723][4261:4266] CHIP:TOO: Type: 256 - [1657003125.905750][4261:4266] CHIP:TOO: Revision: 1 - [1657003125.905773][4261:4266] CHIP:TOO: } - [1657003125.905800][4261:4266] CHIP:TOO: [2]: { - [1657003125.905823][4261:4266] CHIP:TOO: Type: 19 - [1657003125.905845][4261:4266] CHIP:TOO: Revision: 1 - [1657003125.905867][4261:4266] CHIP:TOO: } + + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x13, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + + + + Verify PartsList for available EP + + ./chip-tool descriptor read parts-list 1 0 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x0, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 3 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x3, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 4 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x4, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 5 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x5, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 6 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x6, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 7 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x7, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 8 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x8, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 9 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x9, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 10 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x10, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + ./chip-tool descriptor read parts-list 1 11 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x11, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 12 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x12, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 13 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x13, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + disabled: true + + - label: "" + PICS: MCORE.DEVLIST.UseDeviceNames + verification: | + NodeLabel is supported for endpoints 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 + + ./chip-tool bridgeddevicebasic read node-label 1 3 + + Verify in TH(all-clusters-app) Log: + + [1659973028.616696][3652:3652] CHIP:IM: Received Read request + [1659973028.616774][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973028.616810][3652:3652] CHIP:DMG: { + [1659973028.616833][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973028.616859][3652:3652] CHIP:DMG: [ + [1659973028.616891][3652:3652] CHIP:DMG: AttributePathIB = + [1659973028.616919][3652:3652] CHIP:DMG: { + [1659973028.616955][3652:3652] CHIP:DMG: Endpoint = 0x3, + [1659973028.617095][3652:3652] CHIP:DMG: Cluster = 0x39, + [1659973028.617138][3652:3652] CHIP:DMG: Attribute = 0x0000_0005, + [1659973028.617166][3652:3652] CHIP:DMG: } + [1659973028.617194][3652:3652] CHIP:DMG: + [1659973028.617228][3652:3652] CHIP:DMG: ], + [1659973028.617256][3652:3652] CHIP:DMG: + [1659973028.617291][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973028.617317][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973028.617348][3652:3652] CHIP:DMG: }, + [1659973028.617428][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973028.617533][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973028.617572][3652:3652] CHIP:DMG: Cluster 39, Attribute 5 is dirty + + + + ./chip-tool bridgeddevicebasic read node-label 1 4 + + Verify in TH(all-clusters-app) Log: + + [1659973028.616696][3652:3652] CHIP:IM: Received Read request + [1659973028.616774][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973028.616810][3652:3652] CHIP:DMG: { + [1659973028.616833][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973028.616859][3652:3652] CHIP:DMG: [ + [1659973028.616891][3652:3652] CHIP:DMG: AttributePathIB = + [1659973028.616919][3652:3652] CHIP:DMG: { + [1659973028.616955][3652:3652] CHIP:DMG: Endpoint = 0x4, + [1659973028.617095][3652:3652] CHIP:DMG: Cluster = 0x39, + [1659973028.617138][3652:3652] CHIP:DMG: Attribute = 0x0000_0005, + [1659973028.617166][3652:3652] CHIP:DMG: } + [1659973028.617194][3652:3652] CHIP:DMG: + [1659973028.617228][3652:3652] CHIP:DMG: ], + [1659973028.617256][3652:3652] CHIP:DMG: + [1659973028.617291][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973028.617317][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973028.617348][3652:3652] CHIP:DMG: }, + [1659973028.617428][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973028.617533][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973028.617572][3652:3652] CHIP:DMG: Cluster 39, Attribute 5 is dirty + + + + ./chip-tool bridgeddevicebasic read node-label 1 5 + + Verify in TH(all-clusters-app) Log: + + [1659973028.616696][3652:3652] CHIP:IM: Received Read request + [1659973028.616774][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973028.616810][3652:3652] CHIP:DMG: { + [1659973028.616833][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973028.616859][3652:3652] CHIP:DMG: [ + [1659973028.616891][3652:3652] CHIP:DMG: AttributePathIB = + [1659973028.616919][3652:3652] CHIP:DMG: { + [1659973028.616955][3652:3652] CHIP:DMG: Endpoint = 0x5, + [1659973028.617095][3652:3652] CHIP:DMG: Cluster = 0x39, + [1659973028.617138][3652:3652] CHIP:DMG: Attribute = 0x0000_0005, + [1659973028.617166][3652:3652] CHIP:DMG: } + [1659973028.617194][3652:3652] CHIP:DMG: + [1659973028.617228][3652:3652] CHIP:DMG: ], + [1659973028.617256][3652:3652] CHIP:DMG: + [1659973028.617291][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973028.617317][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973028.617348][3652:3652] CHIP:DMG: }, + [1659973028.617428][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973028.617533][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973028.617572][3652:3652] CHIP:DMG: Cluster 39, Attribute 5 is dirty + + + + + ./chip-tool bridgeddevicebasic read node-label 1 6 + + Verify in TH(all-clusters-app) Log: + + [1659973028.616696][3652:3652] CHIP:IM: Received Read request + [1659973028.616774][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973028.616810][3652:3652] CHIP:DMG: { + [1659973028.616833][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973028.616859][3652:3652] CHIP:DMG: [ + [1659973028.616891][3652:3652] CHIP:DMG: AttributePathIB = + [1659973028.616919][3652:3652] CHIP:DMG: { + [1659973028.616955][3652:3652] CHIP:DMG: Endpoint = 0x6, + [1659973028.617095][3652:3652] CHIP:DMG: Cluster = 0x39, + [1659973028.617138][3652:3652] CHIP:DMG: Attribute = 0x0000_0005, + [1659973028.617166][3652:3652] CHIP:DMG: } + [1659973028.617194][3652:3652] CHIP:DMG: + [1659973028.617228][3652:3652] CHIP:DMG: ], + [1659973028.617256][3652:3652] CHIP:DMG: + [1659973028.617291][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973028.617317][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973028.617348][3652:3652] CHIP:DMG: }, + [1659973028.617428][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973028.617533][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973028.617572][3652:3652] CHIP:DMG: Cluster 39, Attribute 5 is dirty + + + + + ./chip-tool bridgeddevicebasic read node-label 1 7 + + Verify in TH(all-clusters-app) Log: + + [1659973028.616696][3652:3652] CHIP:IM: Received Read request + [1659973028.616774][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973028.616810][3652:3652] CHIP:DMG: { + [1659973028.616833][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973028.616859][3652:3652] CHIP:DMG: [ + [1659973028.616891][3652:3652] CHIP:DMG: AttributePathIB = + [1659973028.616919][3652:3652] CHIP:DMG: { + [1659973028.616955][3652:3652] CHIP:DMG: Endpoint = 0x7, + [1659973028.617095][3652:3652] CHIP:DMG: Cluster = 0x39, + [1659973028.617138][3652:3652] CHIP:DMG: Attribute = 0x0000_0005, + [1659973028.617166][3652:3652] CHIP:DMG: } + [1659973028.617194][3652:3652] CHIP:DMG: + [1659973028.617228][3652:3652] CHIP:DMG: ], + [1659973028.617256][3652:3652] CHIP:DMG: + [1659973028.617291][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973028.617317][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973028.617348][3652:3652] CHIP:DMG: }, + [1659973028.617428][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973028.617533][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973028.617572][3652:3652] CHIP:DMG: Cluster 39, Attribute 5 is dirty + + + + ./chip-tool bridgeddevicebasic read node-label 1 8 + + Verify in TH(all-clusters-app) Log: + + [1659973028.616696][3652:3652] CHIP:IM: Received Read request + [1659973028.616774][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973028.616810][3652:3652] CHIP:DMG: { + [1659973028.616833][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973028.616859][3652:3652] CHIP:DMG: [ + [1659973028.616891][3652:3652] CHIP:DMG: AttributePathIB = + [1659973028.616919][3652:3652] CHIP:DMG: { + [1659973028.616955][3652:3652] CHIP:DMG: Endpoint = 0x8, + [1659973028.617095][3652:3652] CHIP:DMG: Cluster = 0x39, + [1659973028.617138][3652:3652] CHIP:DMG: Attribute = 0x0000_0005, + [1659973028.617166][3652:3652] CHIP:DMG: } + [1659973028.617194][3652:3652] CHIP:DMG: + [1659973028.617228][3652:3652] CHIP:DMG: ], + [1659973028.617256][3652:3652] CHIP:DMG: + [1659973028.617291][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973028.617317][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973028.617348][3652:3652] CHIP:DMG: }, + [1659973028.617428][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973028.617533][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973028.617572][3652:3652] CHIP:DMG: Cluster 39, Attribute 5 is dirty + + + + ./chip-tool bridgeddevicebasic read node-label 1 9 + + Verify in TH(all-clusters-app) Log: + + [1659973028.616696][3652:3652] CHIP:IM: Received Read request + [1659973028.616774][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973028.616810][3652:3652] CHIP:DMG: { + [1659973028.616833][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973028.616859][3652:3652] CHIP:DMG: [ + [1659973028.616891][3652:3652] CHIP:DMG: AttributePathIB = + [1659973028.616919][3652:3652] CHIP:DMG: { + [1659973028.616955][3652:3652] CHIP:DMG: Endpoint = 0x9, + [1659973028.617095][3652:3652] CHIP:DMG: Cluster = 0x39, + [1659973028.617138][3652:3652] CHIP:DMG: Attribute = 0x0000_0005, + [1659973028.617166][3652:3652] CHIP:DMG: } + [1659973028.617194][3652:3652] CHIP:DMG: + [1659973028.617228][3652:3652] CHIP:DMG: ], + [1659973028.617256][3652:3652] CHIP:DMG: + [1659973028.617291][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973028.617317][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973028.617348][3652:3652] CHIP:DMG: }, + [1659973028.617428][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973028.617533][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973028.617572][3652:3652] CHIP:DMG: Cluster 39, Attribute 5 is dirty + + + + ./chip-tool bridgeddevicebasic read node-label 1 10 + + Verify in TH(all-clusters-app) Log: + + [1659973028.616696][3652:3652] CHIP:IM: Received Read request + [1659973028.616774][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973028.616810][3652:3652] CHIP:DMG: { + [1659973028.616833][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973028.616859][3652:3652] CHIP:DMG: [ + [1659973028.616891][3652:3652] CHIP:DMG: AttributePathIB = + [1659973028.616919][3652:3652] CHIP:DMG: { + [1659973028.616955][3652:3652] CHIP:DMG: Endpoint = 0x10, + [1659973028.617095][3652:3652] CHIP:DMG: Cluster = 0x39, + [1659973028.617138][3652:3652] CHIP:DMG: Attribute = 0x0000_0005, + [1659973028.617166][3652:3652] CHIP:DMG: } + [1659973028.617194][3652:3652] CHIP:DMG: + [1659973028.617228][3652:3652] CHIP:DMG: ], + [1659973028.617256][3652:3652] CHIP:DMG: + [1659973028.617291][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973028.617317][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973028.617348][3652:3652] CHIP:DMG: }, + [1659973028.617428][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973028.617533][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973028.617572][3652:3652] CHIP:DMG: Cluster 39, Attribute 5 is dirty + + + + ./chip-tool bridgeddevicebasic read node-label 1 11 + + Verify in TH(all-clusters-app) Log: + + [1659973028.616696][3652:3652] CHIP:IM: Received Read request + [1659973028.616774][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973028.616810][3652:3652] CHIP:DMG: { + [1659973028.616833][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973028.616859][3652:3652] CHIP:DMG: [ + [1659973028.616891][3652:3652] CHIP:DMG: AttributePathIB = + [1659973028.616919][3652:3652] CHIP:DMG: { + [1659973028.616955][3652:3652] CHIP:DMG: Endpoint = 0x11, + [1659973028.617095][3652:3652] CHIP:DMG: Cluster = 0x39, + [1659973028.617138][3652:3652] CHIP:DMG: Attribute = 0x0000_0005, + [1659973028.617166][3652:3652] CHIP:DMG: } + [1659973028.617194][3652:3652] CHIP:DMG: + [1659973028.617228][3652:3652] CHIP:DMG: ], + [1659973028.617256][3652:3652] CHIP:DMG: + [1659973028.617291][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973028.617317][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973028.617348][3652:3652] CHIP:DMG: }, + [1659973028.617428][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973028.617533][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973028.617572][3652:3652] CHIP:DMG: Cluster 39, Attribute 5 is dirty + + + + ./chip-tool bridgeddevicebasic read node-label 1 12 + + Verify in TH(all-clusters-app) Log: + + [1659973028.616696][3652:3652] CHIP:IM: Received Read request + [1659973028.616774][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973028.616810][3652:3652] CHIP:DMG: { + [1659973028.616833][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973028.616859][3652:3652] CHIP:DMG: [ + [1659973028.616891][3652:3652] CHIP:DMG: AttributePathIB = + [1659973028.616919][3652:3652] CHIP:DMG: { + [1659973028.616955][3652:3652] CHIP:DMG: Endpoint = 0x12, + [1659973028.617095][3652:3652] CHIP:DMG: Cluster = 0x39, + [1659973028.617138][3652:3652] CHIP:DMG: Attribute = 0x0000_0005, + [1659973028.617166][3652:3652] CHIP:DMG: } + [1659973028.617194][3652:3652] CHIP:DMG: + [1659973028.617228][3652:3652] CHIP:DMG: ], + [1659973028.617256][3652:3652] CHIP:DMG: + [1659973028.617291][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973028.617317][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973028.617348][3652:3652] CHIP:DMG: }, + [1659973028.617428][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973028.617533][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973028.617572][3652:3652] CHIP:DMG: Cluster 39, Attribute 5 is dirty + + + + ./chip-tool bridgeddevicebasic read node-label 1 13 + + Verify in TH(all-clusters-app) Log: + + [1659973028.616696][3652:3652] CHIP:IM: Received Read request + [1659973028.616774][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973028.616810][3652:3652] CHIP:DMG: { + [1659973028.616833][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973028.616859][3652:3652] CHIP:DMG: [ + [1659973028.616891][3652:3652] CHIP:DMG: AttributePathIB = + [1659973028.616919][3652:3652] CHIP:DMG: { + [1659973028.616955][3652:3652] CHIP:DMG: Endpoint = 0x13, + [1659973028.617095][3652:3652] CHIP:DMG: Cluster = 0x39, + [1659973028.617138][3652:3652] CHIP:DMG: Attribute = 0x0000_0005, + [1659973028.617166][3652:3652] CHIP:DMG: } + [1659973028.617194][3652:3652] CHIP:DMG: + [1659973028.617228][3652:3652] CHIP:DMG: ], + [1659973028.617256][3652:3652] CHIP:DMG: + [1659973028.617291][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973028.617317][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973028.617348][3652:3652] CHIP:DMG: }, + [1659973028.617428][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973028.617533][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973028.617572][3652:3652] CHIP:DMG: Cluster 39, Attribute 5 is dirty + disabled: true + + - label: "" + PICS: MCORE.DEVLIST.UseDeviceState + verification: | + Read onoff attribute from OnOff cluster with applicable EP (refer step 1a ) + + ./chip-tool onoff read on-off 1 3 + + Verify in TH(all-clusters-app) Log: + + [1659973152.263905][3652:3652] CHIP:IM: Received Read request + [1659973152.264002][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973152.264053][3652:3652] CHIP:DMG: { + [1659973152.264083][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973152.264130][3652:3652] CHIP:DMG: [ + [1659973152.264163][3652:3652] CHIP:DMG: AttributePathIB = + [1659973152.264214][3652:3652] CHIP:DMG: { + [1659973152.264255][3652:3652] CHIP:DMG: Endpoint = 0x3, + [1659973152.264308][3652:3652] CHIP:DMG: Cluster = 0x6, + [1659973152.264350][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659973152.264404][3652:3652] CHIP:DMG: } + [1659973152.264457][3652:3652] CHIP:DMG: + [1659973152.264494][3652:3652] CHIP:DMG: ], + [1659973152.264541][3652:3652] CHIP:DMG: + [1659973152.264577][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973152.264622][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973152.264654][3652:3652] CHIP:DMG: }, + [1659973152.264756][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973152.264871][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973152.264922][3652:3652] CHIP:DMG: Cluster 6, Attribute 0 is dirty disabled: true - label: @@ -373,17 +1743,58 @@ tests: bridged On/Off lights (use key c in the console to bridge-app)" PICS: MCORE.DEVLIST.UseDeviceState verification: | - Verify on DUT(chip-tool) Log - c - [1659089560.774328][12236:12241] CHIP:DL: Device[Light 1b]: ON - [1659089560.774681][12236:12236] CHIP:DMG: Endpoint 3, Cluster 0x0000_0006 update version to 83dcb371 + Verify on TH(all-clusters-app) Log: + ./chip-tool onoff read on-off 1 3 + [1659973152.263905][3652:3652] CHIP:IM: Received Read request + [1659973152.264002][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973152.264053][3652:3652] CHIP:DMG: { + [1659973152.264083][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973152.264130][3652:3652] CHIP:DMG: [ + [1659973152.264163][3652:3652] CHIP:DMG: AttributePathIB = + [1659973152.264214][3652:3652] CHIP:DMG: { + [1659973152.264255][3652:3652] CHIP:DMG: Endpoint = 0x3, + [1659973152.264308][3652:3652] CHIP:DMG: Cluster = 0x6, + [1659973152.264350][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659973152.264404][3652:3652] CHIP:DMG: } + [1659973152.264457][3652:3652] CHIP:DMG: + [1659973152.264494][3652:3652] CHIP:DMG: ], + [1659973152.264541][3652:3652] CHIP:DMG: + [1659973152.264577][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973152.264622][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973152.264654][3652:3652] CHIP:DMG: }, + [1659973152.264756][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973152.264871][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973152.264922][3652:3652] CHIP:DMG: Cluster 6, Attribute 0 is dirty + disabled: true + + - label: "" + PICS: MCORE.DEVLIST.UseDeviceState + verification: | + ./chip-tool temperaturemeasurement read measured-value 1 4 Verify on TH(all-clusters-app) Log: - ./chip-tool onoff read on-off 1 3 - [1659089585.162599][8769:8774] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 2212279153 - [1659089585.162714][8769:8774] CHIP:TOO: OnOff: TRUE + [1659973227.630446][3652:3652] CHIP:IM: Received Read request + [1659973227.630527][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973227.630570][3652:3652] CHIP:DMG: { + [1659973227.630594][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973227.630633][3652:3652] CHIP:DMG: [ + [1659973227.630658][3652:3652] CHIP:DMG: AttributePathIB = + [1659973227.630699][3652:3652] CHIP:DMG: { + [1659973227.630728][3652:3652] CHIP:DMG: Endpoint = 0x4, + [1659973227.630779][3652:3652] CHIP:DMG: Cluster = 0x402, + [1659973227.630821][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659973227.630853][3652:3652] CHIP:DMG: } + [1659973227.630892][3652:3652] CHIP:DMG: + [1659973227.630919][3652:3652] CHIP:DMG: ], + [1659973227.630957][3652:3652] CHIP:DMG: + [1659973227.630984][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973227.631020][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973227.631044][3652:3652] CHIP:DMG: }, + [1659973227.631126][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973227.631231][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973227.631262][3652:3652] CHIP:DMG: Cluster 402, Attribute 0 is dirty disabled: true - label: @@ -394,17 +1805,8 @@ tests: verification: | Press a key "tbd" on bridge-app to change the simulated temperature - Verify on DUT(chip-tool) Log - [1659351537.115828][14237:14242] CHIP:DL: TempSensorDevice[TempSensor 1]: New measurement=""200"" - [1659351537.115987][14237:14242] CHIP:DL: TempSensorDevice[TempSensor 2]: New measurement=""200"" - [1659351537.116097][14237:14242] CHIP:DL: TempSensorDevice[Composed TempSensor 1]: New measurement=""200"" - [1659351537.116158][14237:14237] CHIP:DMG: Endpoint 4, Cluster 0x0000_0402 update version to 8f732d69 - [1659351537.116300][14237:14237] CHIP:DMG: Endpoint 5, Cluster 0x0000_0402 update version to 36be37c5 - [1659351537.116393][14237:14237] CHIP:DMG: Endpoint 7, Cluster 0x0000_0402 update version to 2cf2064d - [1659351537.116179][14237:14242] CHIP:DL: TempSensorDevice[Composed TempSensor 2]: New measurement=""200"" - " - "./chip-tool temperaturemeasurement read measured-value 1 4 + ./chip-tool temperaturemeasurement read measured-value 1 4 Verify on TH(all-clusters-app) Log: @@ -414,28 +1816,73 @@ tests: [1659351542.393552][12212:12217] CHIP:EM: Sending Standalone Ack for MessageCounter:120981971 on exchange 25924i disabled: true - - label: - "Use the DUT to change the on/off state of one or more of the bridged - On/Off lights" + - label: "" + PICS: MCORE.DEVLIST.UseBatInfo verification: | - ./chip-tool onoff on 1 3 + ./chip-tool powersource read bat-charge-level 1 9 - Verify on DUT(chip-tool) Log + Verify on TH(all-clusters-app) Log: - [1658501274.507714][14425:14425] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0006 e=3 p=o - [1658501274.507760][14425:14425] CHIP:DMG: AccessControl: allowed - [1658501274.507789][14425:14425] CHIP:DMG: Received command for Endpoint=3 Cluster=0x0000_0006 Command=0x0000_0001 - [1658501274.507829][14425:14425] CHIP:ZCL: On/Off set value: 3 1 - [1658501274.507854][14425:14425] CHIP:DL: HandleReadOnOffAttribute: attrId=0, maxReadLength=1 - [1658501274.507886][14425:14425] CHIP:ZCL: On/off already set to new value + [1659973227.630446][3652:3652] CHIP:IM: Received Read request + [1659973227.630527][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973227.630570][3652:3652] CHIP:DMG: { + [1659973227.630594][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973227.630633][3652:3652] CHIP:DMG: [ + [1659973227.630658][3652:3652] CHIP:DMG: AttributePathIB = + [1659973227.630699][3652:3652] CHIP:DMG: { + [1659973227.630728][3652:3652] CHIP:DMG: Endpoint = 0x4, + [1659973227.630779][3652:3652] CHIP:DMG: Cluster = 0x402, + [1659973227.630821][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659973227.630853][3652:3652] CHIP:DMG: } + [1659973227.630892][3652:3652] CHIP:DMG: + [1659973227.630919][3652:3652] CHIP:DMG: ], + [1659973227.630957][3652:3652] CHIP:DMG: + [1659973227.630984][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973227.631020][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973227.631044][3652:3652] CHIP:DMG: }, + [1659973227.631126][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973227.631231][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973227.631262][3652:3652] CHIP:DMG: Cluster 402, Attribute 0 is dirty + disabled: true + - label: "" + verification: | + verification step to be updated. + disabled: true + - label: + "Use the DUT to change the on/off state of one or more of the bridged + On/Off lights" + verification: | ./chip-tool onoff read on-off 1 3 Verify on TH(all-clusters-app) Log: - [1658501339.773125][35583:35588] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 3868039507 - [1658501339.773139][35583:35588] CHIP:TOO: OnOff: TRUE + [1659973152.263905][3652:3652] CHIP:IM: Received Read request + [1659973152.264002][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973152.264053][3652:3652] CHIP:DMG: { + [1659973152.264083][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973152.264130][3652:3652] CHIP:DMG: [ + [1659973152.264163][3652:3652] CHIP:DMG: AttributePathIB = + [1659973152.264214][3652:3652] CHIP:DMG: { + [1659973152.264255][3652:3652] CHIP:DMG: Endpoint = 0x3, + [1659973152.264308][3652:3652] CHIP:DMG: Cluster = 0x6, + [1659973152.264350][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659973152.264404][3652:3652] CHIP:DMG: } + [1659973152.264457][3652:3652] CHIP:DMG: + [1659973152.264494][3652:3652] CHIP:DMG: ], + [1659973152.264541][3652:3652] CHIP:DMG: + [1659973152.264577][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973152.264622][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973152.264654][3652:3652] CHIP:DMG: }, + [1659973152.264756][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973152.264871][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973152.264922][3652:3652] CHIP:DMG: Cluster 6, Attribute 0 is dirty + disabled: true + + - label: "" + verification: | + verification step to be updated. disabled: true - label: @@ -447,8 +1894,26 @@ tests: Verify on TH(all-clusters-app) Log: - [1659089932.160005][8810:8815] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_0039 Attribute 0x0000_0005 DataVersion: 3178625724 - [1659089932.160111][8810:8815] CHIP:TOO: NodeLabel: Light 1 + [1659973028.616696][3652:3652] CHIP:IM: Received Read request + [1659973028.616774][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973028.616810][3652:3652] CHIP:DMG: { + [1659973028.616833][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973028.616859][3652:3652] CHIP:DMG: [ + [1659973028.616891][3652:3652] CHIP:DMG: AttributePathIB = + [1659973028.616919][3652:3652] CHIP:DMG: { + [1659973028.616955][3652:3652] CHIP:DMG: Endpoint = 0x3, + [1659973028.617095][3652:3652] CHIP:DMG: Cluster = 0x39, + [1659973028.617138][3652:3652] CHIP:DMG: Attribute = 0x0000_0005, + [1659973028.617166][3652:3652] CHIP:DMG: } + [1659973028.617194][3652:3652] CHIP:DMG: + [1659973028.617228][3652:3652] CHIP:DMG: ], + [1659973028.617256][3652:3652] CHIP:DMG: + [1659973028.617291][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973028.617317][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973028.617348][3652:3652] CHIP:DMG: }, + [1659973028.617428][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973028.617533][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973028.617572][3652:3652] CHIP:DMG: Cluster 39, Attribute 5 is dirty Verify on DUT(chip-tool) Log @@ -459,86 +1924,157 @@ tests: Verify on TH(all-clusters-app) Log: - [1659352004.560327][12241:12246] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_0039 Attribute 0x0000_0005 DataVersion: 2321959095 - [1659352004.560365][12241:12246] CHIP:TOO: NodeLabel: Light 1b + [1659973028.616696][3652:3652] CHIP:IM: Received Read request + [1659973028.616774][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973028.616810][3652:3652] CHIP:DMG: { + [1659973028.616833][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973028.616859][3652:3652] CHIP:DMG: [ + [1659973028.616891][3652:3652] CHIP:DMG: AttributePathIB = + [1659973028.616919][3652:3652] CHIP:DMG: { + [1659973028.616955][3652:3652] CHIP:DMG: Endpoint = 0x3, + [1659973028.617095][3652:3652] CHIP:DMG: Cluster = 0x39, + [1659973028.617138][3652:3652] CHIP:DMG: Attribute = 0x0000_0005, + [1659973028.617166][3652:3652] CHIP:DMG: } + [1659973028.617194][3652:3652] CHIP:DMG: + [1659973028.617228][3652:3652] CHIP:DMG: ], + [1659973028.617256][3652:3652] CHIP:DMG: + [1659973028.617291][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973028.617317][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973028.617348][3652:3652] CHIP:DMG: }, + [1659973028.617428][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973028.617533][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973028.617572][3652:3652] CHIP:DMG: Cluster 39, Attribute 5 is dirty disabled: true - - label: - "Use TH/bridge-app to add a bridged light (use key 2 in the console to - bridge-app to add Light 2)" + - label: "" + PICS: MCORE.DEVLIST.UseDeviceNames verification: | Verify on DUT(chip-tool) Log - 2 - [1659352274.915018][14237:14242] CHIP:DMG: Endpoint 1, Cluster 0x0000_001D update version to 7e918bae - [1659352274.915107][14237:14242] CHIP:DMG: Endpoint 0, Cluster 0x0000_001D update version to 7561f371 - [1659352274.915166][14237:14242] CHIP:DL: Added device Light 2 to dynamic endpoint 14 (index=11) + b + [1659089470.077297][12236:12241] CHIP:DL: Device[Light 1]: New Name="Light 1b" + disabled: true + + - label: + "Use TH/bridge-app to add a bridged light (use key 2 in the console to + bridge-app to add Light 2)" + verification: | + Press "2" on TH(chip-tool) Log ./chip-tool descriptor read parts-list 1 0 Verify the endpoints listed in TH(all-clusters-app) Log - [1659352284.821350][12264:12269] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0003 DataVersion: 1969353585 - [1659352284.821433][12264:12269] CHIP:TOO: parts list: 13 entries - [1659352284.821470][12264:12269] CHIP:TOO: [1]: 1 - [1659352284.821500][12264:12269] CHIP:TOO: [2]: 3 - [1659352284.821529][12264:12269] CHIP:TOO: [3]: 4 - [1659352284.821557][12264:12269] CHIP:TOO: [4]: 5 - [1659352284.821586][12264:12269] CHIP:TOO: [5]: 6 - [1659352284.821614][12264:12269] CHIP:TOO: [6]: 7 - [1659352284.821642][12264:12269] CHIP:TOO: [7]: 8 - [1659352284.821670][12264:12269] CHIP:TOO: [8]: 9 - [1659352284.821698][12264:12269] CHIP:TOO: [9]: 10 - [1659352284.821726][12264:12269] CHIP:TOO: [10]: 11 - [1659352284.821755][12264:12269] CHIP:TOO: [11]: 12 - [1659352284.821784][12264:12269] CHIP:TOO: [12]: 13 - [1659352284.821812][12264:12269] CHIP:TOO: [13]: 14 + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x0, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty " ./chip-tool descriptor read parts-list 1 1 Verify the list contains 11 entries in TH(all-clusters-app) Log - [1659352298.310126][12270:12275] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_0003 DataVersion: 2123467694 - [1659352298.310213][12270:12275] CHIP:TOO: parts list: 12 entries - [1659352298.310248][12270:12275] CHIP:TOO: [1]: 3 - [1659352298.310277][12270:12275] CHIP:TOO: [2]: 4 - [1659352298.310304][12270:12275] CHIP:TOO: [3]: 5 - [1659352298.310330][12270:12275] CHIP:TOO: [4]: 6 - [1659352298.310356][12270:12275] CHIP:TOO: [5]: 7 - [1659352298.310381][12270:12275] CHIP:TOO: [6]: 8 - [1659352298.310407][12270:12275] CHIP:TOO: [7]: 9 - [1659352298.310433][12270:12275] CHIP:TOO: [8]: 10 - [1659352298.310459][12270:12275] CHIP:TOO: [9]: 11 - [1659352298.310485][12270:12275] CHIP:TOO: [10]: 12 - [1659352298.310512][12270:12275] CHIP:TOO: [11]: 13 - [1659352298.310538][12270:12275] CHIP:TOO: [12]: 14 - [1659352298.310687][12270:12275] CHIP:EM: Sending Standalone Ack for MessageCounter:4449538 on exchange 4393i + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x1, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty ./chip-tool descriptor read parts-list 1 14 Verify on TH(all-clusters-app) Log - - [1659352316.442844][12276:12281] CHIP:TOO: Endpoint: 14 Cluster: 0x0000_001D Attribute 0x0000_0003 DataVersion: 3417142897 - [1659352316.442927][12276:12281] CHIP:TOO: parts list: 0 entries - [1659352316.443042][12276:12281] CHIP:EM: Sending Standalone Ack for MessageCounter:85433161 on exchange 30040i + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x14, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty ./chip-tool descriptor read device-list 1 14 Verify the list contains 11 entries in TH(all-clusters-app) Log - [1659352346.719522][12283:12288] CHIP:TOO: Endpoint: 14 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 3417142897 - [1659352346.719601][12283:12288] CHIP:TOO: device list: 2 entries - [1659352346.719645][12283:12288] CHIP:TOO: [1]: { - [1659352346.719675][12283:12288] CHIP:TOO: Type: 256 - [1659352346.719704][12283:12288] CHIP:TOO: Revision: 1 - [1659352346.719732][12283:12288] CHIP:TOO: } - [1659352346.719766][12283:12288] CHIP:TOO: [2]: { - [1659352346.719794][12283:12288] CHIP:TOO: Type: 19 - [1659352346.719822][12283:12288] CHIP:TOO: Revision: 1 - [1659352346.719849][12283:12288] CHIP:TOO: } - [1659352346.719958][12283:12288] CHIP:EM: Sending Standalone Ack fo + [1659972694.732632][3652:3652] CHIP:IM: Received Read request + [1659972694.732712][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972694.732739][3652:3652] CHIP:DMG: { + [1659972694.732761][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972694.732800][3652:3652] CHIP:DMG: [ + [1659972694.732824][3652:3652] CHIP:DMG: AttributePathIB = + [1659972694.732866][3652:3652] CHIP:DMG: { + [1659972694.732905][3652:3652] CHIP:DMG: Endpoint = 0x14, + [1659972694.732940][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972694.732980][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972694.733009][3652:3652] CHIP:DMG: } + [1659972694.733066][3652:3652] CHIP:DMG: + [1659972694.733092][3652:3652] CHIP:DMG: ], + [1659972694.733128][3652:3652] CHIP:DMG: + [1659972694.733154][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972694.733188][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972694.733211][3652:3652] CHIP:DMG: }, + [1659972694.733292][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972694.733401][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972694.733429][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + [1659972694.733460][3652:3652] CHIP:DMG: Reading attribute: Cluster=0x0000_001D Endpoint=1 AttributeId=0x0000_0000 (expanded=0) + [1659972694.733487][3652:3652] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_001D e=1 p=v + [1659972694.733520][3652:3652] CHIP:DMG: AccessControl: allowed + disabled: true + + - label: "" + PICS: MCORE.DEVLIST.UseDevices + verification: | + Verify on DUT(chip-tool) Log + + 2 + [1659352274.915018][14237:14242] CHIP:DMG: Endpoint 1, Cluster 0x0000_001D update version to 7e918bae + [1659352274.915107][14237:14242] CHIP:DMG: Endpoint 0, Cluster 0x0000_001D update version to 7561f371 + [1659352274.915166][14237:14242] CHIP:DL: Added device Light 2 to dynamic endpoint 14 (index=11) disabled: true - label: @@ -549,36 +2085,62 @@ tests: Verify on TH(all-clusters-app) Log: - [1659352461.553715][12295:12300] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0003 DataVersion: 1969353586 - [1659352461.553848][12295:12300] CHIP:TOO: parts list: 12 entries - [1659352461.553882][12295:12300] CHIP:TOO: [1]: 1 - [1659352461.553910][12295:12300] CHIP:TOO: [2]: 4 - [1659352461.553936][12295:12300] CHIP:TOO: [3]: 5 - [1659352461.553961][12295:12300] CHIP:TOO: [4]: 6 - [1659352461.553987][12295:12300] CHIP:TOO: [5]: 7 - [1659352461.554013][12295:12300] CHIP:TOO: [6]: 8 - [1659352461.554038][12295:12300] CHIP:TOO: [7]: 9 - [1659352461.554064][12295:12300] CHIP:TOO: [8]: 10 - [1659352461.554090][12295:12300] CHIP:TOO: [9]: 11 - [1659352461.554116][12295:12300] CHIP:TOO: [10]: 12 - [1659352461.554142][12295:12300] CHIP:TOO: [11]: 13 - [1659352461.554168][12295:12300] CHIP:TOO: [12]: 14 + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x0, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty ./chip-tool descriptor read parts-list 1 1 Verify on TH(all-clusters-app) Log: - [1659352492.227696][12302:12307] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_0003 DataVersion: 2123467695 - [1659352492.227770][12302:12307] CHIP:TOO: parts list: 11 entries - [1659352492.227804][12302:12307] CHIP:TOO: [1]: 4 - [1659352492.227831][12302:12307] CHIP:TOO: [2]: 5 - [1659352492.227857][12302:12307] CHIP:TOO: [3]: 6 - [1659352492.227883][12302:12307] CHIP:TOO: [4]: 7 - [1659352492.227909][12302:12307] CHIP:TOO: [5]: 8 - [1659352492.227934][12302:12307] CHIP:TOO: [6]: 9 - [1659352492.227960][12302:12307] CHIP:TOO: [7]: 10 - [1659352492.227986][12302:12307] CHIP:TOO: [8]: 11 - [1659352492.228012][12302:12307] CHIP:TOO: [9]: 12 - [1659352492.228038][12302:12307] CHIP:TOO: [10]: 13 - [1659352492.228063][12302:12307] CHIP:TOO: [11]: 14 + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x1, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + disabled: true + + - label: + "Verify DUT no longer contains the removed device in the list of + devices" + PICS: MCORE.DEVLIST.UseDevices + verification: | + Verify on DUT(chip-tool) Log + + 4 + [1659352426.184434][14237:14242] CHIP:DMG: Endpoint 1, Cluster 0x0000_001D update version to 7e918baf + [1659352426.184489][14237:14242] CHIP:DMG: Endpoint 0, Cluster 0x0000_001D update version to 7561f372 + [1659352426.184512][14237:14242] CHIP:DL: Removed device Light 1b from dynamic endpoint 3 (index=0) disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_1.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_1.yaml index b2b7678d366c50..6bfdea56d5dde6 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_1.yaml @@ -39,8 +39,7 @@ tests: - label: "TH_CR1 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - "1. Provision the device using 1st controller chip-tool on the raspi (use above instructions) - " + "1. Provision the TH_CE (all-cluster-app) device using TH_CR1 (chip-tool ) on the raspi" disabled: true - label: @@ -49,22 +48,22 @@ tests: (Enhanced Commissioning Method)." PICS: CADMIN.C.C00.Tx verification: | - On 1st controller using chip tool, open commissioning window using ECM + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + On TH_CR1 send the below command ./chip-tool pairing open-commissioning-window 1 1 400 2000 3841 - On TH1(chip-tool) Log + Verify Manual pairing code On TH_CR1(CHIP-TOOL) Log CHIP:IN: Sending encrypted msg 0xaaaad3464d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 5805157 msec [1635691999.946536][3822:3827] CHIP:DMG: ICR moving to [CommandSen] [1635691999.946586][3822:3827] CHIP:CTL: Manual pairing code: [35407541839] [1635691999.946650][3822:3827] CHIP:CTL: SetupQRCode: [MT:00000CQM00G6V851H10] [1635691999.946802][3822:3827] CHIP:EM: Sending Standalone Ack for MessageCounter:3234931243 on exchange 35324i - [1635691999.946850][3822:3827] CHIP:IN: Prepared plaintext message 0xffffaa58a960 to 0x0000000000000000 of type 0x10 and protocolId (0, 0) on exchange 35324i with MessageCounter:1726016118. - [1635691999.946895][3822:3827] CHIP:IN: Sending plaintext msg 0xffffaa58a960 with MessageCounter:1726016118 to 0x0000000000000000 at monotonic time: 5805158 msec - [1635691999.946983][3822:3827] CHIP:EM: Flushed pending ack for MessageCounter:3234931243 on exchange 35324i - On DUT as server side + + On TH_CE(All-cluster-app) log CHIP minimal mDNS started advertising. [1635687658.683388][3792:3792] CHIP:DIS: Failed to find a valid admin pairing. Node ID unknown @@ -79,10 +78,13 @@ tests: - label: "TH_CR1 sends command to TH_CE to read the list of Fabrics" PICS: OPCREDS.C.A0001 verification: | - On 1st controller using chip tool read fabricList + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command with their all-cluster-app and for the second and third commissioners. + + On TH_CR1 send the below command ./chip-tool operationalcredentials read fabrics 1 0 --fabric-filtered 0 + Verify 1 entry in the Fabrics list attributeOn TH_CR1(CHIP-TOOL) Log CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 3621507058 [1649245801.244173][10091:10096] CHIP:TOO: Fabrics: 1 entries @@ -100,20 +102,25 @@ tests: - label: "DUT_CR2 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - On 2nd controller, using chip-tool connect using manual code. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + On DUT_CR2 send the below command - On Raspi platform use commissioner-name parameter to commission different TH as server with DUT as commissioner, Pls use equivalent command on the respective TH as server Below is the example when using chip tool as controller (considering 35998938564 as the manual code generated by 1st controller) ./chip-tool pairing code 2 35998938564 --commissioner-name beta - Verify whether you got below message in the log of TH + Verify whether you got below message in the log of DUT_CR2(CHIP-TOOL) Device commissioning completed with success disabled: true - label: "Verify TH_CE is now discoverable over DNS-SD with two SRV Records" verification: | - On the raspi , Verify if the DUT is broadcasting using + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + On the raspi , Verify if the TH_CE(All-cluster-app) is broadcasting + + On TH_CR1 send the below command ubuntu@ubuntu:~/may10_cntrl2/connectedhomeip/examples/chip-tool/out/debug$ avahi-browse -rt _matter._tcp + eth0 IPv6 E0AF53B23E580769-0000000000000002 _matter._tcp local @@ -135,89 +142,66 @@ tests: Information Clusters NodeLabel mandatory attribute" PICS: BINFO.C.A0005 verification: | - On 2nd controller using chip tool write and read node-label - - On Raspi platform use commissioner-name parameter to commission different TH as server with DUT as commissioner, Pls use equivalent command on the respective TH as server - Below is the example when using chip tool as controller - ./chip-tool basic write node-label te5new 2 0 --commissioner-name beta + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command with their all-cluster-app and for the second and third commissioners. - CHIP:DMG: WriteClient moving to [ResponseRe] - [1649671460.431199][20958:20963] CHIP:DMG: WriteResponseMessage = - [1649671460.431217][20958:20963] CHIP:DMG: { - [1649671460.431230][20958:20963] CHIP:DMG: AttributeStatusIBs = - [1649671460.431252][20958:20963] CHIP:DMG: [ - [1649671460.431266][20958:20963] CHIP:DMG: AttributeStatusIB = - [1649671460.431282][20958:20963] CHIP:DMG: { - [1649671460.431297][20958:20963] CHIP:DMG: AttributePathIB = - [1649671460.431314][20958:20963] CHIP:DMG: { - [1649671460.431331][20958:20963] CHIP:DMG: Endpoint = 0x0, - [1649671460.431347][20958:20963] CHIP:DMG: Cluster = 0x28, - [1649671460.431364][20958:20963] CHIP:DMG: Attribute = 0x0000_0005, - [1649671460.431380][20958:20963] CHIP:DMG: } - [1649671460.431403][20958:20963] CHIP:DMG: - [1649671460.431422][20958:20963] CHIP:DMG: StatusIB = - [1649671460.431445][20958:20963] CHIP:DMG: { - [1649671460.431467][20958:20963] CHIP:DMG: status = 0x00 (SUCCESS), - [1649671460.431488][20958:20963] CHIP:DMG: }, - [1649671460.431511][20958:20963] CHIP:DMG: - [1649671460.431530][20958:20963] CHIP:DMG: }, - [1649671460.431556][20958:20963] CHIP:DMG: - [1649671460.431570][20958:20963] CHIP:DMG: ], - [1649671460.431593][20958:20963] CHIP:DMG: - [1649671460.431607][20958:20963] CHIP:DMG: InteractionModelRevision = 1 - [1649671460.431620][20958:20963] CHIP:DMG: } - [1649671460.431685][20958:20963] CHIP:DMG: WriteClient moving to [AwaitingDe] - [1649671460.431729][20958:20963] CHIP:EM: Sending Standalone Ack for MessageCounter:11088724 on exchange 41848i + On DUT_CR2 send the below command + ./chip-tool basic write node-label te5new 2 0 --commissioner-name beta - Verify read attribute returns the updated value written + Verify Write request on TH_CE(all-clusters-app) Log + + [1660894021.901330][2871:2871] CHIP:EM: Handling via exchange: 9616r, Delegate: 0xaaaada21ffc0 + [1660894021.901426][2871:2871] CHIP:IM: Received Write request + [1660894021.901484][2871:2871] CHIP:DMG: IM WH moving to [Initialized] + [1660894021.901613][2871:2871] CHIP:DMG: WriteRequestMessage = + [1660894021.901676][2871:2871] CHIP:DMG: { + [1660894021.901735][2871:2871] CHIP:DMG: suppressResponse = false, + [1660894021.901802][2871:2871] CHIP:DMG: timedRequest = false, + [1660894021.901864][2871:2871] CHIP:DMG: AttributeDataIBs = + [1660894021.901940][2871:2871] CHIP:DMG: [ + [1660894021.902001][2871:2871] CHIP:DMG: AttributeDataIB = + [1660894021.902071][2871:2871] CHIP:DMG: { + [1660894021.902136][2871:2871] CHIP:DMG: AttributePathIB = + [1660894021.902219][2871:2871] CHIP:DMG: { + [1660894021.902302][2871:2871] CHIP:DMG: Endpoint = 0x0, + [1660894021.902394][2871:2871] CHIP:DMG: Cluster = 0x28, + [1660894021.902488][2871:2871] CHIP:DMG: Attribute = 0x0000_0005, + [1660894021.902574][2871:2871] CHIP:DMG: } + [1660894021.902827][2871:2871] CHIP:DMG: + [1660894021.902912][2871:2871] CHIP:DMG: Data = "te5new" (6 chars), + [1660894021.902985][2871:2871] CHIP:DMG: }, - On Raspi platform use commissioner-name parameter to commission different TH as server with DUT as commissioner, Pls use equivalent command on the respective TH as server ./chip-tool basic read node-label 2 0 --commissioner-name beta - CHIP:DMG: ReportDataMessage = - [1649671466.310233][20969:20974] CHIP:DMG: { - [1649671466.310241][20969:20974] CHIP:DMG: AttributeReportIBs = - [1649671466.310256][20969:20974] CHIP:DMG: [ - [1649671466.310265][20969:20974] CHIP:DMG: AttributeReportIB = - [1649671466.310281][20969:20974] CHIP:DMG: { - [1649671466.310292][20969:20974] CHIP:DMG: AttributeDataIB = - [1649671466.310304][20969:20974] CHIP:DMG: { - [1649671466.310317][20969:20974] CHIP:DMG: DataVersion = 0xd581a5e8, - [1649671466.310328][20969:20974] CHIP:DMG: AttributePathIB = - [1649671466.310342][20969:20974] CHIP:DMG: { - [1649671466.310355][20969:20974] CHIP:DMG: Endpoint = 0x0, - [1649671466.310367][20969:20974] CHIP:DMG: Cluster = 0x28, - [1649671466.310380][20969:20974] CHIP:DMG: Attribute = 0x0000_0005, - [1649671466.310391][20969:20974] CHIP:DMG: } - [1649671466.310405][20969:20974] CHIP:DMG: - [1649671466.310420][20969:20974] CHIP:DMG: Data = "te8", - [1649671466.310432][20969:20974] CHIP:DMG: }, - [1649671466.310446][20969:20974] CHIP:DMG: - [1649671466.310457][20969:20974] CHIP:DMG: }, - [1649671466.310471][20969:20974] CHIP:DMG: - [1649671466.310481][20969:20974] CHIP:DMG: ], - [1649671466.310497][20969:20974] CHIP:DMG: - [1649671466.310508][20969:20974] CHIP:DMG: SuppressResponse = true, - [1649671466.310518][20969:20974] CHIP:DMG: InteractionModelRevision = 1 - [1649671466.310528][20969:20974] CHIP:DMG: } - [1649671466.310629][20969:20974] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0005 DataVersion: 3582043624 - [1649671466.310646][20969:20974] CHIP:TOO: NodeLabel: te8 - [1649671466.310704][20969:20974] CHIP:EM: Sending Standalone Ack for MessageCounter:15357338 on exchange 20724i + Verify read request on TH_CE(all-clusters-app) Log + + + [1660894142.828718][2871:2871] CHIP:EM: Handling via exchange: 62454r, Delegate: 0xaaaada21ffc0 + [1660894142.828834][2871:2871] CHIP:IM: Received Read request + [1660894142.829023][2871:2871] CHIP:DMG: ReadRequestMessage = + [1660894142.829097][2871:2871] CHIP:DMG: { + [1660894142.829153][2871:2871] CHIP:DMG: AttributePathIBs = + [1660894142.829235][2871:2871] CHIP:DMG: [ + [1660894142.829306][2871:2871] CHIP:DMG: AttributePathIB = + [1660894142.829376][2871:2871] CHIP:DMG: { + [1660894142.829449][2871:2871] CHIP:DMG: Endpoint = 0x0, + [1660894142.829532][2871:2871] CHIP:DMG: Cluster = 0x28, + [1660894142.829627][2871:2871] CHIP:DMG: Attribute = 0x0000_0005, + [1660894142.829703][2871:2871] CHIP:DMG: } + [1660894142.829777][2871:2871] CHIP:DMG: disabled: true - label: "DUT_CR2 sends command to TH_CE to read the list of Fabrics" PICS: OPCREDS.C.A0001 verification: | - On 2nd controller using chip tool read fabricList - + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - Below is the example using chip tool as controller + On DUT_CR2 send the below command ./chip-tool operationalcredentials read fabrics 2 0 --fabric-filtered 0 --commissioner-name beta - + Verify 2 entries in the Fabrics list attribute On DUT_CR2(chip-tool) Log CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 3621507063 [1649245825.315152][10098:10103] CHIP:TOO: Fabrics: 2 entries @@ -244,44 +228,52 @@ tests: Clusters NodeLabel mandatory attribute" PICS: BINFO.C.A0005 verification: | - On first controller using chip tool, write attribute and read attribute + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - ./chip-tool basic write node-label te8 1 0 + On TH_CR1 send the below command - CHIP:DMG: WriteResponse = - CHIP:DMG: WriteResponseMessage = - [1649245940.788522][10110:10115] CHIP:DMG: { - [1649245940.788577][10110:10115] CHIP:DMG: AttributeStatusIBs = - [1649245940.788653][10110:10115] CHIP:DMG: [ - [1649245940.788713][10110:10115] CHIP:DMG: AttributeStatusIB = - [1649245940.788787][10110:10115] CHIP:DMG: { - [1649245940.788852][10110:10115] CHIP:DMG: AttributePathIB = - [1649245940.788931][10110:10115] CHIP:DMG: { - [1649245940.789009][10110:10115] CHIP:DMG: Endpoint = 0x0, - [1649245940.789143][10110:10115] CHIP:DMG: Cluster = 0x28, - [1649245940.789228][10110:10115] CHIP:DMG: Attribute = 0x0000_0005, - [1649245940.789313][10110:10115] CHIP:DMG: } - [1649245940.789388][10110:10115] CHIP:DMG: - [1649245940.789454][10110:10115] CHIP:DMG: StatusIB = - [1649245940.789519][10110:10115] CHIP:DMG: { - [1649245940.789588][10110:10115] CHIP:DMG: status = 0x00 (SUCCESS), - [1649245940.789654][10110:10115] CHIP:DMG: }, - [1649245940.789719][10110:10115] CHIP:DMG: - [1649245940.789778][10110:10115] CHIP:DMG: }, - [1649245940.789841][10110:10115] CHIP:DMG: - [1649245940.789885][10110:10115] CHIP:DMG: ], - [1649245940.789941][10110:10115] CHIP:DMG: - [1649245940.789984][10110:10115] CHIP:DMG: InteractionModelRevision = 1 - [1649245940.790033][10110:10115] CHIP:DMG: } - [1649245940.790167][10110:10115] CHIP:DMG: WriteClient moving to [AwaitingDe] + ./chip-tool basic write node-label te8 1 0 + Verify the Write request On TH_CE(all-clusters-app) Log + + + [1660894538.804578][2871:2871] CHIP:EM: Handling via exchange: 64932r, Delegate: 0xaaaada21ffc0 + [1660894538.804677][2871:2871] CHIP:IM: Received Write request + [1660894538.804737][2871:2871] CHIP:DMG: IM WH moving to [Initialized] + [1660894538.804867][2871:2871] CHIP:DMG: WriteRequestMessage = + [1660894538.804933][2871:2871] CHIP:DMG: { + [1660894538.804993][2871:2871] CHIP:DMG: suppressResponse = false, + [1660894538.805059][2871:2871] CHIP:DMG: timedRequest = false, + [1660894538.805120][2871:2871] CHIP:DMG: AttributeDataIBs = + [1660894538.805196][2871:2871] CHIP:DMG: [ + [1660894538.805258][2871:2871] CHIP:DMG: AttributeDataIB = + [1660894538.805346][2871:2871] CHIP:DMG: { + [1660894538.805412][2871:2871] CHIP:DMG: AttributePathIB = + [1660894538.805493][2871:2871] CHIP:DMG: { + [1660894538.805575][2871:2871] CHIP:DMG: Endpoint = 0x0, + [1660894538.805661][2871:2871] CHIP:DMG: Cluster = 0x28, + [1660894538.805752][2871:2871] CHIP:DMG: Attribute = 0x0000_0005, + [1660894538.805840][2871:2871] CHIP:DMG: } + [1660894538.805922][2871:2871] CHIP:DMG: + [1660894538.806010][2871:2871] CHIP:DMG: Data = "te8" (3 chars), + [1660894538.806082][2871:2871] CHIP:DMG: }, - Verify read attribute returns the updated value written ./chip-tool basic read node-label 1 0 - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0005 DataVersion: 3061847068 - [1649245950.006849][10116:10121] CHIP:TOO: NodeLabel: te8 - [1649245950.007024][10116:10121] CHIP:EM: Sending Standalone Ack for MessageCounter:12495101 on exchange 24816i + Verify the Read request On TH_CE(all-clusters-app) Log + + [1660894686.511690][2871:2871] CHIP:EM: Received message of type 0x2 with protocolId (0, 1) and MessageCounter:155836021 on exchange 25703r + [1660894686.511817][2871:2871] CHIP:EM: Handling via exchange: 25703r, Delegate: 0xaaaada21ffc0 + [1660894686.511920][2871:2871] CHIP:IM: Received Read request + [1660894686.512190][2871:2871] CHIP:DMG: ReadRequestMessage = + [1660894686.512259][2871:2871] CHIP:DMG: { + [1660894686.512314][2871:2871] CHIP:DMG: AttributePathIBs = + [1660894686.512380][2871:2871] CHIP:DMG: [ + [1660894686.512441][2871:2871] CHIP:DMG: AttributePathIB = + [1660894686.512526][2871:2871] CHIP:DMG: { + [1660894686.512599][2871:2871] CHIP:DMG: Endpoint = 0x0, + [1660894686.512683][2871:2871] CHIP:DMG: Cluster = 0x28, + [1660894686.512772][2871:2871] CHIP:DMG: Attribute = 0x0000_0005, disabled: true - label: @@ -289,42 +281,68 @@ tests: Information Clusters NodeLabel mandatory attribute" PICS: BINFO.C.A0005 verification: | - On 2nd controller using chip-tool read, write attribute and then read attribute to and from TH_CE + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - Below is an example of using chip tool as controller + On DUT_CR2 send the below command ./chip-tool basic write node-label te5new 2 0 --commissioner-name beta - CHIP:DMG: WriteResponseMessage = - [1649245940.788522][10110:10115] CHIP:DMG: { - [1649245940.788577][10110:10115] CHIP:DMG: AttributeStatusIBs = - [1649245940.788653][10110:10115] CHIP:DMG: [ - [1649245940.788713][10110:10115] CHIP:DMG: AttributeStatusIB = - [1649245940.788787][10110:10115] CHIP:DMG: { - [1649245940.788852][10110:10115] CHIP:DMG: AttributePathIB = - [1649245940.788931][10110:10115] CHIP:DMG: { - [1649245940.789009][10110:10115] CHIP:DMG: Endpoint = 0x0, - [1649245940.789143][10110:10115] CHIP:DMG: Cluster = 0x28, - [1649245940.789228][10110:10115] CHIP:DMG: Attribute = 0x0000_0005, - [1649245940.789313][10110:10115] CHIP:DMG: } + Verify the Write request On TH_CE(all-clusters-app) Log + + [1660900144.090077][3045:3045] CHIP:EM: Handling via exchange: 23950r, Delegate: 0xaaaaadbeffc0 + [1660900144.090167][3045:3045] CHIP:IM: Received Write request + [1660900144.090226][3045:3045] CHIP:DMG: IM WH moving to [Initialized] + [1660900144.090347][3045:3045] CHIP:DMG: WriteRequestMessage = + [1660900144.090411][3045:3045] CHIP:DMG: { + [1660900144.090470][3045:3045] CHIP:DMG: suppressResponse = false, + [1660900144.090537][3045:3045] CHIP:DMG: timedRequest = false, + [1660900144.090598][3045:3045] CHIP:DMG: AttributeDataIBs = + [1660900144.090677][3045:3045] CHIP:DMG: [ + [1660900144.090739][3045:3045] CHIP:DMG: AttributeDataIB = + [1660900144.090816][3045:3045] CHIP:DMG: { + [1660900144.090887][3045:3045] CHIP:DMG: AttributePathIB = + [1660900144.090976][3045:3045] CHIP:DMG: { + [1660900144.091061][3045:3045] CHIP:DMG: Endpoint = 0x0, + [1660900144.091150][3045:3045] CHIP:DMG: Cluster = 0x28, + [1660900144.091247][3045:3045] CHIP:DMG: Attribute = 0x0000_0005, + [1660900144.091344][3045:3045] CHIP:DMG: } + [1660900144.091432][3045:3045] CHIP:DMG: + [1660900144.091560][3045:3045] CHIP:DMG: Data = "te5new" (6 chars), + [1660900144.091655][3045:3045] CHIP:DMG: }, + + Verify the success response in the DUT_CR2(Chip-tool) log + + [1649245940.789388][10110:10115] CHIP:DMG: [1649245940.789454][10110:10115] CHIP:DMG: StatusIB = [1649245940.789519][10110:10115] CHIP:DMG: { [1649245940.789588][10110:10115] CHIP:DMG: status = 0x00 (SUCCESS), [1649245940.789654][10110:10115] CHIP:DMG: }, - [1649245940.789719][10110:10115] CHIP:DMG: - [1649245940.789778][10110:10115] CHIP:DMG: }, - [1649245940.789841][10110:10115] CHIP:DMG: - [1649245940.789885][10110:10115] CHIP:DMG: ], - [1649245940.789941][10110:10115] CHIP:DMG: - [1649245940.789984][10110:10115] CHIP:DMG: InteractionModelRevision = 1 - [1649245940.790033][10110:10115] CHIP:DMG: } - [1649245940.790167][10110:10115] CHIP:DMG: WriteClient moving to [AwaitingDe] + Verify read attribute returns the updated value written ./chip-tool basic read node-label 2 0 --commissioner-name beta + Verify the Write request On TH_CE(all-clusters-app) Log + + [1660900360.861128][3045:3045] CHIP:EM: Handling via exchange: 17574r, Delegate: 0xaaaaadbeffc0 + [1660900360.861223][3045:3045] CHIP:IM: Received Read request + [1660900360.861402][3045:3045] CHIP:DMG: ReadRequestMessage = + [1660900360.861471][3045:3045] CHIP:DMG: { + [1660900360.861527][3045:3045] CHIP:DMG: AttributePathIBs = + [1660900360.861591][3045:3045] CHIP:DMG: [ + [1660900360.861651][3045:3045] CHIP:DMG: AttributePathIB = + [1660900360.861727][3045:3045] CHIP:DMG: { + [1660900360.861798][3045:3045] CHIP:DMG: Endpoint = 0x0, + [1660900360.861871][3045:3045] CHIP:DMG: Cluster = 0x28, + [1660900360.861939][3045:3045] CHIP:DMG: Attribute = 0x0000_0005, + [1660900360.862012][3045:3045] CHIP:DMG: } + [1660900360.862088][3045:3045] CHIP:DMG: + [1660900360.862158][3045:3045] CHIP:DMG: ], + + Verify the success response in the DUT_CR2(Chip-tool) log + CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0005 DataVersion: 3061847068 [1649245950.006849][10116:10121] CHIP:TOO: NodeLabel: te5new [1649245950.007024][10116:10121] CHIP:EM: Sending Standalone Ack for MessageCounter:12495101 on exchange 24816i @@ -341,19 +359,25 @@ tests: (Enhanced Commissioning Method)" PICS: CADMIN.C.C00.Tx verification: | - On 2nd controller open commissioning window using ECM + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + On DUT_CR2 send the below command - Below is an example when using chip tool as controller - ./chip-tool pairing open-commissionig-window 2 1 300 1000 3841 --commissioner-name beta + ./chip-tool pairing open-commissioning-window 2 1 300 1000 3841 --commissioner-name + + Verify the Commissioning window is opened in TH_CE(all-clusters-app) Log + + [1660901022.112296][3045:3045] CHIP:DIS: mDNS service published: _matterc._udp + [1660901022.112389][3045:3045] CHIP:ZCL: Commissioning window is now open + [1660901022.112474][3045:3045] CHIP:DMG: Command handler moving to [ Preparing] + + Verify the Manual pairing code On DUT_CR2(chip-tool) Log CHIP: [IN] Prepared encrypted message 0x124012e80 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 50829i with MessageCounter:0. [1635693418549] [30519:4583024] CHIP: [IN] Sending encrypted msg 0x124012e80 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 5995099243 msec [1635693418549] [30519:4583024] CHIP: [DMG] ICR moving to [CommandSen] [1635693418549] [30519:4583024] CHIP: [CTL] Manual pairing code: [34995354639] [1635693418550] [30519:4583024] CHIP: [CTL] SetupQRCode: [MT:00000CQM00YND84XX10] - [1635693418550] [30519:4583024] CHIP: [EM] Sending Standalone Ack for MessageCounter:3441918415 on exchange 50828i - [1635693418550] [30519:4583024] CHIP: [IN] Prepared plaintext message 0x16b92d198 to 0x0000000000000000 of type 0x10 and protocolId (0, 0) on exchange 50828i with MessageCounter:3727034150. - [1635693418550] [30519:4583024] CHIP: [IN] Sending plaintext msg 0x16b92d198 with Mes disabled: true - label: @@ -361,43 +385,26 @@ tests: using the Revoke Commissioning command" PICS: CADMIN.C.C02.Tx verification: | - On 2nd controller, run revoke command + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - Below is an example when using chip tool as controller + On DUT_CR2 send the below command ./chip-tool administratorcommissioning revoke-commissioning 2 0 --timedInteractionTimeoutMs 1000 --commissioner-name beta + Verify the Commissioning window is closed in TH_CE(all-clusters-app) Log + + [1660901039.590891][3045:3045] CHIP:DMG: AccessControl: allowed + [1660901039.590962][3045:3045] CHIP:DMG: Received command for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0002 + [1660901039.591036][3045:3045] CHIP:ZCL: Received command to close commissioning window + [1660901039.591094][3045:3045] CHIP:SVR: Closing pairing window + [1660901039.591169][3045:3045] CHIP:IN: SecureSession[0xaaaab010d400]: Released - Type:1 LSID:14411 + + Verify the success response On DUT_CR2(chip-tool) Log - CHIP: [DMG] InvokeResponseMessage = - [1648115245106] [6681:3894448] CHIP: [DMG] { - [1648115245106] [6681:3894448] CHIP: [DMG] suppressResponse = false, - [1648115245106] [6681:3894448] CHIP: [DMG] InvokeResponseIBs = - [1648115245106] [6681:3894448] CHIP: [DMG] [ - [1648115245106] [6681:3894448] CHIP: [DMG] InvokeResponseIB = - [1648115245106] [6681:3894448] CHIP: [DMG] { - [1648115245106] [6681:3894448] CHIP: [DMG] CommandStatusIB = - [1648115245106] [6681:3894448] CHIP: [DMG] { - [1648115245106] [6681:3894448] CHIP: [DMG] CommandPathIB = - [1648115245106] [6681:3894448] CHIP: [DMG] { - [1648115245106] [6681:3894448] CHIP: [DMG] EndpointId = 0x0, - [1648115245106] [6681:3894448] CHIP: [DMG] ClusterId = 0x3c, - [1648115245106] [6681:3894448] CHIP: [DMG] CommandId = 0x2, - [1648115245106] [6681:3894448] CHIP: [DMG] }, - [1648115245106] [6681:3894448] CHIP: [DMG] [1648115245106] [6681:3894448] CHIP: [DMG] StatusIB = [1648115245106] [6681:3894448] CHIP: [DMG] { [1648115245106] [6681:3894448] CHIP: [DMG] status = 0x0, [1648115245106] [6681:3894448] CHIP: [DMG] }, - [1648115245106] [6681:3894448] CHIP: [DMG] - [1648115245106] [6681:3894448] CHIP: [DMG] }, - [1648115245106] [6681:3894448] CHIP: [DMG] - [1648115245106] [6681:3894448] CHIP: [DMG] }, - [1648115245106] [6681:3894448] CHIP: [DMG] - [1648115245106] [6681:3894448] CHIP: [DMG] ], - [1648115245107] [6681:3894448] CHIP: [DMG] - [1648115245107] [6681:3894448] CHIP: [DMG] InteractionModelRevision = 1 - [1648115245107] [6681:3894448] CHIP: [DMG] }, - [1648115245107] [6681:3894448] CHIP: [DMG] Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0002 Status=0x0 disabled: true - label: @@ -405,11 +412,13 @@ tests: with TH_CE" PICS: CADMIN.C verification: | - On 3rd controller using chip-tool connect using manual code generated from 1st controller. This attempt should fail, i.e + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command with their all-cluster-app and for the second and third commissioners. + + On TH_CR3 send the below command ./chip-tool pairing code 3 34995354639 --commissioner-name gamma - verify you got the following message in the TH log + verify you got the following message in the TH_CR3(chip-tool) log CHIP:SC: PASESession timed out while waiting for a response from the peer. Expected message type was 33 CHIP:TOO: Secure Pairing Failed @@ -421,46 +430,54 @@ tests: Information Clusters NodeLabel mandatory attribute" PICS: BINFO.C.A0005 verification: | - On 2nd controller , write attribute and read attribute to and from TH_CE + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - Below is the example using chip tool as controller + On DUT_CR2 send the below command ./chip-tool basic write node-label te5new 2 0 --commissioner-name beta - CHIP:DMG: WriteResponseMessage = - [1649245940.788522][10110:10115] CHIP:DMG: { - [1649245940.788577][10110:10115] CHIP:DMG: AttributeStatusIBs = - [1649245940.788653][10110:10115] CHIP:DMG: [ - [1649245940.788713][10110:10115] CHIP:DMG: AttributeStatusIB = - [1649245940.788787][10110:10115] CHIP:DMG: { - [1649245940.788852][10110:10115] CHIP:DMG: AttributePathIB = - [1649245940.788931][10110:10115] CHIP:DMG: { - [1649245940.789009][10110:10115] CHIP:DMG: Endpoint = 0x0, - [1649245940.789143][10110:10115] CHIP:DMG: Cluster = 0x28, - [1649245940.789228][10110:10115] CHIP:DMG: Attribute = 0x0000_0005, - [1649245940.789313][10110:10115] CHIP:DMG: } - [1649245940.789388][10110:10115] CHIP:DMG: - [1649245940.789454][10110:10115] CHIP:DMG: StatusIB = - [1649245940.789519][10110:10115] CHIP:DMG: { - [1649245940.789588][10110:10115] CHIP:DMG: status = 0x00 (SUCCESS), - [1649245940.789654][10110:10115] CHIP:DMG: }, - [1649245940.789719][10110:10115] CHIP:DMG: - [1649245940.789778][10110:10115] CHIP:DMG: }, - [1649245940.789841][10110:10115] CHIP:DMG: - [1649245940.789885][10110:10115] CHIP:DMG: ], - [1649245940.789941][10110:10115] CHIP:DMG: - [1649245940.789984][10110:10115] CHIP:DMG: InteractionModelRevision = 1 - [1649245940.790033][10110:10115] CHIP:DMG: } - [1649245940.790167][10110:10115] CHIP:DMG: WriteClient moving to [AwaitingDe] - - Verify read attribute returns the updated value written + Verify the Write request On TH_CE(all-clusters-app) Log + + [1660902144.913634][3045:3045] CHIP:EM: Handling via exchange: 22257r, Delegate: 0xaaaaadbeffc0 + [1660902144.913728][3045:3045] CHIP:IM: Received Write request + [1660902144.913785][3045:3045] CHIP:DMG: IM WH moving to [Initialized] + [1660902144.913912][3045:3045] CHIP:DMG: WriteRequestMessage = + [1660902144.913977][3045:3045] CHIP:DMG: { + [1660902144.914038][3045:3045] CHIP:DMG: suppressResponse = false, + [1660902144.914106][3045:3045] CHIP:DMG: timedRequest = false, + [1660902144.914168][3045:3045] CHIP:DMG: AttributeDataIBs = + [1660902144.914244][3045:3045] CHIP:DMG: [ + [1660902144.914305][3045:3045] CHIP:DMG: AttributeDataIB = + [1660902144.914375][3045:3045] CHIP:DMG: { + [1660902144.914440][3045:3045] CHIP:DMG: AttributePathIB = + [1660902144.914522][3045:3045] CHIP:DMG: { + [1660902144.914602][3045:3045] CHIP:DMG: Endpoint = 0x0, + [1660902144.914691][3045:3045] CHIP:DMG: Cluster = 0x28, + [1660902144.914940][3045:3045] CHIP:DMG: Attribute = 0x0000_0005, + [1660902144.915025][3045:3045] CHIP:DMG: } + [1660902144.915109][3045:3045] CHIP:DMG: + [1660902144.915208][3045:3045] CHIP:DMG: Data = "te5new" (6 chars), + [1660902144.915292][3045:3045] CHIP:DMG: }, + [1660902144.915374][3045:3045] CHIP:DMG: ./chip-tool basic read node-label 2 0 --commissioner-name beta - - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0005 DataVersion: 3061847068 - [1649245950.006849][10116:10121] CHIP:TOO: NodeLabel: te5new - [1649245950.007024][10116:10121] CHIP:EM: Sending Standalone Ack for MessageCounter:12495101 on exchange 24816i + Verify the Write request On TH_CE(all-clusters-app) Log + + [1660902253.379018][3045:3045] CHIP:EM: Handling via exchange: 3197r, Delegate: 0xaaaaadbeffc0 + [1660902253.379122][3045:3045] CHIP:IM: Received Read request + [1660902253.379306][3045:3045] CHIP:DMG: ReadRequestMessage = + [1660902253.379373][3045:3045] CHIP:DMG: { + [1660902253.379430][3045:3045] CHIP:DMG: AttributePathIBs = + [1660902253.379496][3045:3045] CHIP:DMG: [ + [1660902253.379557][3045:3045] CHIP:DMG: AttributePathIB = + [1660902253.379634][3045:3045] CHIP:DMG: { + [1660902253.379703][3045:3045] CHIP:DMG: Endpoint = 0x0, + [1660902253.379782][3045:3045] CHIP:DMG: Cluster = 0x28, + [1660902253.379871][3045:3045] CHIP:DMG: Attribute = 0x0000_0005, + [1660902253.379935][3045:3045] CHIP:DMG: } + [1660902253.380141][3045:3045] CHIP:DMG: + [1660902253.380208][3045:3045] CHIP:DMG: ], disabled: true - label: @@ -468,19 +485,25 @@ tests: ECM" PICS: CADMIN.C.C00.Tx verification: | - On 2nd controller open commissioning window using ECM + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + On DUT_CR2 send the below command - Below is an example when using chip tool as controller ./chip-tool pairing open-commissioning-window 2 1 180 1000 3840 --commissioner-name beta - CHIP: [IN] Prepared encrypted message 0x124012e80 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 50829i with MessageCounter:0. + Verify the Commissioning window is opened in TH_CE(all-clusters-app) Log + + [1660902413.357922][3045:3045] CHIP:DIS: mDNS service published: _matterc._udp + [1660902413.358025][3045:3045] CHIP:ZCL: Commissioning window is now open + [1660902413.358116][3045:3045] CHIP:DMG: Command handler moving to [ Preparing] + + Verify Manual pairing code On DUT_CR2(chip-tool) Log + [1635693418549] [30519:4583024] CHIP: [IN] Sending encrypted msg 0x124012e80 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 5995099243 msec [1635693418549] [30519:4583024] CHIP: [DMG] ICR moving to [CommandSen] [1635693418549] [30519:4583024] CHIP: [CTL] Manual pairing code: [34995354639] [1635693418550] [30519:4583024] CHIP: [CTL] SetupQRCode: [MT:00000CQM00YND84XX10] - [1635693418550] [30519:4583024] CHIP: [EM] Sending Standalone Ack for MessageCounter:3441918415 on exchange 50828i - [1635693418550] [30519:4583024] CHIP: [IN] Prepared plaintext message 0x16b92d198 to 0x0000000000000000 of type 0x10 and protocolId (0, 0) on exchange 50828i with MessageCounter:3727034150. - [1635693418550] [30519:4583024] CHIP: [IN] Sending plaintext msg 0x16b92d198 with Mes + [1635693418550] [30519:4583024] CHIP: [EM] Sending Standalone Ack for MessageCounter:3441918415 on exchange disabled: true - label: @@ -494,13 +517,20 @@ tests: ECM" PICS: CADMIN.C.C00.Tx verification: | - On 2nd controller open commissioning window using ECM + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - Below is an example when using chip tool as controller - ./chip-tool pairing open-commissionig-window 2 1 300 1000 3840 --commissioner-name beta + On DUT_CR2 send the below command + + ./chip-tool pairing open-commissioning-window 2 1 300 1000 3840 --commissioner-name beta + + Verify the Commissioning window is opened in TH_CE(all-clusters-app) Log + + [1660902623.744448][3045:3045] CHIP:DIS: mDNS service published: _matterc._udp + [1660902623.744550][3045:3045] CHIP:ZCL: Commissioning window is now open + [1660902623.744634][3045:3045] CHIP:DMG: Command handler moving to [ Preparing] + + Verify Manual pairing code On DUT_CR2(chip-tool) Log - CHIP: [IN] Prepared encrypted message 0x124012e80 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 50829i with MessageCounter:0. - [1635693418549] [30519:4583024] CHIP: [IN] Sending encrypted msg 0x124012e80 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 5995099243 msec [1635693418549] [30519:4583024] CHIP: [DMG] ICR moving to [CommandSen] [1635693418549] [30519:4583024] CHIP: [CTL] Manual pairing code: [34995354639] [1635693418550] [30519:4583024] CHIP: [CTL] SetupQRCode: [MT:00000CQM00YND84XX10] @@ -514,15 +544,26 @@ tests: from step 15" PICS: CADMIN.C verification: | - On 1st controller, using chip-tool connect using manual code. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - Below is the example when using chip tool as controller (considering 34995354639 as the manual code generated by DUT) + On TH_CR1 send the below command + + (considering 34995354639 as the manual code generated by DUT) ./chip-tool pairing code 2 34995354639 + Verify the OperationalCert error 9 in TH_CE(all-clusters-app) Log + + [1660902716.613196][3045:3045] CHIP:DMG: Command handler moving to [AddedComma] + [1660902716.613274][3045:3045] CHIP:ZCL: OpCreds: Failed AddNOC request (err=../../examples/all-clusters-app/linux/third_party/connectedhomeip/src/credentials/FabricTable.cpp:1692: CHIP Error 0x0000007E: Trying to add a NOC for a fabric that already exists) with OperationalCert error 9 + [1660902716.613394][3045:3045] CHIP:DMG: Decreasing reference count for CommandHandler, remaining 0 + [1660902716.613497][3045:3045] CHIP:EM: Piggybacking Ack for MessageCounter:176866087 on exchange: 56605r + + Verify that the commissioning process fails as TH_CE was already commissioned by TH_CR1 in step 1 + + Trying to add a NOC for a fabric that already exists On TH_CR1(chip-tool) Log + [1651786200275] [36301:315544] CHIP: [DMG] Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0008 [1651786200275] [36301:315544] CHIP: [CTL] Device returned status 9 on receiving the NOC [1651786200275] [36301:315544] CHIP: [CTL] Add NOC failed with error ../../src/controller/CHIPDeviceController.cpp:1187: CHIP Error 0x0000007E: Trying to add a NOC for a fabric that already exists [1651786200275] [36301:315544] CHIP: [CTL] Error on commissioning step "SendNOC": "../../src/controller/CHIPDeviceController.cpp:1187: CHIP Error 0x0000007E: Trying to add a NOC for a fabric that already exists" - - Verify that the commissioning process fails as TH_CE was already commissioned by TH_CR1 in step 1 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_11.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_11.yaml index 54083688e066b7..9f820a377fbfea 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_11.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_11.yaml @@ -11,10 +11,9 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default name: - 4.1.11. [TC-CADMIN-1.11] Open commissioning window on DUT twice using ECM + 30.1.11. [TC-CADMIN-1.11] Open commissioning window on DUT twice using ECM then BCM [DUT - Commissionee] PICS: @@ -23,437 +22,284 @@ PICS: config: nodeId: 0x12344321 - cluster: "Basic" + timeout: 400 + nodeId2: + type: node_id + defaultValue: 0xCAFE + nodeId3: + type: node_id + defaultValue: 0xC00FEE endpoint: 0 + discriminator: + type: int16u + defaultValue: 3840 + payload: + type: char_string + defaultValue: "MT:-24J0AFN00KA0648G00" + PakeVerifier: + type: octet_string + defaultValue: + "\xb9\x61\x70\xaa\xe8\x03\x34\x68\x84\x72\x4f\xe9\xa3\xb2\x87\xc3\x03\x30\xc2\xa6\x60\x37\x5d\x17\xbb\x20\x5a\x8c\xf1\xae\xcb\x35\x04\x57\xf8\xab\x79\xee\x25\x3a\xb6\xa8\xe4\x6b\xb0\x9e\x54\x3a\xe4\x22\x73\x6d\xe5\x01\xe3\xdb\x37\xd4\x41\xfe\x34\x49\x20\xd0\x95\x48\xe4\xc1\x82\x40\x63\x0c\x4f\xf4\x91\x3c\x53\x51\x38\x39\xb7\xc0\x7f\xcc\x06\x27\xa1\xb8\x57\x3a\x14\x9f\xcd\x1f\xa4\x66\xcf" tests: - - label: "Precondition" + - label: "Precondition: Reset Devices to factory defaults" + PICS: PICS_SDK_CI_ONLY + cluster: "SystemCommands" + command: "FactoryReset" + + - label: "Precondition: Reset Devices to factory defaults" verification: | - Reset Devices to factory defaults - disabled: true + Not implemented in YAML + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Factory Reset the DUT and enter 'y' after success" + - name: "expectedValue" + value: "y" - label: "TH_CR1 starts a commissioning process with DUT_CE" PICS: CADMIN.S - verification: | - "1. Provision the device using 1st controller chip tool on the raspi (use above instructions) , - " - disabled: true - - - label: - "TH_CR1 opens a commissioning window on DUT_CE using a commissioning - timeout of PIXIT.CADMIN.CwDuration seconds using ECM" + cluster: "DelayCommands" + command: "WaitForCommissionee" + arguments: + values: + - name: "nodeId" + value: nodeId + + - label: "TH_CR1 opens a commissioning window on DUT_CE using ECM" PICS: CADMIN.S.C00.Rsp - verification: | - On the 1st controller using chip tool, open commissioning window using ECM - - - ./chip-tool pairing open-commissioning-window 1 1 180 1000 3840 - - [1635874557.409509][4549:4554] CHIP:SC: Success status report received. Session was established - [1635874557.409553][4549:4554] CHIP:IN: New secure session created for device 0x0000000000000001, key 76!! - [1635874557.409649][4549:4554] CHIP:CTL: OpenCommissioningWindow for device ID 1 - [1635874557.416929][4549:4554] CHIP:DMG: ICR moving to [AddingComm] - [1635874557.417092][4549:4554] CHIP:DMG: ICR moving to [AddedComma] - [1635874557.417215][4549:4554] CHIP:IN: Prepared encrypted message 0xaaaac5947d10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 5541i with MessageCounter:0. - [1635874557.417271][4549:4554] CHIP:IN: Sending encrypted msg 0xaaaac5947d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 16129075 msec - [1635874557.417449][4549:4554] CHIP:DMG: ICR moving to [CommandSen] - [1635874557.417505][4549:4554] CHIP:CTL: Manual pairing code: [35484132896] - [1635874557.417577][4549:4554] CHIP:CTL: SetupQRCode: [MT:00000CQM00AT-F5A510] - disabled: true - - - label: "DNS-SD records shows DUT_CE advertising" - verification: | - grl@grl-ThinkPad-L480:~/2nd_cntrl/connectedhomeip/examples/chip-tool/out/debug$ avahi-browse -rt _matterc._udp - + wlp5s0 IPv6 C326228BDB082BF4 _matterc._udp local - + wlp5s0 IPv6 7B6545A75C5330BE _matterc._udp local - = wlp5s0 IPv6 7B6545A75C5330BE _matterc._udp local - hostname = [E45F010F27530000.local] - address = [fe80::e65f:1ff:fe0f:2755] - port = [5540] - txt = ["PI=" "PH=33" "CM=1" "D=3841" "T=1" "CRA=300" "CRI=5000" "VP=65521+32769"] - = wlp5s0 IPv6 C326228BDB082BF4 _matterc._udp local - hostname = [E45F010F27530000.local] - address = [fe80::e65f:1ff:fe0f:2755] - port = [5540] - txt = ["PI=" "PH=36" "CM=2" "D=3840" "T=1" "CRA=300" "CRI=5000" "VP=65521+32769"] - grl@grl-ThinkPad-L480:~/2nd_cntrl/connectedhomeip/examples/chip-tool/out/debug$ - disabled: true - - - label: "TH_CR3 Commissions with DUT_CE" + cluster: "AdministratorCommissioning" + command: "OpenCommissioningWindow" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "CommissioningTimeout" + value: 180 + - name: "PAKEVerifier" + value: PakeVerifier + - name: "discriminator" + value: discriminator + - name: "iterations" + value: 1000 + - name: "salt" + value: "SPAKE2P Key Salt" + + - label: "TH_CR3 starts a commissioning process with DUT_CE" PICS: CADMIN.S - verification: | - On 3rd controller using chip tool connect using manual code - - ./chip-tool pairing code 3 35484132896 - - Verify you got below message - Device commissioning completed with success - disabled: true + identity: "gamma" + cluster: "CommissionerCommands" + command: "PairWithCode" + arguments: + values: + - name: "nodeId" + value: nodeId3 + - name: "payload" + value: payload + + - label: "DUT_CE is commissioned to TH_CR3 on Fabric ID3 with Node ID3" + identity: "gamma" + cluster: "DelayCommands" + command: "WaitForCommissionee" + PICS: CADMIN.S + arguments: + values: + - name: "nodeId" + value: nodeId3 - - label: - "TH_CR1 opens a commissioning window on DUT_CE using a commissioning - timeout of PIXIT.CADMIN.CwDuration seconds using ECM and TH_CR2 - Commissions with DUT_CE" + - label: "TH_CR1 opens a commissioning window on DUT_CE using ECM" PICS: CADMIN.S.C00.Rsp - verification: | - On 1st controller using chip tool, open commissioning window using ECM - - - ./chip-tool pairing open-commissioning-window 1 1 180 1000 3840 - - [1635874557.409509][4549:4554] CHIP:SC: Success status report received. Session was established - [1635874557.409553][4549:4554] CHIP:IN: New secure session created for device 0x0000000000000001, key 76!! - [1635874557.409649][4549:4554] CHIP:CTL: OpenCommissioningWindow for device ID 1 - [1635874557.416929][4549:4554] CHIP:DMG: ICR moving to [AddingComm] - [1635874557.417092][4549:4554] CHIP:DMG: ICR moving to [AddedComma] - [1635874557.417215][4549:4554] CHIP:IN: Prepared encrypted message 0xaaaac5947d10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 5541i with MessageCounter:0. - [1635874557.417271][4549:4554] CHIP:IN: Sending encrypted msg 0xaaaac5947d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 16129075 msec - [1635874557.417449][4549:4554] CHIP:DMG: ICR moving to [CommandSen] - [1635874557.417505][4549:4554] CHIP:CTL: Manual pairing code: [35484132896] - [1635874557.417577][4549:4554] CHIP:CTL: SetupQRCode: [MT:00000CQM00AT-F5A510] - - - On 2nd controller using chip tool connect using manual code - - ./chip-tool pairing code 1 35484132896 - - Verify you got below message - Device commissioning completed with success - disabled: true - - - label: - "TH_CR1 opens a commissioning window on DUT_CE using a commissioning - timeout of PIXIT.CADMIN.CwDuration seconds using ECM" + cluster: "AdministratorCommissioning" + command: "OpenCommissioningWindow" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "CommissioningTimeout" + value: 180 + - name: "PAKEVerifier" + value: PakeVerifier + - name: "discriminator" + value: discriminator + - name: "iterations" + value: 1000 + - name: "salt" + value: "SPAKE2P Key Salt" + + - label: "TH_CR2 starts a commissioning process with DUT_CE" + identity: "beta" + cluster: "CommissionerCommands" + command: "PairWithCode" + PICS: CADMIN.S + arguments: + values: + - name: "nodeId" + value: nodeId2 + - name: "payload" + value: payload --commissioner-name beta + + - label: "DUT_CE is commissioned to TH_CR2" + PICS: CADMIN.S + identity: "beta" + cluster: "DelayCommands" + command: "WaitForCommissionee" + arguments: + values: + - name: "nodeId" + value: nodeId2 + + - label: "TH_CR1 opens a commissioning window on DUT_CE using ECM" PICS: CADMIN.S.C00.Rsp - verification: | - On 1st controller using chip tool, open commissioning window using ECM - - - ./chip-tool pairing open-commissioning-window 1 1 180 1000 3840 - - [1635874557.409509][4549:4554] CHIP:SC: Success status report received. Session was established - [1635874557.409553][4549:4554] CHIP:IN: New secure session created for device 0x0000000000000001, key 76!! - [1635874557.409649][4549:4554] CHIP:CTL: OpenCommissioningWindow for device ID 1 - [1635874557.416929][4549:4554] CHIP:DMG: ICR moving to [AddingComm] - [1635874557.417092][4549:4554] CHIP:DMG: ICR moving to [AddedComma] - [1635874557.417215][4549:4554] CHIP:IN: Prepared encrypted message 0xaaaac5947d10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 5541i with MessageCounter:0. - [1635874557.417271][4549:4554] CHIP:IN: Sending encrypted msg 0xaaaac5947d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 16129075 msec - [1635874557.417449][4549:4554] CHIP:DMG: ICR moving to [CommandSen] - [1635874557.417505][4549:4554] CHIP:CTL: Manual pairing code: [35484132896] - [1635874557.417577][4549:4554] CHIP:CTL: SetupQRCode: [MT:00000CQM00AT-F5A510] - disabled: true + cluster: "AdministratorCommissioning" + command: "OpenCommissioningWindow" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "CommissioningTimeout" + value: 180 + - name: "PAKEVerifier" + value: PakeVerifier + - name: "discriminator" + value: discriminator + - name: "iterations" + value: 1000 + - name: "salt" + value: "SPAKE2P Key Salt" - label: "Before the expiration of PIXIT.CADMIN.CwDuration seconds which was set in step 5, TH_CR1 opens a 2nd commissioning window on DUT_CE using a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" PICS: CADMIN.S.C00.Rsp - verification: | - Before the timer expiry, on the 1st controller using chip tool, open commissioning window using ECM. Verify the General code return error 1 - - - ./chip-tool pairing open-commissioning-window 1 1 180 1000 3840 - - CHIP:DMG: InvokeResponseMessage = - [1650527291.952055][8566:8571] CHIP:DMG: { - [1650527291.952074][8566:8571] CHIP:DMG: suppressResponse = false, - [1650527291.952091][8566:8571] CHIP:DMG: InvokeResponseIBs = - [1650527291.952116][8566:8571] CHIP:DMG: [ - [1650527291.952134][8566:8571] CHIP:DMG: InvokeResponseIB = - [1650527291.952172][8566:8571] CHIP:DMG: { - [1650527291.952195][8566:8571] CHIP:DMG: CommandStatusIB = - [1650527291.952220][8566:8571] CHIP:DMG: { - [1650527291.952245][8566:8571] CHIP:DMG: CommandPathIB = - [1650527291.952276][8566:8571] CHIP:DMG: { - [1650527291.952303][8566:8571] CHIP:DMG: EndpointId = 0x0, - [1650527291.952334][8566:8571] CHIP:DMG: ClusterId = 0x3c, - [1650527291.952369][8566:8571] CHIP:DMG: CommandId = 0x0, - [1650527291.952394][8566:8571] CHIP:DMG: }, - [1650527291.952431][8566:8571] CHIP:DMG: - [1650527291.952458][8566:8571] CHIP:DMG: StatusIB = - [1650527291.952488][8566:8571] CHIP:DMG: { - [1650527291.952519][8566:8571] CHIP:DMG: status = 0x01 (FAILURE), - [1650527291.952555][8566:8571] CHIP:DMG: cluster-status = 0x1, - [1650527291.952578][8566:8571] CHIP:DMG: }, - [1650527291.952612][8566:8571] CHIP:DMG: - [1650527291.952634][8566:8571] CHIP:DMG: }, - [1650527291.952671][8566:8571] CHIP:DMG: - [1650527291.952694][8566:8571] CHIP:DMG: }, - [1650527291.952731][8566:8571] CHIP:DMG: - [1650527291.952751][8566:8571] CHIP:DMG: ], - [1650527291.952781][8566:8571] CHIP:DMG: - [1650527291.952795][8566:8571] CHIP:DMG: InteractionModelRevision = 1 - [1650527291.952807][8566:8571] CHIP:DMG: }, - [1650527291.952886][8566:8571] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0000 Status=0x1 - [1650527291.952931][8566:8571] CHIP:CTL: Failed to open pairing window on the device. Status IM Error 0x00000601: Cluster-specific error: 0x01 - disabled: true + cluster: "AdministratorCommissioning" + command: "OpenCommissioningWindow" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "CommissioningTimeout" + value: 180 + - name: "PAKEVerifier" + value: PakeVerifier + - name: "discriminator" + value: discriminator + - name: "iterations" + value: 1000 + - name: "salt" + value: "SPAKE2P Key Salt" + response: + error: FAILURE - label: "TH_CR1 reads the list of Fabrics on DUT_CE" + cluster: "Operational Credentials" PICS: OPCREDS.S.A0001 - verification: | - On 1st controller using chip tool, read fabrics list - - ./chip-tool operationalcredentials read fabrics 1 0 --fabric-filtered 0 - - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 268962768 - [1650527361.425870][15792:15797] CHIP:TOO: Fabrics: 3 entries - [1650527361.426777][15792:15797] CHIP:TOO: [1]: { - [1650527361.426859][15792:15797] CHIP:TOO: RootPublicKey: 0429A71383F336D80918C9EC655112513E428C073AF7FB44820EC793535302C6E3825C56EE6DD1A683EAA7B59E3F261B46FFA24A6D911E8D88839F4C1B3C84BA01 - [1650527361.426923][15792:15797] CHIP:TOO: VendorId: 65521 - [1650527361.426979][15792:15797] CHIP:TOO: FabricId: 1 - [1650527361.427033][15792:15797] CHIP:TOO: NodeId: 1 - [1650527361.427088][15792:15797] CHIP:TOO: Label: - [1650527361.427166][15792:15797] CHIP:TOO: FabricIndex: 1 - [1650527361.427376][15792:15797] CHIP:TOO: } - [1650527361.427464][15792:15797] CHIP:TOO: [2]: { - [1650527361.427532][15792:15797] CHIP:TOO: RootPublicKey: 04781BCEE70118049ED61DD5B4E401CF1A09D2F78AE7F5770BE5506AD24238E5E0777277DABAFD062659651C95CC2CA7DEAACE40DB579A946CC07CADB141BE05D7 - [1650527361.427595][15792:15797] CHIP:TOO: VendorId: 65521 - [1650527361.427649][15792:15797] CHIP:TOO: FabricId: 1 - [1650527361.427703][15792:15797] CHIP:TOO: NodeId: 3 - [1650527361.427756][15792:15797] CHIP:TOO: Label: - [1650527361.427811][15792:15797] CHIP:TOO: FabricIndex: 2 - [1650527361.427868][15792:15797] CHIP:TOO: } - [1650527361.427943][15792:15797] CHIP:TOO: [3]: { - [1650527361.428008][15792:15797] CHIP:TOO: RootPublicKey: 0403EDB5B461030A34EF7EA2F9DB0D46A36185E4755C365AF9344C4959F049EF21D55EAB903A2C7FBFC305EEFA42989250D7517A73E6156062390A60C0D4C41EBD - [1650527361.428067][15792:15797] CHIP:TOO: VendorId: 65521 - [1650527361.428122][15792:15797] CHIP:TOO: FabricId: 1 - [1650527361.428176][15792:15797] CHIP:TOO: NodeId: 2 - [1650527361.428229][15792:15797] CHIP:TOO: Label: - [1650527361.428282][15792:15797] CHIP:TOO: FabricIndex: 3 - [1650527361.428335][15792:15797] CHIP:TOO: } - disabled: true + command: "readAttribute" + attribute: "Fabrics" + fabricFiltered: false + response: + value: + [ + { Label: "", nodeId: nodeId }, + { Label: "", nodeId: nodeId3 }, + { Label: "", nodeID: nodeId2 }, + ] + constraints: + type: list - label: "Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that was set in step 6" - verification: | - verification step to be updated. - disabled: true + cluster: "DelayCommands" + command: "WaitForMs" + arguments: + values: + - name: "ms" + value: 180000 - label: "TH_CR1 re-opens a commissioning window on DUT_CE using a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" PICS: CADMIN.S.C01.Rsp - verification: | - On the 1st controller using chip tool, open commissioning window using BCM - - ./chip-tool administratorcommissioning open-basic-commissioning-window 500 1 0 --timedInteractionTimeoutMs 1000 - - CHIP:DMG: InvokeResponseMessage = - [1650278416.248379][11064:11069] CHIP:DMG: { - [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, - [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = - [1650278416.248570][11064:11069] CHIP:DMG: [ - [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = - [1650278416.248718][11064:11069] CHIP:DMG: { - [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = - [1650278416.248860][11064:11069] CHIP:DMG: { - [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = - [1650278416.249011][11064:11069] CHIP:DMG: { - [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, - [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, - [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, - [1650278416.249347][11064:11069] CHIP:DMG: }, - [1650278416.249430][11064:11069] CHIP:DMG: - [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = - [1650278416.249581][11064:11069] CHIP:DMG: { - [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), - [1650278416.249738][11064:11069] CHIP:DMG: }, - [1650278416.249823][11064:11069] CHIP:DMG: - [1650278416.249889][11064:11069] CHIP:DMG: }, - [1650278416.249969][11064:11069] CHIP:DMG: - [1650278416.250035][11064:11069] CHIP:DMG: }, - [1650278416.250113][11064:11069] CHIP:DMG: - [1650278416.250169][11064:11069] CHIP:DMG: ], - [1650278416.250241][11064:11069] CHIP:DMG: - [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 - [1650278416.250355][11064:11069] CHIP:DMG: }, - [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 - [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] - disabled: true - - - label: "DNS-SD records shows DUT_CE advertising" - verification: | - ubuntu@ubuntu:~/may16_cntrl/connectedhomeip/examples/chip-tool/out/debug$ avahi-browse -rt _matterc._udp - + eth0 IPv6 2664ED6939FC373C _matterc._udp local - = eth0 IPv6 2664ED6939FC373C _matterc._udp local - hostname = [E45F010F27530000.local] - address = [fe80::e65f:1ff:fe0f:2753] - port = [5540] - txt = ["PI=" "PH=36" "CM=1" "D=3840" "T=1" "SAI=300" "SII=5000" "VP=65521+32769"] - ubuntu@ubuntu:~/may16_cntrl/connectedhomeip/examples/chip-tool/out/debug$ - disabled: true + cluster: "AdministratorCommissioning" + command: "OpenBasicCommissioningWindow" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "CommissioningTimeout" + value: 180 + - name: "discriminator" + value: discriminator - label: "Before the expiration of PIXIT.CADMIN.CwDuration seconds that was set in step 10, TH_CR3 opens a 2nd commissioning window on DUT_CE using a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" PICS: CADMIN.S.C01.Rsp - verification: | - On the 3rd controller using chip tool, open commissioning window using BCM before the timer expiry of the above step - - ./chip-tool administratorcommissioning open-basic-commissioning-window 500 3 0 --timedInteractionTimeoutMs 1000 - - CHIP:DMG: InvokeResponseMessage = - [1650527565.990404][24618:24623] CHIP:DMG: { - [1650527565.990476][24618:24623] CHIP:DMG: suppressResponse = false, - [1650527565.990528][24618:24623] CHIP:DMG: InvokeResponseIBs = - [1650527565.990615][24618:24623] CHIP:DMG: [ - [1650527565.990667][24618:24623] CHIP:DMG: InvokeResponseIB = - [1650527565.990755][24618:24623] CHIP:DMG: { - [1650527565.990816][24618:24623] CHIP:DMG: CommandStatusIB = - [1650527565.990900][24618:24623] CHIP:DMG: { - [1650527565.990967][24618:24623] CHIP:DMG: CommandPathIB = - [1650527565.991042][24618:24623] CHIP:DMG: { - [1650527565.991112][24618:24623] CHIP:DMG: EndpointId = 0x0, - [1650527565.991186][24618:24623] CHIP:DMG: ClusterId = 0x3c, - [1650527565.991257][24618:24623] CHIP:DMG: CommandId = 0x1, - [1650527565.991332][24618:24623] CHIP:DMG: }, - [1650527565.991441][24618:24623] CHIP:DMG: - [1650527565.991505][24618:24623] CHIP:DMG: StatusIB = - [1650527565.991574][24618:24623] CHIP:DMG: { - [1650527565.991645][24618:24623] CHIP:DMG: status = 0x01 (FAILURE), - [1650527565.991743][24618:24623] CHIP:DMG: cluster-status = 0x1, - [1650527565.991830][24618:24623] CHIP:DMG: }, - [1650527565.991918][24618:24623] CHIP:DMG: - [1650527565.991976][24618:24623] CHIP:DMG: }, - [1650527565.992061][24618:24623] CHIP:DMG: - [1650527565.992116][24618:24623] CHIP:DMG: }, - [1650527565.992202][24618:24623] CHIP:DMG: - [1650527565.992253][24618:24623] CHIP:DMG: ], - [1650527565.992316][24618:24623] CHIP:DMG: - [1650527565.992365][24618:24623] CHIP:DMG: InteractionModelRevision = 1 - [1650527565.992414][24618:24623] CHIP:DMG: }, - [1650527565.992535][24618:24623] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x1 - [1650527565.992601][24618:24623] CHIP:TOO: Error: IM Error 0x00000601: Cluster-specific error: 0x01 - disabled: true + identity: "gamma" + cluster: "AdministratorCommissioning" + command: "OpenBasicCommissioningWindow" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "CommissioningTimeout" + value: 180 + - name: "discriminator" + value: discriminator + response: + error: FAILURE - label: "Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that was set in step 11" - verification: | - verification step to be updated. - disabled: true + cluster: "DelayCommands" + command: "WaitForMs" + arguments: + values: + - name: "ms" + value: 180000 - label: "TH_CR1 reads the list of Fabrics on DUT_CE" + cluster: "Operational Credentials" PICS: OPCREDS.S.A0001 - verification: | - On 1st controller using chip tool, read fabrics list - - ./chip-tool operationalcredentials read fabrics 1 0 --fabric-filtered 0 - - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 268962768 - [1650527361.425870][15792:15797] CHIP:TOO: Fabrics: 3 entries - [1650527361.426777][15792:15797] CHIP:TOO: [1]: { - [1650527361.426859][15792:15797] CHIP:TOO: RootPublicKey: 0429A71383F336D80918C9EC655112513E428C073AF7FB44820EC793535302C6E3825C56EE6DD1A683EAA7B59E3F261B46FFA24A6D911E8D88839F4C1B3C84BA01 - [1650527361.426923][15792:15797] CHIP:TOO: VendorId: 65521 - [1650527361.426979][15792:15797] CHIP:TOO: FabricId: 1 - [1650527361.427033][15792:15797] CHIP:TOO: NodeId: 1 - [1650527361.427088][15792:15797] CHIP:TOO: Label: - [1650527361.427166][15792:15797] CHIP:TOO: FabricIndex: 1 - [1650527361.427376][15792:15797] CHIP:TOO: } - [1650527361.427464][15792:15797] CHIP:TOO: [2]: { - [1650527361.427532][15792:15797] CHIP:TOO: RootPublicKey: 04781BCEE70118049ED61DD5B4E401CF1A09D2F78AE7F5770BE5506AD24238E5E0777277DABAFD062659651C95CC2CA7DEAACE40DB579A946CC07CADB141BE05D7 - [1650527361.427595][15792:15797] CHIP:TOO: VendorId: 65521 - [1650527361.427649][15792:15797] CHIP:TOO: FabricId: 1 - [1650527361.427703][15792:15797] CHIP:TOO: NodeId: 3 - [1650527361.427756][15792:15797] CHIP:TOO: Label: - [1650527361.427811][15792:15797] CHIP:TOO: FabricIndex: 2 - [1650527361.427868][15792:15797] CHIP:TOO: } - [1650527361.427943][15792:15797] CHIP:TOO: [3]: { - [1650527361.428008][15792:15797] CHIP:TOO: RootPublicKey: 0403EDB5B461030A34EF7EA2F9DB0D46A36185E4755C365AF9344C4959F049EF21D55EAB903A2C7FBFC305EEFA42989250D7517A73E6156062390A60C0D4C41EBD - [1650527361.428067][15792:15797] CHIP:TOO: VendorId: 65521 - [1650527361.428122][15792:15797] CHIP:TOO: FabricId: 1 - [1650527361.428176][15792:15797] CHIP:TOO: NodeId: 2 - [1650527361.428229][15792:15797] CHIP:TOO: Label: - [1650527361.428282][15792:15797] CHIP:TOO: FabricIndex: 3 - [1650527361.428335][15792:15797] CHIP:TOO: } - disabled: true - - - label: - "TH_CR1 opens a commissioning window on DUT_CE using a commissioning - timeout of PIXIT.CADMIN.CwDuration seconds using BCM" + command: "readAttribute" + attribute: "Fabrics" + fabricFiltered: false + response: + value: + [ + { Label: "", nodeId: nodeId }, + { Label: "", nodeId: nodeId3 }, + { Label: "", nodeID: nodeId2 }, + ] + constraints: + type: list + + - label: "TH_CR1 opens a commissioning window on DUT_CE using BCM" PICS: CADMIN.S.C01.Rsp - verification: | - On 1st controller using chip tool, open commissioning window using BCM - - - ./chip-tool administratorcommissioning open-basic-commissioning-window 500 1 0 --timedInteractionTimeoutMs 1000 - - - CHIP:DMG: InvokeResponseMessage = - [1650278416.248379][11064:11069] CHIP:DMG: { - [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, - [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = - [1650278416.248570][11064:11069] CHIP:DMG: [ - [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = - [1650278416.248718][11064:11069] CHIP:DMG: { - [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = - [1650278416.248860][11064:11069] CHIP:DMG: { - [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = - [1650278416.249011][11064:11069] CHIP:DMG: { - [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, - [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, - [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, - [1650278416.249347][11064:11069] CHIP:DMG: }, - [1650278416.249430][11064:11069] CHIP:DMG: - [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = - [1650278416.249581][11064:11069] CHIP:DMG: { - [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), - [1650278416.249738][11064:11069] CHIP:DMG: }, - [1650278416.249823][11064:11069] CHIP:DMG: - [1650278416.249889][11064:11069] CHIP:DMG: }, - [1650278416.249969][11064:11069] CHIP:DMG: - [1650278416.250035][11064:11069] CHIP:DMG: }, - [1650278416.250113][11064:11069] CHIP:DMG: - [1650278416.250169][11064:11069] CHIP:DMG: ], - [1650278416.250241][11064:11069] CHIP:DMG: - [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 - [1650278416.250355][11064:11069] CHIP:DMG: }, - [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 - [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] - disabled: true + cluster: "AdministratorCommissioning" + command: "OpenBasicCommissioningWindow" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "CommissioningTimeout" + value: 180 + - name: "discriminator" + value: discriminator - label: "Before the expiration of PIXIT.CADMIN.CwDuration seconds that was set in step 14, TH_CR2 opens a second commissioning window on DUT_CE using a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" PICS: CADMIN.S.C01.Rsp - verification: | - On 2nd controller using chip tool, open commissioning window using BCM before timer expiry from above step - - ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 - - CHIP:DMG: InvokeResponseMessage = - [1650527622.373450][15824:15829] CHIP:DMG: { - [1650527622.373531][15824:15829] CHIP:DMG: suppressResponse = false, - [1650527622.373628][15824:15829] CHIP:DMG: InvokeResponseIBs = - [1650527622.373734][15824:15829] CHIP:DMG: [ - [1650527622.373817][15824:15829] CHIP:DMG: InvokeResponseIB = - [1650527622.373913][15824:15829] CHIP:DMG: { - [1650527622.374001][15824:15829] CHIP:DMG: CommandStatusIB = - [1650527622.374087][15824:15829] CHIP:DMG: { - [1650527622.374182][15824:15829] CHIP:DMG: CommandPathIB = - [1650527622.374296][15824:15829] CHIP:DMG: { - [1650527622.374382][15824:15829] CHIP:DMG: EndpointId = 0x0, - [1650527622.374490][15824:15829] CHIP:DMG: ClusterId = 0x3c, - [1650527622.374593][15824:15829] CHIP:DMG: CommandId = 0x1, - [1650527622.374682][15824:15829] CHIP:DMG: }, - [1650527622.374799][15824:15829] CHIP:DMG: - [1650527622.374896][15824:15829] CHIP:DMG: StatusIB = - [1650527622.374979][15824:15829] CHIP:DMG: { - [1650527622.375086][15824:15829] CHIP:DMG: status = 0x01 (FAILURE), - [1650527622.375236][15824:15829] CHIP:DMG: cluster-status = 0x1, - [1650527622.375320][15824:15829] CHIP:DMG: }, - [1650527622.375426][15824:15829] CHIP:DMG: - [1650527622.375527][15824:15829] CHIP:DMG: }, - [1650527622.375616][15824:15829] CHIP:DMG: - [1650527622.375704][15824:15829] CHIP:DMG: }, - [1650527622.375786][15824:15829] CHIP:DMG: - [1650527622.375864][15824:15829] CHIP:DMG: ], - [1650527622.375940][15824:15829] CHIP:DMG: - [1650527622.376000][15824:15829] CHIP:DMG: InteractionModelRevision = 1 - [1650527622.376058][15824:15829] CHIP:DMG: }, - [1650527622.376202][15824:15829] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x1 - [1650527622.376278][15824:15829] CHIP:TOO: Error: IM Error 0x00000601: Cluster-specific error: 0x01 - disabled: true + identity: "beta" + cluster: "AdministratorCommissioning" + command: "OpenBasicCommissioningWindow" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "CommissioningTimeout" + value: 180 + - name: "discriminator" + value: discriminator + response: + error: FAILURE diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_12.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_12.yaml index c08854525cad67..c736e2199f821e 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_12.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_12.yaml @@ -71,7 +71,7 @@ tests: On 3rd controller using chip tool connect using manual code - ./chip-tool pairing code 1 35484132896 + ./chip-tool pairing code 1 35484132896 --commissioner-name gamma Verify you got below message Device commissioning completed with success @@ -103,7 +103,7 @@ tests: On 2nd controller using chip tool connect using manual code - ./chip-tool pairing code 1 35484132896 + ./chip-tool pairing code 2 35484132896 --commissioner-name beta Verify you got below message Device commissioning completed with success @@ -321,7 +321,7 @@ tests: verification: | On third controller open commissioning window verify status code 1 - ./chip-tool administratorcommissioning open-basic-commissioning-window 500 3 0 --timedInteractionTimeoutMs 1000 + ./chip-tool administratorcommissioning open-basic-commissioning-window 500 3 0 --timedInteractionTimeoutMs 1000 --commissioner-name gamma [1658838344.191922][9291:9296] CHIP:DMG: InvokeResponseMessage = [1658838344.191947][9291:9296] CHIP:DMG: { @@ -416,7 +416,7 @@ tests: verification: | On the 2nd controller using chip tool, open commissioning window using BCM before the timer expiry from above step - ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 + ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 --commissioner-name beta diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_13.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_13.yaml index 22d1c1654cf2dd..79c0171de6bf29 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_13.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_13.yaml @@ -104,7 +104,6 @@ tests: constraints: notValue: null - #Issue https://github.com/CHIP-Specifications/chip-test-plans/issues/1972 - label: "TH_CR1 reads AdminVendorId attribute from DUT_CE" cluster: "AdministratorCommissioning" command: "readAttribute" diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_14.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_14.yaml index 7622ff87597173..621aa56f0f62f9 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_14.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_14.yaml @@ -41,7 +41,7 @@ tests: - label: "DUT_CR1 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - "1. Provision the device using your DUT controller (use above instructions) , + "1. Provision TH_CE using DUT_CR1 (Chip-tool as DUT controller) " disabled: true @@ -51,9 +51,14 @@ tests: TH_CR3 Commissions with TH_CE" PICS: CADMIN.C.C01.Tx verification: | - On first controller, open commissioning window using BCM + On DUT_CR1 , open commissioning window using BCM + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + ./chip-tool administratorcommissioning open-basic-commissioning-window 500 1 0 --timedInteractionTimeoutMs 1000 + Verify success response On TH_CE(all-clusters-app) Log CHIP:DMG: InvokeResponseMessage = [1650278416.248379][11064:11069] CHIP:DMG: { @@ -89,10 +94,10 @@ tests: - On 3rd controller, using chip tool connect to the accessory - ./chip-tool pairing onnetwork 1 20202021 + On DUT_CR2, using chip tool connect to the accessory + ./chip-tool pairing onnetwork 1 20202021 --commissioner-name gamma - Verify you got below message + Verify you got below message on TH_CE (all-clusters-app) log Device commissioning completed with success disabled: true @@ -102,9 +107,14 @@ tests: TH_CR2 Commissions with TH_CE" PICS: CADMIN.C.C01.Tx verification: | - On first controller, open commissioning window using BCM + On DUT_CR1 , open commissioning window using BCM + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + ./chip-tool administratorcommissioning open-basic-commissioning-window 500 1 0 --timedInteractionTimeoutMs 1000 + Verify success response On TH_CE (all-clusters-app) Log CHIP:DMG: InvokeResponseMessage = [1650278416.248379][11064:11069] CHIP:DMG: { @@ -140,10 +150,15 @@ tests: - On 2nd controller, using chip tool connect to the accessory - ./chip-tool pairing onnetwork 1 20202021 + On TH_CR2 , using chip tool connect to the accessory + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + + ./chip-tool pairing onnetwork 1 20202021 --commissioner-name beta + + Verify you got below message on TH_CE (all-clusters-app) log - Verify you got below message Device commissioning completed with success disabled: true @@ -152,9 +167,14 @@ tests: commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" PICS: CADMIN.C.C01.Tx verification: | - On first controller, open commissioning window using BCM + On DUT_CR1 , open commissioning window using BCM + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + ./chip-tool administratorcommissioning open-basic-commissioning-window 500 1 0 --timedInteractionTimeoutMs 1000 + Verify success response On TH_CE (all-clusters-app) Log CHIP:DMG: InvokeResponseMessage = [1650278416.248379][11064:11069] CHIP:DMG: { @@ -195,10 +215,17 @@ tests: attribute" PICS: CADMIN.C.A0000 verification: | - On first controller, read WindowStatus + On DUT_CR1 , read WindowStatus + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool administratorcommissioning read window-status 1 0 + + Verify on TH_CE (all-clusters-app) log successfully reads the WindowStatus + + CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 2849200592 + [1651137648.760469][14047:14052] CHIP:TOO: WindowStatus: 0 + [1651137648.760534][14047:14052] CHIP:EM: Sending Standalone Ack for MessageCounter:5527412 on exchange 14590i" disabled: true - label: @@ -208,16 +235,55 @@ tests: using ECM" PICS: CADMIN.C.C00.Tx verification: | - On 1st controller chip tool, open commissioning window using ECM + On DUT_CR1 chip tool, open commissioning window using ECM - ./chip-tool pairing open-commissioning-window 1 1 180 1000 3840 + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + + ./chip-tool pairing open-commissioning-window 1 1 200 1000 3840 + + Verify that the TH_CE is rejecting the opening of second commissioning session with the response status 0x01 failure in TH_CE Log + + + CHIP:DMG: InvokeResponseMessage = + [1650527622.373450][15824:15829] CHIP:DMG: { + [1650527622.373531][15824:15829] CHIP:DMG: suppressResponse = false, + [1650527622.373628][15824:15829] CHIP:DMG: InvokeResponseIBs = + [1650527622.373734][15824:15829] CHIP:DMG: [ + [1650527622.373817][15824:15829] CHIP:DMG: InvokeResponseIB = + [1650527622.373913][15824:15829] CHIP:DMG: { + [1650527622.374001][15824:15829] CHIP:DMG: CommandStatusIB = + [1650527622.374087][15824:15829] CHIP:DMG: { + [1650527622.374182][15824:15829] CHIP:DMG: CommandPathIB = + [1650527622.374296][15824:15829] CHIP:DMG: { + [1650527622.374382][15824:15829] CHIP:DMG: EndpointId = 0x0, + [1650527622.374490][15824:15829] CHIP:DMG: ClusterId = 0x3c, + [1650527622.374593][15824:15829] CHIP:DMG: CommandId = 0x1, + [1650527622.374682][15824:15829] CHIP:DMG: }, + [1650527622.374799][15824:15829] CHIP:DMG: + [1650527622.374896][15824:15829] CHIP:DMG: StatusIB = + [1650527622.374979][15824:15829] CHIP:DMG: { + [1650527622.375086][15824:15829] CHIP:DMG: status = 0x01 (FAILURE), + [1650527622.375236][15824:15829] CHIP:DMG: cluster-status = 0x1, + [1650527622.375320][15824:15829] CHIP:DMG: }, + [1650527622.375426][15824:15829] CHIP:DMG: + [1650527622.375527][15824:15829] CHIP:DMG: }, + [1650527622.375616][15824:15829] CHIP:DMG: + [1650527622.375704][15824:15829] CHIP:DMG: }, + [1650527622.375786][15824:15829] CHIP:DMG: + [1650527622.375864][15824:15829] CHIP:DMG: ], + [1650527622.375940][15824:15829] CHIP:DMG: + [1650527622.376000][15824:15829] CHIP:DMG: InteractionModelRevision = 1 + [1650527622.376058][15824:15829] CHIP:DMG: }, + [1650527622.376202][15824:15829] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x1 + [1650527622.376278][15824:15829] CHIP:TOO: Error: IM Error 0x00000601: Cluster-specific error: 0x01" disabled: true - label: "Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that is set in step 4" verification: | - verification step to be updated. + Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that is set in step 4 disabled: true - label: @@ -226,10 +292,14 @@ tests: ECM" PICS: CADMIN.C.C00.Tx verification: | - On 1st controller chip tool, open commissioning window using ECM + On DUT_CR1 chip tool, open commissioning window using ECM + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing open-commissioning-window 1 1 180 1000 3840 + Verify Manual pairing code on TH_CE (all-clusters-app) Log + [1635925713.966786][9695:9700] CHIP:SC: Success status report received. Session was established [1635925713.966839][9695:9700] CHIP:IN: New secure session created for device 0x0000000000000001, key 33!! [1635925713.966938][9695:9700] CHIP:CTL: OpenCommissioningWindow for device ID 1 @@ -249,10 +319,17 @@ tests: attribute" PICS: CADMIN.C.A0000 verification: | - On first controller, read WindowStatus + On DUT_CR1 , read WindowStatus + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool administratorcommissioning read window-status 1 0 + + Verify on TH_CE (all-clusters-app) log successfully reads the WindowStatus + + CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 2849200592 + [1651137648.760469][14047:14052] CHIP:TOO: WindowStatus: 0 + [1651137648.760534][14047:14052] CHIP:EM: Sending Standalone Ack for MessageCounter:5527412 on exchange 14590i" disabled: true - label: @@ -262,28 +339,55 @@ tests: using ECM" PICS: CADMIN.C.C00.Tx verification: | - On 3rd controller chip tool, open commissioning window using ECM + On TH_CR3 chip tool, open commissioning window using ECM - ./chip-tool pairing open-commissioning-window 1 1 180 1000 3840 + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - [1635925713.966786][9695:9700] CHIP:SC: Success status report received. Session was established - [1635925713.966839][9695:9700] CHIP:IN: New secure session created for device 0x0000000000000001, key 33!! - [1635925713.966938][9695:9700] CHIP:CTL: OpenCommissioningWindow for device ID 1 - [1635925713.972601][9695:9700] CHIP:DMG: ICR moving to [AddingComm] - [1635925713.972705][9695:9700] CHIP:DMG: ICR moving to [AddedComma] - [1635925713.972815][9695:9700] CHIP:IN: Prepared encrypted message 0xaaaad9b57d10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 31056i with MessageCounter:0. - [1635925713.972876][9695:9700] CHIP:IN: Sending encrypted msg 0xaaaad9b57d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 13449459 msec - [1635925713.973006][9695:9700] CHIP:DMG: ICR moving to [CommandSen] - [1635925713.973061][9695:9700] CHIP:CTL: Manual pairing code: [36217551633] - [1635925713.973120][9695:9700] CHIP:CTL: SetupQRCode: [MT:00000CQM00A7F87ZT10] - [1635925713.973178][9695:9700] CHIP:EM: Sending Standalone Ack for MessageCounter:1964916542 on exchange 31055i + + ./chip-tool pairing open-commissioning-window 1 1 200 1000 3840 --commissioner-name beta + + Verify that the TH_CE is rejecting the opening of second commissioning session with the response status 0x01 failure in TH_CE Log + + + CHIP:DMG: InvokeResponseMessage = + [1650527622.373450][15824:15829] CHIP:DMG: { + [1650527622.373531][15824:15829] CHIP:DMG: suppressResponse = false, + [1650527622.373628][15824:15829] CHIP:DMG: InvokeResponseIBs = + [1650527622.373734][15824:15829] CHIP:DMG: [ + [1650527622.373817][15824:15829] CHIP:DMG: InvokeResponseIB = + [1650527622.373913][15824:15829] CHIP:DMG: { + [1650527622.374001][15824:15829] CHIP:DMG: CommandStatusIB = + [1650527622.374087][15824:15829] CHIP:DMG: { + [1650527622.374182][15824:15829] CHIP:DMG: CommandPathIB = + [1650527622.374296][15824:15829] CHIP:DMG: { + [1650527622.374382][15824:15829] CHIP:DMG: EndpointId = 0x0, + [1650527622.374490][15824:15829] CHIP:DMG: ClusterId = 0x3c, + [1650527622.374593][15824:15829] CHIP:DMG: CommandId = 0x1, + [1650527622.374682][15824:15829] CHIP:DMG: }, + [1650527622.374799][15824:15829] CHIP:DMG: + [1650527622.374896][15824:15829] CHIP:DMG: StatusIB = + [1650527622.374979][15824:15829] CHIP:DMG: { + [1650527622.375086][15824:15829] CHIP:DMG: status = 0x01 (FAILURE), + [1650527622.375236][15824:15829] CHIP:DMG: cluster-status = 0x1, + [1650527622.375320][15824:15829] CHIP:DMG: }, + [1650527622.375426][15824:15829] CHIP:DMG: + [1650527622.375527][15824:15829] CHIP:DMG: }, + [1650527622.375616][15824:15829] CHIP:DMG: + [1650527622.375704][15824:15829] CHIP:DMG: }, + [1650527622.375786][15824:15829] CHIP:DMG: + [1650527622.375864][15824:15829] CHIP:DMG: ], + [1650527622.375940][15824:15829] CHIP:DMG: + [1650527622.376000][15824:15829] CHIP:DMG: InteractionModelRevision = 1 + [1650527622.376058][15824:15829] CHIP:DMG: }, + [1650527622.376202][15824:15829] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x1 + [1650527622.376278][15824:15829] CHIP:TOO: Error: IM Error 0x00000601: Cluster-specific error: 0x01" disabled: true - label: "Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that is set in step 8" verification: | - verification step to be updated. + Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that is set in step 8 disabled: true - label: @@ -291,10 +395,14 @@ tests: commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" PICS: CADMIN.C.C00.Tx verification: | - On 1st controller chip tool, open commissioning window using ECM + On DUT_CR1 chip tool, open commissioning window using ECM + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing open-commissioning-window 1 1 180 1000 3840 + Verify Manual pairing code on TH_CE (all-clusters-app) Log + [1635925713.966786][9695:9700] CHIP:SC: Success status report received. Session was established [1635925713.966839][9695:9700] CHIP:IN: New secure session created for device 0x0000000000000001, key 33!! [1635925713.966938][9695:9700] CHIP:CTL: OpenCommissioningWindow for device ID 1 @@ -315,27 +423,67 @@ tests: PIXIT.CADMIN.CwDuration seconds using ECM" PICS: CADMIN.C.C00.Tx verification: | - On 2nd controller using chip tool connect to the accessory using ECM + On TH_CR2 using chip tool connect to the accessory using ECM + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - ./chip-tool pairing open-commissioning-window 1 1 180 1000 3840 + + ./chip-tool pairing open-commissioning-window 1 1 180 1000 3840 --commissioner-name beta + + Verify that the TH_CE is rejecting the opening of second commissioning session with the response status 0x01 failure in TH_CE Log + + CHIP:DMG: InvokeResponseMessage = + [1650527622.373450][15824:15829] CHIP:DMG: { + [1650527622.373531][15824:15829] CHIP:DMG: suppressResponse = false, + [1650527622.373628][15824:15829] CHIP:DMG: InvokeResponseIBs = + [1650527622.373734][15824:15829] CHIP:DMG: [ + [1650527622.373817][15824:15829] CHIP:DMG: InvokeResponseIB = + [1650527622.373913][15824:15829] CHIP:DMG: { + [1650527622.374001][15824:15829] CHIP:DMG: CommandStatusIB = + [1650527622.374087][15824:15829] CHIP:DMG: { + [1650527622.374182][15824:15829] CHIP:DMG: CommandPathIB = + [1650527622.374296][15824:15829] CHIP:DMG: { + [1650527622.374382][15824:15829] CHIP:DMG: EndpointId = 0x0, + [1650527622.374490][15824:15829] CHIP:DMG: ClusterId = 0x3c, + [1650527622.374593][15824:15829] CHIP:DMG: CommandId = 0x1, + [1650527622.374682][15824:15829] CHIP:DMG: }, + [1650527622.374799][15824:15829] CHIP:DMG: + [1650527622.374896][15824:15829] CHIP:DMG: StatusIB = + [1650527622.374979][15824:15829] CHIP:DMG: { + [1650527622.375086][15824:15829] CHIP:DMG: status = 0x01 (FAILURE), + [1650527622.375236][15824:15829] CHIP:DMG: cluster-status = 0x1, + [1650527622.375320][15824:15829] CHIP:DMG: }, + [1650527622.375426][15824:15829] CHIP:DMG: + [1650527622.375527][15824:15829] CHIP:DMG: }, + [1650527622.375616][15824:15829] CHIP:DMG: + [1650527622.375704][15824:15829] CHIP:DMG: }, + [1650527622.375786][15824:15829] CHIP:DMG: + [1650527622.375864][15824:15829] CHIP:DMG: ], + [1650527622.375940][15824:15829] CHIP:DMG: + [1650527622.376000][15824:15829] CHIP:DMG: InteractionModelRevision = 1 + [1650527622.376058][15824:15829] CHIP:DMG: }, + [1650527622.376202][15824:15829] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x1 + [1650527622.376278][15824:15829] CHIP:TOO: Error: IM Error 0x00000601: Cluster-specific error: 0x01" disabled: true - label: "Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that is set in step 12" verification: | - verification step to be updated. + Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that is set in step 12 disabled: true - label: "DUT_CR1 sends command to TH_CE to read WindowStatus attribute" PICS: CADMIN.C.A0000 verification: | - On first controller, read WindowStatus + On DUT_CR1 , read WindowStatus + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool administratorcommissioning read window-status 1 0 + Verify on TH_CE(all-clusters-app) log successfully reads the WindowStatus + CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 2849200592 [1651137648.760469][14047:14052] CHIP:TOO: WindowStatus: 0 [1651137648.760534][14047:14052] CHIP:EM: Sending Standalone Ack for MessageCounter:5527412 on exchange 14590i" @@ -344,10 +492,14 @@ tests: - label: "DUT_CR1 sends command to TH_CE to read AdminFabricIndex attribute" PICS: CADMIN.C.A0001 verification: | - On first controller, read AdminFabricIndex + On DUT_CR1 , read AdminFabricIndex + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool administratorcommissioning read admin-fabric-index 1 0 + Verify on TH_CE(all-clusters-app) log successfully reads the AdminFabricIndex + [1659097193.389295][11728:11733] CHIP:DMG: } [1659097193.389588][11728:11733] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 1299585105 [1659097193.389731][11728:11733] CHIP:TOO: AdminFabricIndex: 0 @@ -357,10 +509,14 @@ tests: - label: "DUT_CR1 sends command to TH_CE to read AdminVendorId attribute" PICS: CADMIN.C.A0002 verification: | - On first controller, read AdminVendorId + On DUT_CR1 , read AdminVendorId + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool administratorcommissioning read admin-vendor-id 1 0 + Verify on TH_CE(all-clusters-app) log successfully reads the AdminVendorId + [1658838521.588942][9317:9322] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 2423106591 [1658838521.589005][9317:9322] CHIP:TOO: AdminVendorId: 0 [1658838521.589079][9317:9322] CHIP:EM: Sending Standalone Ack for MessageCounter:217165763 on exchange 55683i diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_15.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_15.yaml index e8b060d2034eb3..17191702192c60 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_15.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_15.yaml @@ -11,293 +11,279 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default name: - 4.1.15. [TC-CADMIN-1.15] Removing Fabrics from DUT and Fabric index - enumeration using ECM [DUT - Commissionee] + 30.1.15. [TC-CADMIN-1.15] Removing Fabrics from DUT and Fabric index + enumeration using ECM [DUT - Commissionee] PICS: - CADMIN.S config: nodeId: 0x12344321 - cluster: "Basic" + nodeId2: + type: node_id + defaultValue: 0xCAFE + nodeId3: + type: node_id + defaultValue: 0xC00FEE endpoint: 0 + discriminator: + type: int16u + defaultValue: 3840 + payload: + type: char_string + defaultValue: "MT:-24J0AFN00KA0648G00" + PakeVerifier: + type: octet_string + defaultValue: + "\xb9\x61\x70\xaa\xe8\x03\x34\x68\x84\x72\x4f\xe9\xa3\xb2\x87\xc3\x03\x30\xc2\xa6\x60\x37\x5d\x17\xbb\x20\x5a\x8c\xf1\xae\xcb\x35\x04\x57\xf8\xab\x79\xee\x25\x3a\xb6\xa8\xe4\x6b\xb0\x9e\x54\x3a\xe4\x22\x73\x6d\xe5\x01\xe3\xdb\x37\xd4\x41\xfe\x34\x49\x20\xd0\x95\x48\xe4\xc1\x82\x40\x63\x0c\x4f\xf4\x91\x3c\x53\x51\x38\x39\xb7\xc0\x7f\xcc\x06\x27\xa1\xb8\x57\x3a\x14\x9f\xcd\x1f\xa4\x66\xcf" tests: - - label: "Precondition" + - label: "Precondition: Reset Devices to factory defaults" + PICS: PICS_SDK_CI_ONLY + cluster: "SystemCommands" + command: "FactoryReset" + + - label: "Precondition: Reset Devices to factory defaults" verification: | - Reset Devices to factory defaults - disabled: true + Not implemented in YAML + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Factory Reset the DUT and enter 'y' after success" + - name: "expectedValue" + value: "y" - label: "TH_CR1 starts a commissioning process with DUT_CE" + identity: "alpha" PICS: CADMIN.S - verification: | - "1. Provision the device using 1st controller chip tool(use above instructions) , - " - disabled: true - - - label: - "TH_CR1 opens a commissioning window on DUT_CE using a commissioning - timeout of PIXIT.CADMIN.CwDuration seconds using ECM" + cluster: "DelayCommands" + command: "WaitForCommissionee" + arguments: + values: + - name: "nodeId" + value: nodeId + + - label: "TH_CR1 opens a commissioning window on DUT_CE using ECM" + identity: "alpha" PICS: CADMIN.S.C00.Rsp - verification: | - On 1st controller chip tool, open commissioning window using ECM - - ./chip-tool pairing open-commissioning-window 1 1 180 1000 3840 - - [1635925713.966786][9695:9700] CHIP:SC: Success status report received. Session was established - [1635925713.966839][9695:9700] CHIP:IN: New secure session created for device 0x0000000000000001, key 33!! - [1635925713.966938][9695:9700] CHIP:CTL: OpenCommissioningWindow for device ID 1 - [1635925713.972601][9695:9700] CHIP:DMG: ICR moving to [AddingComm] - [1635925713.972705][9695:9700] CHIP:DMG: ICR moving to [AddedComma] - [1635925713.972815][9695:9700] CHIP:IN: Prepared encrypted message 0xaaaad9b57d10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 31056i with MessageCounter:0. - [1635925713.972876][9695:9700] CHIP:IN: Sending encrypted msg 0xaaaad9b57d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 13449459 msec - [1635925713.973006][9695:9700] CHIP:DMG: ICR moving to [CommandSen] - [1635925713.973061][9695:9700] CHIP:CTL: Manual pairing code: [36217551633] - [1635925713.973120][9695:9700] CHIP:CTL: SetupQRCode: [MT:00000CQM00A7F87ZT10] - [1635925713.973178][9695:9700] CHIP:EM: Sending Standalone Ack for MessageCounter:1964916542 on exchange 31055i - disabled: true + cluster: "AdministratorCommissioning" + command: "OpenCommissioningWindow" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "CommissioningTimeout" + value: 180 + - name: "PAKEVerifier" + value: PakeVerifier + - name: "discriminator" + value: discriminator + - name: "iterations" + value: 1000 + - name: "salt" + value: "SPAKE2P Key Salt" - label: "TH_CR2 starts a commissioning process with DUT_CE" + identity: "beta" + cluster: "CommissionerCommands" + command: "PairWithCode" PICS: CADMIN.S - verification: | - On 2nd controller using chip tool connect to the accessory - - - ./chip-tool pairing code 2 36217551633 - - Verify you got below message - Device commissioning completed with success - disabled: true - - - label: - "TH_CR1 opens a commissioning window on DUT_CE using a commissioning - timeout of PIXIT.CADMIN.CwDuration seconds using ECM" + arguments: + values: + - name: "nodeId" + value: nodeId2 + - name: "payload" + value: payload + + - label: "DUT_CE is commissioned to TH_CR2" + identity: "beta" + PICS: CADMIN.S + cluster: "DelayCommands" + command: "WaitForCommissionee" + arguments: + values: + - name: "nodeId" + value: nodeId2 + + - label: "TH_CR1 opens a commissioning window on DUT_CE using ECM" + identity: "alpha" PICS: CADMIN.S.C00.Rsp - verification: | - On 1st controller chip tool, open commissioning window using ECM - - ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 - - [1635925713.966786][9695:9700] CHIP:SC: Success status report received. Session was established - [1635925713.966839][9695:9700] CHIP:IN: New secure session created for device 0x0000000000000001, key 33!! - [1635925713.966938][9695:9700] CHIP:CTL: OpenCommissioningWindow for device ID 1 - [1635925713.972601][9695:9700] CHIP:DMG: ICR moving to [AddingComm] - [1635925713.972705][9695:9700] CHIP:DMG: ICR moving to [AddedComma] - [1635925713.972815][9695:9700] CHIP:IN: Prepared encrypted message 0xaaaad9b57d10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 31056i with MessageCounter:0. - [1635925713.972876][9695:9700] CHIP:IN: Sending encrypted msg 0xaaaad9b57d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 13449459 msec - [1635925713.973006][9695:9700] CHIP:DMG: ICR moving to [CommandSen] - [1635925713.973061][9695:9700] CHIP:CTL: Manual pairing code: [36217551633] - [1635925713.973120][9695:9700] CHIP:CTL: SetupQRCode: [MT:00000CQM00A7F87ZT10] - [1635925713.973178][9695:9700] CHIP:EM: Sending Standalone Ack for MessageCounter:1964916542 on exchange 31055i - disabled: true - - - label: "TH_CR3 starts a commissioning process with DUT_CE" + cluster: "AdministratorCommissioning" + command: "OpenCommissioningWindow" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "CommissioningTimeout" + value: 180 + - name: "PAKEVerifier" + value: PakeVerifier + - name: "discriminator" + value: discriminator + - name: "iterations" + value: 1000 + - name: "salt" + value: "SPAKE2P Key Salt" + + - label: "TH_CR3 Commissions with DUT_CE" PICS: CADMIN.S - verification: | - On 3rd controller using chip tool connect to the accessory - - - - ./chip-tool pairing code 3 36217551633 - - Verify you got below message - Device commissioning completed with success - disabled: true + identity: "gamma" + cluster: "CommissionerCommands" + command: "PairWithCode" + arguments: + values: + - name: "nodeId" + value: nodeId3 + - name: "payload" + value: payload + + - label: "DUT_CE is commissioned to TH_CR3" + PICS: CADMIN.S + identity: "gamma" + cluster: "DelayCommands" + command: "WaitForCommissionee" + arguments: + values: + - name: "nodeId" + value: nodeId3 - label: "TH_CR2 reads the list of Fabrics on DUT_CE" + identity: "beta" + cluster: "Operational Credentials" PICS: OPCREDS.S.A0001 - verification: | - On 2nd controller using chip tool, read fabrics list - - ./chip-tool operationalcredentials read fabrics 2 0 --fabric-filtered 0 - - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 2455995193 - CHIP:TOO: Fabrics: 3 entries - CHIP:TOO: [1]: { - CHIP:TOO: RootPublicKey: 04656F56DBDB677DC957028DFC0ED76709C72753C9194B117A483BDC07386BFD9529B68EB4448FBBA3964EFF37A56A8F461D348B0DAF3B56A75F3B94BF8209D36F - CHIP:TOO: VendorId: 65521 - CHIP:TOO: FabricId: 1 - CHIP:TOO: NodeId: 1 - CHIP:TOO: Label: - CHIP:TOO: FabricIndex: 1 - CHIP:TOO: } - CHIP:TOO: [2]: { - CHIP:TOO: RootPublicKey: 04F8F28D5D70A4510E0F72FBBA31369796C4206FF95D97B77C1BDFD0438A3BE43510631A1B915BE189323F4CC0E015480192654D8170F8F230C7713898962958B7 - CHIP:TOO: VendorId: 65521 - CHIP:TOO: FabricId: 1 - CHIP:TOO: NodeId: 2 - CHIP:TOO: Label: - CHIP:TOO: FabricIndex: 2 - CHIP:TOO: } - CHIP:TOO: [3]: { - CHIP:TOO: RootPublicKey: 04F8F28D5D70A4510E0F72FBBA31369796C4206FF95D97B77C1BDFD0438A3BE43510631A1B915BE189323F4CC0E015480192654D8170F8F230C7713898962958B7 - CHIP:TOO: VendorId: 65521 - CHIP:TOO: FabricId: 1 - CHIP:TOO: NodeId: 3 - CHIP:TOO: Label: - CHIP:TOO: FabricIndex: 3 - CHIP:TOO: } - CHIP:EM: Sending Standalone Ack for MessageCounter:9143157 on exchange 1147i - disabled: true + command: "readAttribute" + attribute: "Fabrics" + fabricFiltered: false + response: + value: + [ + { Label: "", FabricIndex: 1, nodeId: nodeId }, + { Label: "", FabricIndex: 2, nodeId: nodeId2 }, + { Label: "", FabricIndex: 3, nodeID: nodeId3 }, + ] + constraints: + type: list - label: "TH_CR2 sends RemoveFabric with FabricIndex = 2 command to DUT_CE" PICS: OPCREDS.S.C0a.Rsp - verification: | - on 2nd controller using chip tool, remove fabric with FabricIndex=2 - - ./chip-tool operationalcredentials remove-fabric 2 2 0 - - CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0008 - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Command 0x0000_0008 - CHIP:TOO: NOCResponse: { - CHIP:TOO: statusCode: 0 - CHIP:TOO: fabricIndex: 2 - CHIP:TOO: } - CHIP:DMG: ICR moving to [AwaitingDe] - disabled: true + identity: "beta" + cluster: "Operational Credentials" + command: "RemoveFabric" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "FabricIndex" + value: 2 - label: - "TH_CR2 writes and reads the Basic Information Clusters NodeLabel - mandatory attribute of DUT_CE" + "TH_CR2 writes the Basic Information Clusters NodeLabel mandatory + attribute of DUT_CE" PICS: BINFO.S.A0005 + identity: "beta" + command: "writeAttribute" + cluster: "Basic" + attribute: "NodeLabel" + arguments: + value: "chiptest" + response: + error: FAILURE + + #Issue https://github.com/project-chip/connectedhomeip/issues/21999 + - label: + "TH_CR2 reads the Basic Information Clusters NodeLabel mandatory + attribute of DUT_CE" + PICS: BINFO.S.A0005 && PICS_USER_PROMPT verification: | - Using your 2nd controller, write attribute and read attribute + Using your 2nd controller read attribute Below is the example while using chip tool on second controller, - ./chip-tool basic write node-label te5new 2 0 - - Received error (protocol code 2) during pairing process. ../../third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:1551: CHIP Error 0x00000054: Invalid CASE parameter - [1651819620.929567][4359:4364] CHIP:CTL: OperationalDeviceProxy[B8070CD13C99D367:0000000000000002]: State change 3 --> 2 - [1651819620.929700][4359:4364] CHIP:-: ../../third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:1551: CHIP Error 0x00000054: Invalid CASE parameter at ../../commands/clusters/ModelCommand.cpp:53 - ./chip-tool basic read node-label 2 0 Received error (protocol code 2) during pairing process. ../../third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:1551: CHIP Error 0x00000054: Invalid CASE parameter [1651819620.929567][4359:4364] CHIP:CTL: OperationalDeviceProxy[B8070CD13C99D367:0000000000000002]: State change 3 --> 2 [1651819620.929700][4359:4364] CHIP:-: ../../third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:1551: CHIP Error 0x00000054: Invalid CASE parameter at ../../commands/clusters/ModelCommand.cpp:53 - disabled: true + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" - label: "TH_CR1 reads the list of Fabrics on DUT_CE" + identity: "alpha" PICS: OPCREDS.S.A0001 - verification: | - On 1st controller using chip tool, read fabrics list - - Below is the command using chip tool controller - - ./chip-tool operationalcredentials read fabrics 1 0 --fabric-filtered 0 - - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 2455995219 - [1647863260.286772][9294:9299] CHIP:TOO: Fabrics: 2 entries - [1647863260.286908][9294:9299] CHIP:TOO: [1]: { - [1647863260.286947][9294:9299] CHIP:TOO: RootPublicKey: 04656F56DBDB677DC957028DFC0ED76709C72753C9194B117A483BDC07386BFD9529B68EB4448FBBA3964EFF37A56A8F461D348B0DAF3B56A75F3B94BF8209D36F - [1647863260.286995][9294:9299] CHIP:TOO: VendorId: 65521 - [1647863260.287026][9294:9299] CHIP:TOO: FabricId: 1 - [1647863260.287055][9294:9299] CHIP:TOO: NodeId: 1 - [1647863260.287084][9294:9299] CHIP:TOO: Label: - [1647863260.287113][9294:9299] CHIP:TOO: FabricIndex: 1 - [1647863260.287144][9294:9299] CHIP:TOO: } - [1647863260.287185][9294:9299] CHIP:TOO: [2]: { - [1647863260.287221][9294:9299] CHIP:TOO: RootPublicKey: 04F8F28D5D70A4510E0F72FBBA31369796C4206FF95D97B77C1BDFD0438A3BE43510631A1B915BE189323F4CC0E015480192654D8170F8F230C7713898962958B7 - [1647863260.287253][9294:9299] CHIP:TOO: VendorId: 65521 - [1647863260.287282][9294:9299] CHIP:TOO: FabricId: 1 - [1647863260.287310][9294:9299] CHIP:TOO: NodeId: 3 - [1647863260.287339][9294:9299] CHIP:TOO: Label: - [1647863260.287368][9294:9299] CHIP:TOO: FabricIndex: 3 - [1647863260.287396][9294:9299] CHIP:TOO: } - [1647863260.287515][9294:9299] CHIP:EM: Sending Standalone Ack for MessageCounter:11301761 on exchange 13180i" - disabled: true - - - label: - "Verify DUT_CE is now discoverable over DNS-SD with 2 Operational - service records (_matter._tcp SRV records)" - verification: | - grl@grl-ThinkPad-L480:~/may16_cntrl03/connectedhomeip/examples/chip-tool/out/debug$ avahi-browse -rt _matter._tcp - + wlp5s0 IPv6 8E50A59FAF52A809-0000000000000001 _matter._tcp local - + wlp5s0 IPv6 03E707466A904C7E-0000000000000003 _matter._tcp local - = wlp5s0 IPv6 8E50A59FAF52A809-0000000000000001 _matter._tcp local - hostname = [E45F010F27530000.local] - address = [fe80::e65f:1ff:fe0f:2753] - port = [5540] - txt = ["T=1" "SAI=300" "SII=5000"] - = wlp5s0 IPv6 03E707466A904C7E-0000000000000003 _matter._tcp local - hostname = [E45F010F27530000.local] - address = [fe80::e65f:1ff:fe0f:2753] - port = [5540] - txt = ["T=1" "SAI=300" "SII=5000"] - grl@grl-ThinkPad-L480:~/may16_cntrl03/connectedhomeip/examples/chip-tool/out/debug$ - disabled: true - - - label: - "TH_CR1 opens a commissioning window on DUT_CE using a commissioning - timeout of PIXIT.CADMIN.CwDuration seconds using ECM" + cluster: "Operational Credentials" + command: "readAttribute" + attribute: "Fabrics" + fabricFiltered: false + response: + value: + [ + { Label: "", FabricIndex: 1, nodeId: nodeId }, + { Label: "", FabricIndex: 3, nodeID: nodeId3 }, + ] + constraints: + type: list + + - label: "TH_CR1 opens a commissioning window on DUT_CE using ECM" + identity: "alpha" PICS: CADMIN.S.C00.Rsp - verification: | - On 1st controller chip tool, open commissioning window using ECM - - ./chip-tool pairing open-commissioning-window 1 1 180 1000 3840 - - [1635925713.966786][9695:9700] CHIP:SC: Success status report received. Session was established - [1635925713.966839][9695:9700] CHIP:IN: New secure session created for device 0x0000000000000001, key 33!! - [1635925713.966938][9695:9700] CHIP:CTL: OpenCommissioningWindow for device ID 1 - [1635925713.972601][9695:9700] CHIP:DMG: ICR moving to [AddingComm] - [1635925713.972705][9695:9700] CHIP:DMG: ICR moving to [AddedComma] - [1635925713.972815][9695:9700] CHIP:IN: Prepared encrypted message 0xaaaad9b57d10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 31056i with MessageCounter:0. - [1635925713.972876][9695:9700] CHIP:IN: Sending encrypted msg 0xaaaad9b57d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 13449459 msec - [1635925713.973006][9695:9700] CHIP:DMG: ICR moving to [CommandSen] - [1635925713.973061][9695:9700] CHIP:CTL: Manual pairing code: [36217551633] - [1635925713.973120][9695:9700] CHIP:CTL: SetupQRCode: [MT:00000CQM00A7F87ZT10] - [1635925713.973178][9695:9700] CHIP:EM: Sending Standalone Ack for MessageCounter:1964916542 on exchange 31055i - disabled: true + cluster: "AdministratorCommissioning" + command: "OpenCommissioningWindow" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "CommissioningTimeout" + value: 180 + - name: "PAKEVerifier" + value: PakeVerifier + - name: "discriminator" + value: discriminator + - name: "iterations" + value: 1000 + - name: "salt" + value: "SPAKE2P Key Salt" - label: "TH_CR2 starts a commissioning process with DUT_CE" + identity: "beta" + cluster: "CommissionerCommands" + command: "PairWithCode" PICS: CADMIN.S - verification: | - On 2nd controller using chip tool connect to the accessory - - - ./chip-tool pairing code 2 36217551633 - - Verify you got below message - Device commissioning completed with success - disabled: true + arguments: + values: + - name: "nodeId" + value: nodeId2 + - name: "payload" + value: payload + + - label: "DUT_CE is commissioned to TH_CR2" + PICS: CADMIN.S + identity: "beta" + cluster: "DelayCommands" + command: "WaitForCommissionee" + arguments: + values: + - name: "nodeId" + value: nodeId2 - label: "TH_CR1 reads the list of Fabrics on DUT_CE" + identity: "alpha" PICS: OPCREDS.S.A0001 - verification: | - On 1st controller, read fabrics list - - Below is the command using chip tool controller - - ./chip-tool operationalcredentials read fabrics 1 0 --fabric-filtered 0 - - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 2455995246 - [1647863342.980899][9309:9314] CHIP:TOO: Fabrics: 3 entries - [1647863342.981158][9309:9314] CHIP:TOO: [1]: { - [1647863342.981231][9309:9314] CHIP:TOO: RootPublicKey: 04656F56DBDB677DC957028DFC0ED76709C72753C9194B117A483BDC07386BFD9529B68EB4448FBBA3964EFF37A56A8F461D348B0DAF3B56A75F3B94BF8209D36F - [1647863342.981322][9309:9314] CHIP:TOO: VendorId: 65521 - [1647863342.981380][9309:9314] CHIP:TOO: FabricId: 1 - [1647863342.981434][9309:9314] CHIP:TOO: NodeId: 1 - [1647863342.981486][9309:9314] CHIP:TOO: Label: - [1647863342.981539][9309:9314] CHIP:TOO: FabricIndex: 1 - [1647863342.981594][9309:9314] CHIP:TOO: } - [1647863342.981671][9309:9314] CHIP:TOO: [2]: { - [1647863342.981737][9309:9314] CHIP:TOO: RootPublicKey: 04F8F28D5D70A4510E0F72FBBA31369796C4206FF95D97B77C1BDFD0438A3BE43510631A1B915BE189323F4CC0E015480192654D8170F8F230C7713898962958B7 - [1647863342.981796][9309:9314] CHIP:TOO: VendorId: 65521 - [1647863342.981849][9309:9314] CHIP:TOO: FabricId: 1 - [1647863342.981901][9309:9314] CHIP:TOO: NodeId: 3 - [1647863342.981952][9309:9314] CHIP:TOO: Label: - [1647863342.982005][9309:9314] CHIP:TOO: FabricIndex: 3 - [1647863342.982057][9309:9314] CHIP:TOO: } - [1647863342.982131][9309:9314] CHIP:TOO: [3]: { - [1647863342.982195][9309:9314] CHIP:TOO: RootPublicKey: 04F8F28D5D70A4510E0F72FBBA31369796C4206FF95D97B77C1BDFD0438A3BE43510631A1B915BE189323F4CC0E015480192654D8170F8F230C7713898962958B7 - [1647863342.982252][9309:9314] CHIP:TOO: VendorId: 65521 - [1647863342.982305][9309:9314] CHIP:TOO: FabricId: 1 - [1647863342.982357][9309:9314] CHIP:TOO: NodeId: 2 - [1647863342.982409][9309:9314] CHIP:TOO: Label: - [1647863342.982460][9309:9314] CHIP:TOO: FabricIndex: 4 - [1647863342.982512][9309:9314] CHIP:TOO: } - [1647863342.982738][9309:9314] CHIP:EM: Sending Standalone Ack for MessageCounter:5772016 on exchange 3310i - disabled: true + cluster: "Operational Credentials" + command: "readAttribute" + attribute: "Fabrics" + fabricFiltered: false + response: + value: + [ + { Label: "", FabricIndex: 1, nodeId: nodeId }, + { Label: "", FabricIndex: 4, nodeId: nodeId2 }, + { Label: "", FabricIndex: 3, nodeID: nodeId3 }, + ] + constraints: + type: list diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_16.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_16.yaml index 8d80ea0b08a370..ba7744562b2518 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_16.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_16.yaml @@ -11,11 +11,10 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default name: - 4.1.16. [TC-CADMIN-1.16] Removing Fabrics from DUT and Fabric index - enumeration using BCM [DUT - Commissionee] + 30.1.16. [TC-CADMIN-1.16] Removing Fabrics from DUT and Fabric index + enumeration using BCM [DUT - Commissionee] PICS: - CADMIN.S @@ -23,342 +22,247 @@ PICS: config: nodeId: 0x12344321 - cluster: "Basic" + nodeId2: + type: node_id + defaultValue: 0xCAFE + nodeId3: + type: node_id + defaultValue: 0xC00FEE endpoint: 0 + discriminator: + type: int16u + defaultValue: 3840 + payload: + type: char_string + defaultValue: "MT:-24J0AFN00KA0648G00" tests: - - label: "Precondition" + - label: "Precondition: Reset Devices to factory defaults" + PICS: PICS_SDK_CI_ONLY + cluster: "SystemCommands" + command: "FactoryReset" + + - label: "Precondition: Reset Devices to factory defaults" verification: | - Reset Devices to factory defaults - disabled: true + Not implemented in YAML + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Factory Reset the DUT and enter 'y' after success" + - name: "expectedValue" + value: "y" - label: "TH_CR1 starts a commissioning process with DUT_CE" + identity: "alpha" + cluster: "DelayCommands" + command: "WaitForCommissionee" PICS: CADMIN.S - verification: | - "1. Provision the device using 1st controller chip tool(use above instructions) , - " - disabled: true - - - label: - "TH_CR1 opens a commissioning window on DUT_CE using a commissioning - timeout of PIXIT.CADMIN.CwDuration seconds using BCM" + arguments: + values: + - name: "nodeId" + value: nodeId + + - label: "TH_CR1 opens a commissioning window on DUT_CE" + identity: "alpha" + cluster: "AdministratorCommissioning" + command: "OpenBasicCommissioningWindow" + timedInteractionTimeoutMs: 10000 PICS: CADMIN.S.C01.Rsp - verification: | - On 1st controller chip tool, open commissioning window using BCM - ./chip-tool administratorcommissioning open-basic-commissioning-window 500 1 0 --timedInteractionTimeoutMs 1000 - - CHIP:DMG: InvokeResponseMessage = - [1650278416.248379][11064:11069] CHIP:DMG: { - [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, - [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = - [1650278416.248570][11064:11069] CHIP:DMG: [ - [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = - [1650278416.248718][11064:11069] CHIP:DMG: { - [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = - [1650278416.248860][11064:11069] CHIP:DMG: { - [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = - [1650278416.249011][11064:11069] CHIP:DMG: { - [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, - [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, - [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, - [1650278416.249347][11064:11069] CHIP:DMG: }, - [1650278416.249430][11064:11069] CHIP:DMG: - [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = - [1650278416.249581][11064:11069] CHIP:DMG: { - [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), - [1650278416.249738][11064:11069] CHIP:DMG: }, - [1650278416.249823][11064:11069] CHIP:DMG: - [1650278416.249889][11064:11069] CHIP:DMG: }, - [1650278416.249969][11064:11069] CHIP:DMG: - [1650278416.250035][11064:11069] CHIP:DMG: }, - [1650278416.250113][11064:11069] CHIP:DMG: - [1650278416.250169][11064:11069] CHIP:DMG: ], - [1650278416.250241][11064:11069] CHIP:DMG: - [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 - [1650278416.250355][11064:11069] CHIP:DMG: }, - [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 - [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] - disabled: true + arguments: + values: + - name: "CommissioningTimeout" + value: 180 + - name: "discriminator" + value: discriminator - label: "TH_CR2 starts a commissioning process with DUT_CE" + identity: "beta" + cluster: "CommissionerCommands" + command: "PairWithCode" PICS: CADMIN.S - verification: | - On 2nd controller using chip tool connect to the accessory - - - ./chip-tool pairing onnetwork 2 20202021 - - Verify you got below message - Device commissioning completed with success - disabled: true - - - label: - "TH_CR1 opens a commissioning window on DUT_CE using a commissioning - timeout of PIXIT.CADMIN.CwDuration seconds using BCM" + arguments: + values: + - name: "nodeId" + value: nodeId2 + - name: "payload" + value: payload + + - label: "DUT_CE is commissioned to TH_CR2" + PICS: CADMIN.S + identity: "beta" + cluster: "DelayCommands" + command: "WaitForCommissionee" + arguments: + values: + - name: "nodeId" + value: nodeId2 + + - label: "TH_CR1 opens a commissioning window on DUT_CE" + identity: "alpha" + cluster: "AdministratorCommissioning" + command: "OpenBasicCommissioningWindow" + timedInteractionTimeoutMs: 10000 PICS: CADMIN.S.C01.Rsp - verification: | - On 1st controller chip tool, open commissioning window using BCM - ./chip-tool administratorcommissioning open-basic-commissioning-window 500 1 0 --timedInteractionTimeoutMs 1000 - - CHIP:DMG: InvokeResponseMessage = - [1650278416.248379][11064:11069] CHIP:DMG: { - [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, - [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = - [1650278416.248570][11064:11069] CHIP:DMG: [ - [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = - [1650278416.248718][11064:11069] CHIP:DMG: { - [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = - [1650278416.248860][11064:11069] CHIP:DMG: { - [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = - [1650278416.249011][11064:11069] CHIP:DMG: { - [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, - [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, - [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, - [1650278416.249347][11064:11069] CHIP:DMG: }, - [1650278416.249430][11064:11069] CHIP:DMG: - [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = - [1650278416.249581][11064:11069] CHIP:DMG: { - [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), - [1650278416.249738][11064:11069] CHIP:DMG: }, - [1650278416.249823][11064:11069] CHIP:DMG: - [1650278416.249889][11064:11069] CHIP:DMG: }, - [1650278416.249969][11064:11069] CHIP:DMG: - [1650278416.250035][11064:11069] CHIP:DMG: }, - [1650278416.250113][11064:11069] CHIP:DMG: - [1650278416.250169][11064:11069] CHIP:DMG: ], - [1650278416.250241][11064:11069] CHIP:DMG: - [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 - [1650278416.250355][11064:11069] CHIP:DMG: }, - [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 - [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] - disabled: true - - - label: "TH_CR3 starts a commissioning process with DUT_CE" + arguments: + values: + - name: "CommissioningTimeout" + value: 180 + - name: "discriminator" + value: discriminator + + - label: "TH_CR3 Commissions with DUT_CE" PICS: CADMIN.S - verification: | - On 3rd controller using chip tool connect to the accessory - - - - ./chip-tool pairing onnetwork 3 20202021 - - Verify you got below message - Device commissioning completed with success - disabled: true + identity: "gamma" + cluster: "CommissionerCommands" + command: "PairWithCode" + arguments: + values: + - name: "nodeId" + value: nodeId3 + - name: "payload" + value: payload + + - label: "DUT_CE is commissioned to TH_CR3" + PICS: CADMIN.S + identity: "gamma" + cluster: "DelayCommands" + command: "WaitForCommissionee" + arguments: + values: + - name: "nodeId" + value: nodeId3 - label: "TH_CR2 reads the list of Fabrics on DUT_CE" + identity: "beta" + cluster: "Operational Credentials" PICS: OPCREDS.S.A0001 - verification: | - On 2nd controller using chip tool, read fabrics list - - ./chip-tool operationalcredentials read fabrics 2 0 --fabric-filtered 0 - - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 2455995193 - CHIP:TOO: Fabrics: 3 entries - CHIP:TOO: [1]: { - CHIP:TOO: RootPublicKey: 04656F56DBDB677DC957028DFC0ED76709C72753C9194B117A483BDC07386BFD9529B68EB4448FBBA3964EFF37A56A8F461D348B0DAF3B56A75F3B94BF8209D36F - CHIP:TOO: VendorId: 65521 - CHIP:TOO: FabricId: 1 - CHIP:TOO: NodeId: 1 - CHIP:TOO: Label: - CHIP:TOO: FabricIndex: 1 - CHIP:TOO: } - CHIP:TOO: [2]: { - CHIP:TOO: RootPublicKey: 04F8F28D5D70A4510E0F72FBBA31369796C4206FF95D97B77C1BDFD0438A3BE43510631A1B915BE189323F4CC0E015480192654D8170F8F230C7713898962958B7 - CHIP:TOO: VendorId: 65521 - CHIP:TOO: FabricId: 1 - CHIP:TOO: NodeId: 2 - CHIP:TOO: Label: - CHIP:TOO: FabricIndex: 2 - CHIP:TOO: } - CHIP:TOO: [3]: { - CHIP:TOO: RootPublicKey: 04F8F28D5D70A4510E0F72FBBA31369796C4206FF95D97B77C1BDFD0438A3BE43510631A1B915BE189323F4CC0E015480192654D8170F8F230C7713898962958B7 - CHIP:TOO: VendorId: 65521 - CHIP:TOO: FabricId: 1 - CHIP:TOO: NodeId: 3 - CHIP:TOO: Label: - CHIP:TOO: FabricIndex: 3 - CHIP:TOO: } - CHIP:EM: Sending Standalone Ack for MessageCounter:9143157 on exchange 1147i - disabled: true + command: "readAttribute" + attribute: "Fabrics" + fabricFiltered: false + response: + value: + [ + { Label: "", FabricIndex: 1, nodeId: nodeId }, + { Label: "", FabricIndex: 2, nodeId: nodeId2 }, + { Label: "", FabricIndex: 3, nodeID: nodeId3 }, + ] + constraints: + type: list - label: "TH_CR2 sends RemoveFabric with FabricIndex = 2 command to DUT_CE" PICS: OPCREDS.S.C0a.Rsp - verification: | - on 2nd controller using chip tool, remove fabric with FabricIndex=2 - - ./chip-tool operationalcredentials remove-fabric 2 2 0 - - CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0008 - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Command 0x0000_0008 - CHIP:TOO: NOCResponse: { - CHIP:TOO: statusCode: 0 - CHIP:TOO: fabricIndex: 2 - CHIP:TOO: } - CHIP:DMG: ICR moving to [AwaitingDe] - disabled: true + identity: "beta" + cluster: "Operational Credentials" + command: "RemoveFabric" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "FabricIndex" + value: 2 - label: - "TH_CR2 writes and reads the Basic Information Clusters NodeLabel - mandatory attribute of DUT_CE" + "TH_CR2 writes the Basic Information Clusters NodeLabel mandatory + attribute of DUT_CE" PICS: BINFO.S.A0005 + identity: "beta" + command: "writeAttribute" + cluster: "Basic" + attribute: "NodeLabel" + arguments: + value: "chiptest" + response: + error: FAILURE + + #Issue https://github.com/project-chip/connectedhomeip/issues/21999 + - label: + "TH_CR2 reads the Basic Information Clusters NodeLabel mandatory + attribute of DUT_CE" + PICS: BINFO.S.A0005 && PICS_USER_PROMPT verification: | - Using your 2nd controller, write attribute and read attribute + Using your 2nd controller read attribute Below is the example while using chip tool on second controller, - ./chip-tool basic write node-label te5new 2 0 - - Received error (protocol code 2) during pairing process. ../../third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:1551: CHIP Error 0x00000054: Invalid CASE parameter - [1651819620.929567][4359:4364] CHIP:CTL: OperationalDeviceProxy[B8070CD13C99D367:0000000000000002]: State change 3 --> 2 - [1651819620.929700][4359:4364] CHIP:-: ../../third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:1551: CHIP Error 0x00000054: Invalid CASE parameter at ../../commands/clusters/ModelCommand.cpp:53 - ./chip-tool basic read node-label 2 0 Received error (protocol code 2) during pairing process. ../../third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:1551: CHIP Error 0x00000054: Invalid CASE parameter [1651819620.929567][4359:4364] CHIP:CTL: OperationalDeviceProxy[B8070CD13C99D367:0000000000000002]: State change 3 --> 2 [1651819620.929700][4359:4364] CHIP:-: ../../third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:1551: CHIP Error 0x00000054: Invalid CASE parameter at ../../commands/clusters/ModelCommand.cpp:53 - disabled: true + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" - label: "TH_CR1 reads the list of Fabrics on DUT_CE" + identity: "alpha" PICS: OPCREDS.S.A0001 - verification: | - On 1st controller using chip tool, read fabrics list - - - Below is the command using chip tool controller - - ./chip-tool operationalcredentials read fabrics 1 0 --fabric-filtered 0 - - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 2455995219 - [1647863260.286772][9294:9299] CHIP:TOO: Fabrics: 2 entries - [1647863260.286908][9294:9299] CHIP:TOO: [1]: { - [1647863260.286947][9294:9299] CHIP:TOO: RootPublicKey: 04656F56DBDB677DC957028DFC0ED76709C72753C9194B117A483BDC07386BFD9529B68EB4448FBBA3964EFF37A56A8F461D348B0DAF3B56A75F3B94BF8209D36F - [1647863260.286995][9294:9299] CHIP:TOO: VendorId: 65521 - [1647863260.287026][9294:9299] CHIP:TOO: FabricId: 1 - [1647863260.287055][9294:9299] CHIP:TOO: NodeId: 1 - [1647863260.287084][9294:9299] CHIP:TOO: Label: - [1647863260.287113][9294:9299] CHIP:TOO: FabricIndex: 1 - [1647863260.287144][9294:9299] CHIP:TOO: } - [1647863260.287185][9294:9299] CHIP:TOO: [2]: { - [1647863260.287221][9294:9299] CHIP:TOO: RootPublicKey: 04F8F28D5D70A4510E0F72FBBA31369796C4206FF95D97B77C1BDFD0438A3BE43510631A1B915BE189323F4CC0E015480192654D8170F8F230C7713898962958B7 - [1647863260.287253][9294:9299] CHIP:TOO: VendorId: 65521 - [1647863260.287282][9294:9299] CHIP:TOO: FabricId: 1 - [1647863260.287310][9294:9299] CHIP:TOO: NodeId: 3 - [1647863260.287339][9294:9299] CHIP:TOO: Label: - [1647863260.287368][9294:9299] CHIP:TOO: FabricIndex: 3 - [1647863260.287396][9294:9299] CHIP:TOO: } - [1647863260.287515][9294:9299] CHIP:EM: Sending Standalone Ack for MessageCounter:11301761 on exchange 13180i" - disabled: true - - - label: - "Verify DUT_CE is now discoverable over DNS-SD with 2 Operational - service records (_matter._tcp SRV records)." - verification: | - grl@grl-ThinkPad-L480:~/may16_cntrl03/connectedhomeip/examples/chip-tool/out/debug$ avahi-browse -rt _matter._tcp - + wlp5s0 IPv6 8E50A59FAF52A809-0000000000000001 _matter._tcp local - + wlp5s0 IPv6 03E707466A904C7E-0000000000000003 _matter._tcp local - = wlp5s0 IPv6 8E50A59FAF52A809-0000000000000001 _matter._tcp local - hostname = [E45F010F27530000.local] - address = [fe80::e65f:1ff:fe0f:2753] - port = [5540] - txt = ["T=1" "SAI=300" "SII=5000"] - = wlp5s0 IPv6 03E707466A904C7E-0000000000000003 _matter._tcp local - hostname = [E45F010F27530000.local] - address = [fe80::e65f:1ff:fe0f:2753] - port = [5540] - txt = ["T=1" "SAI=300" "SII=5000"] - grl@grl-ThinkPad-L480:~/may16_cntrl03/connectedhomeip/examples/chip-tool/out/debug$ - disabled: true - - - label: - "TH_CR1 opens a commissioning window on DUT_CE using a commissioning - timeout of PIXIT.CADMIN.CwDuration seconds using BCM" + cluster: "Operational Credentials" + command: "readAttribute" + attribute: "Fabrics" + fabricFiltered: false + response: + value: + [ + { Label: "", FabricIndex: 1, nodeId: nodeId }, + { Label: "", FabricIndex: 3, nodeID: nodeId3 }, + ] + constraints: + type: list + + - label: "TH_CR1 opens a commissioning window on DUT_CE using BCM" + identity: "alpha" PICS: CADMIN.S.C01.Rsp - verification: | - On 1st controller chip tool, open commissioning window using BCM - - ./chip-tool administratorcommissioning open-basic-commissioning-window 500 1 0 --timedInteractionTimeoutMs 1000 - - - CHIP:DMG: InvokeResponseMessage = - [1650278416.248379][11064:11069] CHIP:DMG: { - [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, - [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = - [1650278416.248570][11064:11069] CHIP:DMG: [ - [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = - [1650278416.248718][11064:11069] CHIP:DMG: { - [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = - [1650278416.248860][11064:11069] CHIP:DMG: { - [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = - [1650278416.249011][11064:11069] CHIP:DMG: { - [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, - [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, - [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, - [1650278416.249347][11064:11069] CHIP:DMG: }, - [1650278416.249430][11064:11069] CHIP:DMG: - [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = - [1650278416.249581][11064:11069] CHIP:DMG: { - [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), - [1650278416.249738][11064:11069] CHIP:DMG: }, - [1650278416.249823][11064:11069] CHIP:DMG: - [1650278416.249889][11064:11069] CHIP:DMG: }, - [1650278416.249969][11064:11069] CHIP:DMG: - [1650278416.250035][11064:11069] CHIP:DMG: }, - [1650278416.250113][11064:11069] CHIP:DMG: - [1650278416.250169][11064:11069] CHIP:DMG: ], - [1650278416.250241][11064:11069] CHIP:DMG: - [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 - [1650278416.250355][11064:11069] CHIP:DMG: }, - [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 - [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] - disabled: true + cluster: "AdministratorCommissioning" + command: "OpenBasicCommissioningWindow" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "CommissioningTimeout" + value: 180 + - name: "discriminator" + value: discriminator - label: "TH_CR2 starts a commissioning process with DUT_CE" + identity: "beta" + cluster: "CommissionerCommands" + command: "PairWithCode" PICS: CADMIN.S - verification: | - On 2nd controller using chip tool connect to the accessory - - - ./chip-tool pairing onnetwork 2 20202021 - - Verify you got below message - Device commissioning completed with success - disabled: true + arguments: + values: + - name: "nodeId" + value: nodeId2 + - name: "payload" + value: payload + + - label: "DUT_CE is commissioned to TH_CR2" + PICS: CADMIN.S + identity: "beta" + cluster: "DelayCommands" + command: "WaitForCommissionee" + arguments: + values: + - name: "nodeId" + value: nodeId2 - label: "TH_CR1 reads the list of Fabrics on DUT_CE" + identity: "alpha" PICS: OPCREDS.S.A0001 - verification: | - On 1st controller, read fabrics list - - Below is the command using chip tool controller - - ./chip-tool operationalcredentials read fabrics 1 0 --fabric-filtered 0 - - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 2455995246 - [1647863342.980899][9309:9314] CHIP:TOO: Fabrics: 3 entries - [1647863342.981158][9309:9314] CHIP:TOO: [1]: { - [1647863342.981231][9309:9314] CHIP:TOO: RootPublicKey: 04656F56DBDB677DC957028DFC0ED76709C72753C9194B117A483BDC07386BFD9529B68EB4448FBBA3964EFF37A56A8F461D348B0DAF3B56A75F3B94BF8209D36F - [1647863342.981322][9309:9314] CHIP:TOO: VendorId: 65521 - [1647863342.981380][9309:9314] CHIP:TOO: FabricId: 1 - [1647863342.981434][9309:9314] CHIP:TOO: NodeId: 1 - [1647863342.981486][9309:9314] CHIP:TOO: Label: - [1647863342.981539][9309:9314] CHIP:TOO: FabricIndex: 1 - [1647863342.981594][9309:9314] CHIP:TOO: } - [1647863342.981671][9309:9314] CHIP:TOO: [2]: { - [1647863342.981737][9309:9314] CHIP:TOO: RootPublicKey: 04F8F28D5D70A4510E0F72FBBA31369796C4206FF95D97B77C1BDFD0438A3BE43510631A1B915BE189323F4CC0E015480192654D8170F8F230C7713898962958B7 - [1647863342.981796][9309:9314] CHIP:TOO: VendorId: 65521 - [1647863342.981849][9309:9314] CHIP:TOO: FabricId: 1 - [1647863342.981901][9309:9314] CHIP:TOO: NodeId: 3 - [1647863342.981952][9309:9314] CHIP:TOO: Label: - [1647863342.982005][9309:9314] CHIP:TOO: FabricIndex: 3 - [1647863342.982057][9309:9314] CHIP:TOO: } - [1647863342.982131][9309:9314] CHIP:TOO: [3]: { - [1647863342.982195][9309:9314] CHIP:TOO: RootPublicKey: 04F8F28D5D70A4510E0F72FBBA31369796C4206FF95D97B77C1BDFD0438A3BE43510631A1B915BE189323F4CC0E015480192654D8170F8F230C7713898962958B7 - [1647863342.982252][9309:9314] CHIP:TOO: VendorId: 65521 - [1647863342.982305][9309:9314] CHIP:TOO: FabricId: 1 - [1647863342.982357][9309:9314] CHIP:TOO: NodeId: 2 - [1647863342.982409][9309:9314] CHIP:TOO: Label: - [1647863342.982460][9309:9314] CHIP:TOO: FabricIndex: 4 - [1647863342.982512][9309:9314] CHIP:TOO: } - [1647863342.982738][9309:9314] CHIP:EM: Sending Standalone Ack for MessageCounter:5772016 on exchange 3310i - disabled: true + cluster: "Operational Credentials" + command: "readAttribute" + attribute: "Fabrics" + fabricFiltered: false + response: + value: + [ + { Label: "", FabricIndex: 1, nodeId: nodeId }, + { Label: "", FabricIndex: 4, nodeId: nodeId2 }, + { Label: "", FabricIndex: 3, nodeID: nodeId3 }, + ] + constraints: + type: list diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_17.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_17.yaml index 6ca89bc6035b65..fecdf6fc80af4d 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_17.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_17.yaml @@ -40,7 +40,7 @@ tests: - label: "DUT_CR1 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - "1. Provision the device using DUT controller chip tool(use above instructions) , + "1. Provision the device using DUT_CR1 (Chip-tool as DUT controller) " disabled: true @@ -49,13 +49,14 @@ tests: commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" PICS: CADMIN.C.C00.Tx verification: | - On your first controller, open commissioning window using ECM - - Below is the example when using chip tool as controller + On DUT_CR1 , open commissioning window using ECM + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 + Verify Manual pairing code on TH_CE (all-clusters-app) Log + [1635925713.966786][9695:9700] CHIP:SC: Success status report received. Session was established [1635925713.966839][9695:9700] CHIP:IN: New secure session created for device 0x0000000000000001, key 33!! [1635925713.966938][9695:9700] CHIP:CTL: OpenCommissioningWindow for device ID 1 @@ -86,12 +87,14 @@ tests: - label: "TH_CR2 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - On 2nd controller using chip tool connect to the accessory + On TH_CR2 using chip tool connect to the accessory + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - ./chip-tool pairing code 1 35484132896 + ./chip-tool pairing code 1 35484132896 --commissioner-name beta - Verify you got below message + Verify you got below message on TH_CE(all-clusters-app) log Device commissioning completed with success disabled: true @@ -100,13 +103,14 @@ tests: commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" PICS: CADMIN.C.C00.Tx verification: | - On your first controller chip tool, open commissioning window using ECM - - Below is the example when using chip tool as controller + On TH_CR1 (chip tool), open commissioning window using ECM + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 + Verify Manual pairing code on TH_CE(all-clusters-app) Log + [1635925713.966786][9695:9700] CHIP:SC: Success status report received. Session was established [1635925713.966839][9695:9700] CHIP:IN: New secure session created for device 0x0000000000000001, key 33!! [1635925713.966938][9695:9700] CHIP:CTL: OpenCommissioningWindow for device ID 1 @@ -137,21 +141,26 @@ tests: - label: "TH_CR3 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - On 3rd controller using chip tool connect to the accessory + On TH_CR3 using chip tool connect to the accessory + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - ./chip-tool pairing code 1 35484132896 + ./chip-tool pairing code 1 35484132896 --commissioner-name gamma - Verify you got below message + Verify you got below message on TH_CE(all-clusters-app) log Device commissioning completed with success disabled: true - label: "DUT_CR1 sends command to TH_CE to read the list of Fabrics" PICS: OPCREDS.C.A0001 verification: | - On 2nd controller using chip tool, read fabrics list + On DUT_CR1 using chip tool, read fabrics list - ./chip-tool operationalcredentials read fabrics 1234 0 --fabric-filtered 0 + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + Verify TH_CE receives and processes the command successfully on TH_CE (all-clusters-app) log + + ./chip-tool operationalcredentials read fabrics 1234 0 --fabric-filtered 0 --commissioner-name beta CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 2455995193 CHIP:TOO: Fabrics: 3 entries @@ -185,9 +194,13 @@ tests: - label: "DUT_CR1 sends RemoveFabric with FabricIndex = 2 command to TH_CE" PICS: OPCREDS.C.C0a.Tx verification: | - on 2nd controller using chip tool, remove fabric with FabricIndex=2 + on DUT_CR1 using chip tool, remove fabric with FabricIndex=2 + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - ./chip-tool operationalcredentials remove-fabric 2 1 0 + ./chip-tool operationalcredentials remove-fabric 2 1 0 --commissioner-name beta + + Verify TH_CE responses with NOCResponse with a StatusCode OK on TH_CE (all-clusters-app) log CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0008 CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Command 0x0000_0008 @@ -203,16 +216,22 @@ tests: Clusters NodeLabel mandatory attribute" PICS: BINFO.C.A0005 verification: | - Using your 2nd controller, write attribute and read attribute to and from TH_CE + Using TH_CR2 , write attribute and read attribute to and from TH_CE + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + Verify read/write commands fail as expected since the TH_CR2 is no longer on the network on TH_CE (all-clusters-app) log - Below is the example while using chip tool on second controller, - ./chip-tool basic write node-label te5new 2 0 + ./chip-tool basic write node-label te5new 2 0 --commissioner-name beta Received error (protocol code 2) during pairing process. ../../third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:1551: CHIP Error 0x00000054: Invalid CASE parameter [1651819620.929567][4359:4364] CHIP:CTL: OperationalDeviceProxy[B8070CD13C99D367:0000000000000002]: State change 3 --> 2 [1651819620.929700][4359:4364] CHIP:-: ../../third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:1551: CHIP Error 0x00000054: Invalid CASE parameter at ../../commands/clusters/ModelCommand.cpp:53 - ./chip-tool basic read node-label 2 0 + ./chip-tool basic read node-label 2 0 --commissioner-name beta + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + Received error (protocol code 2) during pairing process. ../../third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:1551: CHIP Error 0x00000054: Invalid CASE parameter [1651819620.929567][4359:4364] CHIP:CTL: OperationalDeviceProxy[B8070CD13C99D367:0000000000000002]: State change 3 --> 2 @@ -223,12 +242,14 @@ tests: "DUT_CR1 sends command to TH_CE to read the list of Fabrics on TH_CE" PICS: OPCREDS.C.A0001 verification: | - On first controller, read fabrics list + On DUT_CR1 , read fabrics list - Below is the command using chip tool controller + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool operationalcredentials read fabrics 1234 0 --fabric-filtered 0 + Verify TH_CE receives and processes the command successfully on TH_CE (all-clusters-app) log + CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 2455995219 [1647863260.286772][9294:9299] CHIP:TOO: Fabrics: 2 entries [1647863260.286908][9294:9299] CHIP:TOO: [1]: { @@ -254,7 +275,11 @@ tests: "Verify TH_CE is now discoverable over DNS-SD with 2 Operational service records (_matter._tcp SRV records)." verification: | + On any Linux platform execute this command or in TH_CR2 + grl@grl-ThinkPad-L480:~/may16_cntrl03/connectedhomeip/examples/chip-tool/out/debug$ avahi-browse -rt _matter._tcp + + + wlp5s0 IPv6 8E50A59FAF52A809-0000000000000001 _matter._tcp local + wlp5s0 IPv6 03E707466A904C7E-0000000000000003 _matter._tcp local = wlp5s0 IPv6 8E50A59FAF52A809-0000000000000001 _matter._tcp local @@ -277,10 +302,13 @@ tests: verification: | On first controller chip tool, open commissioning window using ECM - Below is the example when using chip tool as controller + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 + Verify Manual pairing code on TH1(all-clusters-app) Log + + [1635925713.966786][9695:9700] CHIP:SC: Success status report received. Session was established [1635925713.966839][9695:9700] CHIP:IN: New secure session created for device 0x0000000000000001, key 33!! [1635925713.966938][9695:9700] CHIP:CTL: OpenCommissioningWindow for device ID 1 @@ -297,12 +325,14 @@ tests: - label: "TH_CR2 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - On 2nd controller using chip tool connect to the accessory + On TH_CR2 using chip tool connect to the accessory + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - ./chip-tool pairing code 1 36217551633 + ./chip-tool pairing code 1 36217551633 --commissioner-name beta - Verify you got below message + Verify you got below message on TH_CE (all-clusters-app) log Device commissioning completed with success disabled: true @@ -310,11 +340,13 @@ tests: "TH_CR2 sends command to TH_CE to read the list of Fabrics on TH_CE" PICS: OPCREDS.C.A0001 verification: | - On second controller, read fabrics list + On TH_CR2 , read fabrics list - Below is the command using chip tool controller + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - ./chip-tool operationalcredentials read fabrics 1234 0 --fabric-filtered 0 + ./chip-tool operationalcredentials read fabrics 1234 0 --fabric-filtered 0 --commissioner-name beta + + Verify TH_CE receives and processes the command successfully on TH_CE (all-clusters-app) log CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 2455995246 [1647863342.980899][9309:9314] CHIP:TOO: Fabrics: 3 entries diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_18.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_18.yaml index cbc714bc930b67..a3acd649a11040 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_18.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_18.yaml @@ -14,8 +14,8 @@ # Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default name: - 4.1.18. [TC-CADMIN-1.18] Removing Fabrics from DUT and Fabric index - enumeration using BCM [DUT - Commissioner] + 30.1.18. [TC-CADMIN-1.18] Removing Fabrics from DUT and Fabric index + enumeration using BCM [DUT - Commissioner] PICS: - CADMIN.C @@ -40,7 +40,7 @@ tests: - label: "DUT_CR1 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - "1. Provision the device using DUT controller chip tool(use above instructions) , + "1. Provision the device using DUT_CR1 (Chip-tool as DUT controller) " disabled: true @@ -49,11 +49,14 @@ tests: commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" PICS: CADMIN.C.C01.Tx verification: | - On your first controller chip tool, open commissioning window using BCM + On DUT_CR1 (chip tool), open commissioning window using BCM - Below is the example when using chip tool as controller - ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + + ./chip-tool administratorcommissioning open-basic-commissioning-window 500 1 0 --timedInteractionTimeoutMs 1000 + Verify success response On TH-CE(all-clusters-app) Log CHIP: [DMG] InvokeResponseMessage = [1648116114630] [6871:3898916] CHIP: [DMG] { @@ -90,12 +93,14 @@ tests: - label: "TH_CR2 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - On 2nd controller using chip tool connect to the accessory + On TH_CR2 using chip tool connect to the accessory + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - ./chip-tool pairing onnetwork 1 20202021 - Verify you got below message + ./chip-tool pairing onnetwork 2 20202021 --commissioner-name beta + + Verify you got below message on TH_CE (all-clusters-app) log Device commissioning completed with success disabled: true @@ -104,11 +109,14 @@ tests: commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" PICS: CADMIN.C.C01.Tx verification: | - On your first controller chip tool, open commissioning window using BCM + On DUT_CR1 (chip tool), open commissioning window using BCM + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + - Below is the example when using chip tool as controller ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 + Verify success response On TH_CE (all-clusters-app) Log CHIP: [DMG] InvokeResponseMessage = [1648116114630] [6871:3898916] CHIP: [DMG] { @@ -145,12 +153,14 @@ tests: - label: "TH_CR3 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - On 3rd controller using chip tool connect to the accessory + On TH_CR3 using chip tool connect to the accessory + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - ./chip-tool pairing onnetwork 1 20202021 - Verify you got below message + ./chip-tool pairing onnetwork 3 20202021 --commissioner-name gamma + + Verify you got below message on TH_CE (all-clusters-app) log Device commissioning completed with success disabled: true @@ -158,11 +168,13 @@ tests: "DUT_CR1 sends command to TH_CE to read the list of Fabrics on TH_CE" PICS: OPCREDS.C.A0001 verification: | - On first controller, read fabrics list + On DUT_CR1 , read fabrics list - ./chip-tool operationalcredentials read fabrics 1234 0 --fabric-filtered 0 + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + ./chip-tool operationalcredentials read fabrics 1234 0 --fabric-filtered 0 + Verify TH_CE receives and processes the command successfully on TH_CE (all-clusters-app) log CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 2455995193 CHIP:TOO: Fabrics: 3 entries @@ -194,12 +206,16 @@ tests: " disabled: true - - label: "DUT_CR1 sends RemoveFabric with FabricIndex = 2 command to TH_CE" + - label: "DUT_CR1 sends RemoveFabric with FabricIndex = 2command to TH_CE" PICS: OPCREDS.C.C0a.Tx verification: | - on 2nd controller using chip tool, remove fabric with FabricIndex=2 + on DUT_CR1 ( using chip tool), remove fabric with FabricIndex=2 + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + Verify TH_CE responses with NOCResponse with a StatusCode OK on TH_CE (all-clusters-app) log - ./chip-tool operationalcredentials remove-fabric 2 1 0 + ./chip-tool operationalcredentials remove-fabric 2 1 0 --commissioner-name beta CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0008 CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Command 0x0000_0008 @@ -215,16 +231,19 @@ tests: Clusters NodeLabel mandatory attribute" PICS: BINFO.C.A0005 verification: | - Using your 2nd controller, write attribute and read attribute to and from TH_CE + Using TH_CR2 , write attribute and read attribute to and from TH_CE - Below is the example while using chip tool on second controller, - ./chip-tool basic write node-label te5new 2 0 + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + Verify read/write commands fail as expected since the TH_CR2 is no longer on the network on TH_CE (all-clusters-app) + + ./chip-tool basic write node-label te5new 2 0 --commissioner-name beta Received error (protocol code 2) during pairing process. ../../third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:1551: CHIP Error 0x00000054: Invalid CASE parameter [1651819620.929567][4359:4364] CHIP:CTL: OperationalDeviceProxy[B8070CD13C99D367:0000000000000002]: State change 3 --> 2 [1651819620.929700][4359:4364] CHIP:-: ../../third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:1551: CHIP Error 0x00000054: Invalid CASE parameter at ../../commands/clusters/ModelCommand.cpp:53 - ./chip-tool basic read node-label 2 0 + ./chip-tool basic read node-label 2 0 --commissioner-name beta Received error (protocol code 2) during pairing process. ../../third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:1551: CHIP Error 0x00000054: Invalid CASE parameter [1651819620.929567][4359:4364] CHIP:CTL: OperationalDeviceProxy[B8070CD13C99D367:0000000000000002]: State change 3 --> 2 @@ -234,9 +253,11 @@ tests: - label: "DUT_CR1 sends command to TH_CE to read the list of Fabrics" PICS: OPCREDS.C.A0001 verification: | - On first controller, read fabrics list + On DUT_CR1 , read fabrics list + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - Below is the command using chip tool controller + Verify TH_CE receives and processes the command successfully on TH_CE (all-clusters-app) ./chip-tool operationalcredentials read fabrics 1234 0 --fabric-filtered 0 @@ -261,11 +282,12 @@ tests: [1647863260.287515][9294:9299] CHIP:EM: Sending Standalone Ack for MessageCounter:11301761 on exchange 13180i disabled: true - - label: - "Verify TH_CE is now discoverable over DNS-SD with 2 Operational - service records (_matter._tcp SRV records)." + - label: "" verification: | - 1. Verify if the DUT is broadcasting using + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + Execute the below avahi-browse command in any LInux machine or in TH_CR2. + grl@grl-ThinkPad-L480:~/may16_cntrl03/connectedhomeip/examples/chip-tool/out/debug$ avahi-browse -rt _matter._tcp + wlp5s0 IPv6 8E50A59FAF52A809-0000000000000001 _matter._tcp local + wlp5s0 IPv6 03E707466A904C7E-0000000000000003 _matter._tcp local @@ -287,13 +309,15 @@ tests: commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" PICS: CADMIN.C.C01.Tx verification: | - On first controller chip tool, open commissioning window using BCM + On DUT_CR1 chip tool, open commissioning window using BCM - Below is the example when using chip tool as controller + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers For BCM, ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 + Verify success response On TH_CE (all-clusters-app) Log + CHIP:DMG: InvokeResponseMessage = [1650278416.248379][11064:11069] CHIP:DMG: { [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, @@ -330,23 +354,27 @@ tests: - label: "TH_CR2 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - On 2nd controller using chip tool connect to the accessory + On TH_CR2 using chip tool connect to the accessory + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - ./chip-tool pairing onnetwork 1 20202021 + ./chip-tool pairing onnetwork 2 20202021 --commissioner-name beta - Verify you got below message + Verify you got below message on TH_CE (all-clusters-app) log Device commissioning completed with success disabled: true - label: "TH_CR2 sends command to TH_CE to read the list of Fabrics" PICS: OPCREDS.C.A0001 verification: | - On second controller, read fabrics list + On TH_CR2 , read fabrics list - Below is the command using chip tool controller + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - ./chip-tool operationalcredentials read fabrics 1234 0 --fabric-filtered 0 + ./chip-tool operationalcredentials read fabrics 1234 0 --fabric-filtered 0 --commissioner-name beta + + Verify TH_CE receives and processes the command successfully on TH_CE (all-clusters-app) log CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 2455995246 [1647863342.980899][9309:9314] CHIP:TOO: Fabrics: 3 entries diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_19.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_19.yaml index 269f9e66c9f9b2..83891c653b5b23 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_19.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_19.yaml @@ -34,7 +34,7 @@ tests: - label: "TH_CR1 starts a commissioning process with DUT_CE" PICS: CADMIN.S verification: | - "1. Provision the device using 1st controller chip tool(use above instructions) , + "1. Provision the device using TH_CR1 -chip tool(use above instructions) , " disabled: true @@ -43,12 +43,12 @@ tests: timeout of PIXIT.CADMIN.CwDuration seconds using ECM" PICS: CADMIN.S.C00.Rsp verification: | - On 1st controller chip tool, open commissioning window using ECM - - Below is the example when using chip tool as controller + On TH_CR1 (chip tool), open commissioning window using ECM ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 + Verify Manual pairing code on TH_CR1 (chip-tool) Log + [1635925713.966786][9695:9700] CHIP:SC: Success status report received. Session was established [1635925713.966839][9695:9700] CHIP:IN: New secure session created for device 0x0000000000000001, key 33!! [1635925713.966938][9695:9700] CHIP:CTL: OpenCommissioningWindow for device ID 1 @@ -65,12 +65,12 @@ tests: - label: "THn starts a commissioning process with DUT_CE" PICS: CADMIN.S verification: | - On nth controller using chip tool connect to the accessory + On TH_CR1+1 controller using chip tool connect to the accessory - ./chip-tool pairing code 2 36217551633 + ./chip-tool pairing code 2 36217551633 --commissioner-name beta - Verify you got below message + Verify you got below message on TH_CR1+1(chip-tool) log Device commissioning completed with success disabled: true @@ -79,7 +79,13 @@ tests: to reach an index value of SupportedFabrics on DUT_CE" PICS: CADMIN.S.C00.Rsp verification: | - Repeat step 3 until CommissionedFabrics=SupportedFabrics + Repeat step 3 until CommissionedFabrics=SupportedFabrics (Supported fabrics value obtained in the precondition) + + Use the following command to verify the currentcommissioned fabric (Output number may vary depends on the number successful commissioning ) + + ./chip-tool operationalcredentials read commissioned-fabrics 1 0 + + [1660907933.677983][33780:33785] CHIP:TOO: CommissionedFabrics: 16 disabled: true - label: @@ -87,10 +93,11 @@ tests: with DUT_CE" PICS: CADMIN.S verification: | - On nth controller using chip tool connect to the accessory + On THnth controller using chip tool connect to the accessory + ./chip-tool pairing code 6 36217551633 --commissioner-name 4 - ./chip-tool pairing code 6 36217551633 + Verify DUT_CE responds with NOCResponse with a StatusCode of 0x05 on THn (chip-tool) log CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0008 [1649756670.402192][10794:10799] CHIP:CTL: Device returned status 5 on receiving the NOC @@ -101,7 +108,21 @@ tests: - label: "TH_CR1 removes FabricIndex1" PICS: OPCREDS.S.C0a.Rsp verification: | - on 1st controller using chip tool, remove fabric with FabricIndex=1 + on TH_CR1 using chip tool, remove fabric with FabricIndex=1 ./chip-tool operationalcredentials remove-fabric 1 1 0 + + CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0008 + CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Command 0x0000_0008 + CHIP:TOO: NOCResponse: { + CHIP:TOO: statusCode: 0 + CHIP:TOO: fabricIndex: 1 + CHIP:TOO: } + CHIP:DMG: ICR moving to [AwaitingDe] + + Verify CommissionedFabrics=SupportedFabrics-1 on TH_CR1(chip-tool) log + + ./chip-tool operationalcredentials read commissioned-fabrics 1 0 + + [1660907933.677983][33780:33785] CHIP:TOO: CommissionedFabrics: 15 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_2.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_2.yaml index 844c50fc29f807..7696714ea2df48 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_2.yaml @@ -39,7 +39,7 @@ tests: - label: "TH_CR1 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - Provision the device using chip tool on first controller + "1. Provision the TH_CE (all-cluster-app) device using TH_CR1 (chip-tool ) on the raspi" disabled: true - label: @@ -48,10 +48,13 @@ tests: (Basic Commissioning Method)" PICS: CADMIN.C.C01.Tx verification: | - On first controller, usinadministratorcommissioningg chip tool open commissioning window. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + On TH_CR1 send the below command ./chip-tool administratorcommissioning open-basic-commissioning-window 500 1 0 --timedInteractionTimeoutMs 1000 + Verify Success response On TH_CR1(CHIP-TOOL) Log CHIP:DMG: InvokeResponseMessage = @@ -90,10 +93,15 @@ tests: - label: "TH_CR1 sends command to TH_CE to read the list of Fabrics" PICS: OPCREDS.C.A0001 verification: | - On first controller, using chip tool read fabricList + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + On TH_CR1 send the below command ./chip-tool operationalcredentials read fabrics 1 0 --fabric-filtered 0 + On TH1(all-clusters-app) Log + + Verify 1 entry in the Fabrics list attributeOn TH_CR1(CHIP-TOOL) Log CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 3621507058 [1649245801.244173][10091:10096] CHIP:TOO: Fabrics: 1 entries @@ -111,18 +119,25 @@ tests: - label: "DUT_CR2 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - On second Controller connect to the accessory. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + On DUT_CR2 send the below command - Below is the example when using chip tool as controller ./chip-tool pairing onnetwork 2 20202021 --commissioner-name beta - Verify you got below message + Verify whether you got below message in the log of DUT_CR2(CHIP-TOOL) + Device commissioning completed with success disabled: true - label: "Verify TH_CE is now discoverable over DNS-SD with two SRV Records" verification: | - On the raspi , Verify if the DUT is broadcasting using + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + + On the raspi , Verify if the TH_CE(All-cluster-app) is broadcasting + + On TH_CR1 send the below command ubuntu@ubuntu:~/may10_cntrl2/connectedhomeip/examples/chip-tool/out/debug$ avahi-browse -rt _matter._tcp + eth0 IPv6 E0AF53B23E580769-0000000000000002 _matter._tcp local @@ -144,54 +159,63 @@ tests: Information Clusters NodeLabel mandatory attribute" PICS: BINFO.C.A0005 verification: | - On the 2nd controller write attribute and read attribute to and from TH_CE + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + On DUT_CR2 send the below command - Below is the example while using chip tool on second controller, ./chip-tool basic write node-label te5new 2 0 --commissioner-name beta - CHIP:DMG: WriteResponseMessage = - [1649245940.788522][10110:10115] CHIP:DMG: { - [1649245940.788577][10110:10115] CHIP:DMG: AttributeStatusIBs = - [1649245940.788653][10110:10115] CHIP:DMG: [ - [1649245940.788713][10110:10115] CHIP:DMG: AttributeStatusIB = - [1649245940.788787][10110:10115] CHIP:DMG: { - [1649245940.788852][10110:10115] CHIP:DMG: AttributePathIB = - [1649245940.788931][10110:10115] CHIP:DMG: { - [1649245940.789009][10110:10115] CHIP:DMG: Endpoint = 0x0, - [1649245940.789143][10110:10115] CHIP:DMG: Cluster = 0x28, - [1649245940.789228][10110:10115] CHIP:DMG: Attribute = 0x0000_0005, - [1649245940.789313][10110:10115] CHIP:DMG: } - [1649245940.789388][10110:10115] CHIP:DMG: - [1649245940.789454][10110:10115] CHIP:DMG: StatusIB = - [1649245940.789519][10110:10115] CHIP:DMG: { - [1649245940.789588][10110:10115] CHIP:DMG: status = 0x00 (SUCCESS), - [1649245940.789654][10110:10115] CHIP:DMG: }, - [1649245940.789719][10110:10115] CHIP:DMG: - [1649245940.789778][10110:10115] CHIP:DMG: }, - [1649245940.789841][10110:10115] CHIP:DMG: - [1649245940.789885][10110:10115] CHIP:DMG: ], - [1649245940.789941][10110:10115] CHIP:DMG: - [1649245940.789984][10110:10115] CHIP:DMG: InteractionModelRevision = 1 - [1649245940.790033][10110:10115] CHIP:DMG: } - [1649245940.790167][10110:10115] CHIP:DMG: WriteClient moving to [AwaitingDe] + On TH2(all-clusters-app) Log + Verify Write request on TH_CE(all-clusters-app) Log - Verify read attribute returns the updated value written - ./chip-tool basic read node-label 1 0 --commissioner-name beta - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0005 DataVersion: 3061847068 - [1649245950.006849][10116:10121] CHIP:TOO: NodeLabel: te5new - [1649245950.007024][10116:10121] CHIP:EM: Sending Standalone Ack for MessageCounter:12495101 on exchange 24816i + [1660894021.901330][2871:2871] CHIP:EM: Handling via exchange: 9616r, Delegate: 0xaaaada21ffc0 + [1660894021.901426][2871:2871] CHIP:IM: Received Write request + [1660894021.901484][2871:2871] CHIP:DMG: IM WH moving to [Initialized] + [1660894021.901613][2871:2871] CHIP:DMG: WriteRequestMessage = + [1660894021.901676][2871:2871] CHIP:DMG: { + [1660894021.901735][2871:2871] CHIP:DMG: suppressResponse = false, + [1660894021.901802][2871:2871] CHIP:DMG: timedRequest = false, + [1660894021.901864][2871:2871] CHIP:DMG: AttributeDataIBs = + [1660894021.901940][2871:2871] CHIP:DMG: [ + [1660894021.902001][2871:2871] CHIP:DMG: AttributeDataIB = + [1660894021.902071][2871:2871] CHIP:DMG: { + [1660894021.902136][2871:2871] CHIP:DMG: AttributePathIB = + [1660894021.902219][2871:2871] CHIP:DMG: { + [1660894021.902302][2871:2871] CHIP:DMG: Endpoint = 0x0, + + + ./chip-tool basic read node-label 2 0 --commissioner-name beta + + Verify read request on TH_CE(all-clusters-app) Log + + + [1660894142.828718][2871:2871] CHIP:EM: Handling via exchange: 62454r, Delegate: 0xaaaada21ffc0 + [1660894142.828834][2871:2871] CHIP:IM: Received Read request + [1660894142.829023][2871:2871] CHIP:DMG: ReadRequestMessage = + [1660894142.829097][2871:2871] CHIP:DMG: { + [1660894142.829153][2871:2871] CHIP:DMG: AttributePathIBs = + [1660894142.829235][2871:2871] CHIP:DMG: [ + [1660894142.829306][2871:2871] CHIP:DMG: AttributePathIB = + [1660894142.829376][2871:2871] CHIP:DMG: { + [1660894142.829449][2871:2871] CHIP:DMG: Endpoint = 0x0, + [1660894142.829532][2871:2871] CHIP:DMG: Cluster = 0x28, + [1660894142.829627][2871:2871] CHIP:DMG: Attribute = 0x0000_0005, disabled: true - label: "DUT_CR2 sends command to TH_CE to read the list of Fabrics on TH_CE" PICS: OPCREDS.C.A0001 verification: | - On second controller controller read fabricList + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + On DUT_CR2 send the below command - Below is the example while using chip tool on second controller, ./chip-tool operationalcredentials read fabrics 2 0 --fabric-filtered 0 --commissioner-name beta + Verify 2 entries in the Fabrics list attribute On DUT_CR2(chip-tool) Log + + CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 3229397217 [1650277071.834099][40790:40795] CHIP:TOO: Fabrics: 2 entries [1650277071.834120][40790:40795] CHIP:TOO: [1]: { @@ -218,41 +242,43 @@ tests: Clusters NodeLabel mandatory attribute" PICS: BINFO.C.A0005 verification: | - On first controller, using chip-tool write attribute, Verify read attribute returns the updated value written. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + ./chip-tool basic write node-label te8 1 0 - CHIP:DMG: WriteResponseMessage = - [1649245940.788522][10110:10115] CHIP:DMG: { - [1649245940.788577][10110:10115] CHIP:DMG: AttributeStatusIBs = - [1649245940.788653][10110:10115] CHIP:DMG: [ - [1649245940.788713][10110:10115] CHIP:DMG: AttributeStatusIB = - [1649245940.788787][10110:10115] CHIP:DMG: { - [1649245940.788852][10110:10115] CHIP:DMG: AttributePathIB = - [1649245940.788931][10110:10115] CHIP:DMG: { - [1649245940.789009][10110:10115] CHIP:DMG: Endpoint = 0x0, - [1649245940.789143][10110:10115] CHIP:DMG: Cluster = 0x28, - [1649245940.789228][10110:10115] CHIP:DMG: Attribute = 0x0000_0005, - [1649245940.789313][10110:10115] CHIP:DMG: } - [1649245940.789388][10110:10115] CHIP:DMG: - [1649245940.789454][10110:10115] CHIP:DMG: StatusIB = - [1649245940.789519][10110:10115] CHIP:DMG: { - [1649245940.789588][10110:10115] CHIP:DMG: status = 0x00 (SUCCESS), - [1649245940.789654][10110:10115] CHIP:DMG: }, - [1649245940.789719][10110:10115] CHIP:DMG: - [1649245940.789778][10110:10115] CHIP:DMG: }, - [1649245940.789841][10110:10115] CHIP:DMG: - [1649245940.789885][10110:10115] CHIP:DMG: ], - [1649245940.789941][10110:10115] CHIP:DMG: - [1649245940.789984][10110:10115] CHIP:DMG: InteractionModelRevision = 1 - [1649245940.790033][10110:10115] CHIP:DMG: } - [1649245940.790167][10110:10115] CHIP:DMG: WriteClient moving to [AwaitingDe] + Verify the Write request On TH_CE(all-clusters-app) Log + + + [1660894538.804578][2871:2871] CHIP:EM: Handling via exchange: 64932r, Delegate: 0xaaaada21ffc0 + [1660894538.804677][2871:2871] CHIP:IM: Received Write request + [1660894538.804737][2871:2871] CHIP:DMG: IM WH moving to [Initialized] + [1660894538.804867][2871:2871] CHIP:DMG: WriteRequestMessage = + [1660894538.804933][2871:2871] CHIP:DMG: { + [1660894538.804993][2871:2871] CHIP:DMG: suppressResponse = false, + [1660894538.805059][2871:2871] CHIP:DMG: timedRequest = false, + [1660894538.805120][2871:2871] CHIP:DMG: AttributeDataIBs = + [1660894538.805196][2871:2871] CHIP:DMG: [ + - Verify read attribute returns the updated value written ./chip-tool basic read node-label 1 0 - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0005 DataVersion: 3061847068 - [1649245950.006849][10116:10121] CHIP:TOO: NodeLabel: te8 - [1649245950.007024][10116:10121] CHIP:EM: Sending Standalone Ack for MessageCounter:12495101 on exchange 24816i + + Verify the Read request On TH_CE(all-clusters-app) Log + + [1660894686.511690][2871:2871] CHIP:EM: Received message of type 0x2 with protocolId (0, 1) and MessageCounter:155836021 on exchange 25703r + [1660894686.511817][2871:2871] CHIP:EM: Handling via exchange: 25703r, Delegate: 0xaaaada21ffc0 + [1660894686.511920][2871:2871] CHIP:IM: Received Read request + [1660894686.512190][2871:2871] CHIP:DMG: ReadRequestMessage = + [1660894686.512259][2871:2871] CHIP:DMG: { + [1660894686.512314][2871:2871] CHIP:DMG: AttributePathIBs = + [1660894686.512380][2871:2871] CHIP:DMG: [ + [1660894686.512441][2871:2871] CHIP:DMG: AttributePathIB = + [1660894686.512526][2871:2871] CHIP:DMG: { + [1660894686.512599][2871:2871] CHIP:DMG: Endpoint = 0x0, + [1660894686.512683][2871:2871] CHIP:DMG: Cluster = 0x28, + [1660894686.512772][2871:2871] CHIP:DMG: Attribute = 0x0000_0005, + [1660894142.829703][2871:2871] CHIP:DMG: } + [1660894142.829777][2871:2871] CHIP:DMG: disabled: true - label: @@ -262,11 +288,14 @@ tests: verification: | On second controller read, write attribute and then read attribute to and from TH_CE + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - Below is the example while using chip tool on second controller, ./chip-tool basic write node-label te5new 2 0 --commissioner-name beta + On TH2(all-clusters-app) Log + + CHIP:DMG: WriteResponseMessage = [1649245940.788522][10110:10115] CHIP:DMG: { [1649245940.788577][10110:10115] CHIP:DMG: AttributeStatusIBs = @@ -296,6 +325,10 @@ tests: Verify read attribute returns the updated value written ./chip-tool basic read node-label 2 0 --commissioner-name beta + + On TH2(all-clusters-app) Log + + CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0005 DataVersion: 3061847068 [1649245950.006849][10116:10121] CHIP:TOO: NodeLabel: te5new [1649245950.007024][10116:10121] CHIP:EM: Sending Standalone Ack for MessageCounter:12495101 on exchange 24816i @@ -312,43 +345,17 @@ tests: (Basic Commissioning Method)" PICS: CADMIN.C.C01.Tx verification: | - On second controller using chip-tool open commissioning widow using BCM. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + On DUT_CR2 send the below command - Below is the example while using chip tool on second controller, ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 --commissioner-name beta + Verify the Commissioning window is opened in TH_CE(all-clusters-app) Log - CHIP:DMG: InvokeResponseMessage = - [1650278416.248379][11064:11069] CHIP:DMG: { - [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, - [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = - [1650278416.248570][11064:11069] CHIP:DMG: [ - [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = - [1650278416.248718][11064:11069] CHIP:DMG: { - [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = - [1650278416.248860][11064:11069] CHIP:DMG: { - [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = - [1650278416.249011][11064:11069] CHIP:DMG: { - [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, - [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, - [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, - [1650278416.249347][11064:11069] CHIP:DMG: }, - [1650278416.249430][11064:11069] CHIP:DMG: - [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = - [1650278416.249581][11064:11069] CHIP:DMG: { - [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), - [1650278416.249738][11064:11069] CHIP:DMG: }, - [1650278416.249823][11064:11069] CHIP:DMG: - [1650278416.249889][11064:11069] CHIP:DMG: }, - [1650278416.249969][11064:11069] CHIP:DMG: - [1650278416.250035][11064:11069] CHIP:DMG: }, - [1650278416.250113][11064:11069] CHIP:DMG: - [1650278416.250169][11064:11069] CHIP:DMG: ], - [1650278416.250241][11064:11069] CHIP:DMG: - [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 - [1650278416.250355][11064:11069] CHIP:DMG: }, - [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 - [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] + [1660901022.112296][3045:3045] CHIP:DIS: mDNS service published: _matterc._udp + [1660901022.112389][3045:3045] CHIP:ZCL: Commissioning window is now open + [1660901022.112474][3045:3045] CHIP:DMG: Command handler moving to [ Preparing] disabled: true - label: @@ -356,43 +363,18 @@ tests: using the Revoke Commissioning command" PICS: CADMIN.C.C02.Tx verification: | - On second controller using chip-tool run revoke command + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + On DUT_CR2 send the below command - Below is the example while using chip tool on second controller, ./chip-tool administratorcommissioning revoke-commissioning 2 0 --timedInteractionTimeoutMs 1000 --commissioner-name beta + Verify the Commissioning window is closed in TH_CE(all-clusters-app) Log - CHIP:DMG: InvokeResponseMessage = - [1650278416.248379][11064:11069] CHIP:DMG: { - [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, - [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = - [1650278416.248570][11064:11069] CHIP:DMG: [ - [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = - [1650278416.248718][11064:11069] CHIP:DMG: { - [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = - [1650278416.248860][11064:11069] CHIP:DMG: { - [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = - [1650278416.249011][11064:11069] CHIP:DMG: { - [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, - [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, - [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, - [1650278416.249347][11064:11069] CHIP:DMG: }, - [1650278416.249430][11064:11069] CHIP:DMG: - [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = - [1650278416.249581][11064:11069] CHIP:DMG: { - [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), - [1650278416.249738][11064:11069] CHIP:DMG: }, - [1650278416.249823][11064:11069] CHIP:DMG: - [1650278416.249889][11064:11069] CHIP:DMG: }, - [1650278416.249969][11064:11069] CHIP:DMG: - [1650278416.250035][11064:11069] CHIP:DMG: }, - [1650278416.250113][11064:11069] CHIP:DMG: - [1650278416.250169][11064:11069] CHIP:DMG: ], - [1650278416.250241][11064:11069] CHIP:DMG: - [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 - [1650278416.250355][11064:11069] CHIP:DMG: }, - [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 - [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] + [1660901039.590962][3045:3045] CHIP:DMG: Received command for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0002 + [1660901039.591036][3045:3045] CHIP:ZCL: Received command to close commissioning window + [1660901039.591094][3045:3045] CHIP:SVR: Closing pairing window + [1660901039.591169][3045:3045] CHIP:IN: SecureSession[0xaaaab010d400]: Released - Type:1 LSID:14411 disabled: true - label: @@ -400,10 +382,13 @@ tests: with TH_CE" PICS: CADMIN.C verification: | - 1. On third controller, using chip-tool connect to the accessory. Connect attempt should fail, i.e + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + On TH_CR3 send the below command + ./chip-tool pairing onnetwork 3 20202021 --commissioner-name gamma - verify you got the following message in the TH log + verify you got the following message in the TH_CR3(chip-tool) log CHIP:SC: PASESession timed out while waiting for a response from the peer. Expected message type was 33 CHIP:TOO: Secure Pairing Failed @@ -415,42 +400,38 @@ tests: Information Clusters NodeLabel mandatory attribute" PICS: BINFO.C.A0005 verification: | - On second controller, write attribute and read attribute to and from TH_CE + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + On DUT_CR2 send the below command - Below is the example while using chip tool on second controller, ./chip-tool basic write node-label te5new 2 0 --commissioner-name beta - CHIP:DMG: WriteResponseMessage = - [1649245940.788522][10110:10115] CHIP:DMG: { - [1649245940.788577][10110:10115] CHIP:DMG: AttributeStatusIBs = - [1649245940.788653][10110:10115] CHIP:DMG: [ - [1649245940.788713][10110:10115] CHIP:DMG: AttributeStatusIB = - [1649245940.788787][10110:10115] CHIP:DMG: { - [1649245940.788852][10110:10115] CHIP:DMG: AttributePathIB = - [1649245940.788931][10110:10115] CHIP:DMG: { - [1649245940.789009][10110:10115] CHIP:DMG: Endpoint = 0x0, - [1649245940.789143][10110:10115] CHIP:DMG: Cluster = 0x28, - [1649245940.789228][10110:10115] CHIP:DMG: Attribute = 0x0000_0005, - [1649245940.789313][10110:10115] CHIP:DMG: } - [1649245940.789388][10110:10115] CHIP:DMG: - [1649245940.789454][10110:10115] CHIP:DMG: StatusIB = - [1649245940.789519][10110:10115] CHIP:DMG: { - [1649245940.789588][10110:10115] CHIP:DMG: status = 0x00 (SUCCESS), - [1649245940.789654][10110:10115] CHIP:DMG: }, - [1649245940.789719][10110:10115] CHIP:DMG: - [1649245940.789778][10110:10115] CHIP:DMG: }, - [1649245940.789841][10110:10115] CHIP:DMG: - [1649245940.789885][10110:10115] CHIP:DMG: ], - [1649245940.789941][10110:10115] CHIP:DMG: - [1649245940.789984][10110:10115] CHIP:DMG: InteractionModelRevision = 1 - [1649245940.790033][10110:10115] CHIP:DMG: } - [1649245940.790167][10110:10115] CHIP:DMG: WriteClient moving to [AwaitingDe] + Verify the Write request On TH_CE(all-clusters-app) Log + + [1660902144.913634][3045:3045] CHIP:EM: Handling via exchange: 22257r, Delegate: 0xaaaaadbeffc0 + [1660902144.913728][3045:3045] CHIP:IM: Received Write request + [1660902144.913785][3045:3045] CHIP:DMG: IM WH moving to [Initialized] + [1660902144.913912][3045:3045] CHIP:DMG: WriteRequestMessage = + [1660902144.913977][3045:3045] CHIP:DMG: { + [1660902144.914038][3045:3045] CHIP:DMG: suppressResponse = false, + [1660902144.914106][3045:3045] CHIP:DMG: timedRequest = false, + [1660902144.914168][3045:3045] CHIP:DMG: AttributeDataIBs = + + [1660902144.915374][3045:3045] CHIP:DMG: - Verify read attribute returns the updated value written ./chip-tool basic read node-label 2 0 --commissioner-name beta - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0005 DataVersion: 3061847068 - [1649245950.006849][10116:10121] CHIP:TOO: NodeLabel: te5new - [1649245950.007024][10116:10121] CHIP:EM: Sending Standalone Ack for MessageCounter:12495101 on exchange 24816i + + Verify the Write request On TH_CE(all-clusters-app) Log + + [1660902253.379018][3045:3045] CHIP:EM: Handling via exchange: 3197r, Delegate: 0xaaaaadbeffc0 + [1660902253.379122][3045:3045] CHIP:IM: Received Read request + [1660902253.379306][3045:3045] CHIP:DMG: ReadRequestMessage = + [1660902253.379373][3045:3045] CHIP:DMG: { + [1660902253.379430][3045:3045] CHIP:DMG: AttributePathIBs = + [1660902253.379496][3045:3045] CHIP:DMG: [ + [1660902253.379557][3045:3045] CHIP:DMG: AttributePathIB = + [1660902253.379634][3045:3045] CHIP:DMG: { + [1660902253.379703][3045:3045] CHIP:DMG: Endpoint = 0x0, disabled: true - label: @@ -458,43 +439,17 @@ tests: BCM" PICS: CADMIN.C.C01.Tx verification: | - On second controller using chip-tool open commissioning widow using BCM. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + On DUT_CR2 send the below command - Below is the example while using chip tool on second controller, ./chip-tool administratorcommissioning open-basic-commissioning-window 180 2 0 --timedInteractionTimeoutMs 1000 --commissioner-name beta + Verify the Commissioning window is opened in TH_CE(all-clusters-app) Log - CHIP:DMG: InvokeResponseMessage = - [1650278416.248379][11064:11069] CHIP:DMG: { - [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, - [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = - [1650278416.248570][11064:11069] CHIP:DMG: [ - [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = - [1650278416.248718][11064:11069] CHIP:DMG: { - [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = - [1650278416.248860][11064:11069] CHIP:DMG: { - [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = - [1650278416.249011][11064:11069] CHIP:DMG: { - [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, - [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, - [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, - [1650278416.249347][11064:11069] CHIP:DMG: }, - [1650278416.249430][11064:11069] CHIP:DMG: - [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = - [1650278416.249581][11064:11069] CHIP:DMG: { - [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), - [1650278416.249738][11064:11069] CHIP:DMG: }, - [1650278416.249823][11064:11069] CHIP:DMG: - [1650278416.249889][11064:11069] CHIP:DMG: }, - [1650278416.249969][11064:11069] CHIP:DMG: - [1650278416.250035][11064:11069] CHIP:DMG: }, - [1650278416.250113][11064:11069] CHIP:DMG: - [1650278416.250169][11064:11069] CHIP:DMG: ], - [1650278416.250241][11064:11069] CHIP:DMG: - [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 - [1650278416.250355][11064:11069] CHIP:DMG: }, - [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 - [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] + [1660902413.357922][3045:3045] CHIP:DIS: mDNS service published: _matterc._udp + [1660902413.358025][3045:3045] CHIP:ZCL: Commissioning window is now open + [1660902413.358116][3045:3045] CHIP:DMG: Command handler moving to [ Preparing] disabled: true - label: @@ -508,43 +463,17 @@ tests: BCM" PICS: CADMIN.C.C01.Tx verification: | - On second controller using chip-tool open commissioning widow using BCM. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + On DUT_CR2 send the below command - Below is the example while using chip tool on second controller, ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 --commissioner-name beta + Verify the Commissioning window is opened in TH_CE(all-clusters-app) Log - CHIP:DMG: InvokeResponseMessage = - [1650278416.248379][11064:11069] CHIP:DMG: { - [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, - [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = - [1650278416.248570][11064:11069] CHIP:DMG: [ - [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = - [1650278416.248718][11064:11069] CHIP:DMG: { - [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = - [1650278416.248860][11064:11069] CHIP:DMG: { - [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = - [1650278416.249011][11064:11069] CHIP:DMG: { - [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, - [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, - [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, - [1650278416.249347][11064:11069] CHIP:DMG: }, - [1650278416.249430][11064:11069] CHIP:DMG: - [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = - [1650278416.249581][11064:11069] CHIP:DMG: { - [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), - [1650278416.249738][11064:11069] CHIP:DMG: }, - [1650278416.249823][11064:11069] CHIP:DMG: - [1650278416.249889][11064:11069] CHIP:DMG: }, - [1650278416.249969][11064:11069] CHIP:DMG: - [1650278416.250035][11064:11069] CHIP:DMG: }, - [1650278416.250113][11064:11069] CHIP:DMG: - [1650278416.250169][11064:11069] CHIP:DMG: ], - [1650278416.250241][11064:11069] CHIP:DMG: - [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 - [1650278416.250355][11064:11069] CHIP:DMG: }, - [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 - [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] + [1660902623.744448][3045:3045] CHIP:DIS: mDNS service published: _matterc._udp + [1660902623.744550][3045:3045] CHIP:ZCL: Commissioning window is now open + [1660902623.744634][3045:3045] CHIP:DMG: Command handler moving to [ Preparing] disabled: true - label: @@ -552,15 +481,23 @@ tests: from step 15" PICS: CADMIN.C verification: | - Using your 1st Controller connect to the accessory. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + On TH_CR1 send the below command - Below is the example when using chip tool as controller ./chip-tool pairing onnetwork 1 20202021 + Verify the OperationalCert error 9 in TH_CE(all-clusters-app) Log + + [1660902716.613196][3045:3045] CHIP:DMG: Command handler moving to [AddedComma] + [1660902716.613274][3045:3045] CHIP:ZCL: OpCreds: Failed AddNOC request (err=../../examples/all-clusters-app/linux/third_party/connectedhomeip/src/credentials/FabricTable.cpp:1692: CHIP Error 0x0000007E: Trying to add a NOC for a fabric that already exists) with OperationalCert error 9 + [1660902716.613394][3045:3045] CHIP:DMG: Decreasing reference count for CommandHandler, remaining 0 + [1660902716.613497][3045:3045] CHIP:EM: Piggybacking Ack for MessageCounter:176866087 on exchange: 56605r + + Trying to add a NOC for a fabric that already exists On TH_CR1(chip-tool) Log + [1651786200275] [36301:315544] CHIP: [DMG] Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0008 [1651786200275] [36301:315544] CHIP: [CTL] Device returned status 9 on receiving the NOC [1651786200275] [36301:315544] CHIP: [CTL] Add NOC failed with error ../../src/controller/CHIPDeviceController.cpp:1187: CHIP Error 0x0000007E: Trying to add a NOC for a fabric that already exists [1651786200275] [36301:315544] CHIP: [CTL] Error on commissioning step "SendNOC": "../../src/controller/CHIPDeviceController.cpp:1187: CHIP Error 0x0000007E: Trying to add a NOC for a fabric that already exists" - - Verify that the commissioning process fails as TH_CE was already commissioned by TH_CR1 in step 1 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_20.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_20.yaml index 50e30a8e4ef88f..18672ffa5ddad4 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_20.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_20.yaml @@ -35,7 +35,7 @@ tests: - label: "TH_CR1 starts a commissioning process with DUT_CE" PICS: CADMIN.S verification: | - "1. Provision the device using 1st controller chip tool(use above instructions) , + "1. Provision the device using TH_CR1 - chip tool(use above instructions) , " disabled: true @@ -44,12 +44,12 @@ tests: timeout of PIXIT.CADMIN.CwDuration seconds using BCM" PICS: CADMIN.S.C01.Rsp verification: | - On 1st controller chip tool, open commissioning window using BCM - - Below is the example when using chip tool as controller + On TH_CR1 (chip tool), open commissioning window using BCM ./chip-tool administratorcommissioning open-basic-commissioning-window 500 1 0 --timedInteractionTimeoutMs 1000 + Verify success response On TH_CR1(chip-tool) Log + CHIP:DMG: InvokeResponseMessage = [1649756654.928453][3385:3390] CHIP:DMG: { [1649756654.928511][3385:3390] CHIP:DMG: suppressResponse = false, @@ -86,12 +86,11 @@ tests: - label: "THn starts a commissioning process with DUT_CE" PICS: CADMIN.S verification: | - On nth controller using chip tool connect to the accessory - + On TH_CR1+1 controller using chip tool connect to the accessory - ./chip-tool pairing onnetwork 2 20202021 + ./chip-tool pairing onnetwork 2 20202021 --commissioner-name beta - Verify you got below message + Verify you got below message on TH_CR1+1(chip-tool) log Device commissioning completed with success disabled: true @@ -100,7 +99,13 @@ tests: to reach an index value of SupportedFabrics on DUT_CE" PICS: CADMIN.S.C01.Rsp verification: | - Repeat step 3 until CommissionedFabrics=SupportedFabrics + Repeat step 3 until CommissionedFabrics=SupportedFabrics (Supported fabrics value obtained in the precondition) + + Use the following command to verify the currentcommissioned fabric (Output number may vary depends on the number successful commissioning ) + + ./chip-tool operationalcredentials read commissioned-fabrics 1 0 + + [1660907933.677983][33780:33785] CHIP:TOO: CommissionedFabrics: 16 disabled: true - label: @@ -108,10 +113,11 @@ tests: with DUT_CE" PICS: CADMIN.S.C01.Rsp verification: | - On nth controller using chip tool connect to the accessory + On THnth controller using chip tool connect to the accessory + ./chip-tool pairing onnetwork 6 20202021 --commissioner-name 4 - ./chip-tool pairing onnetwork 6 20202021 + Verify DUT_CE responds with NOCResponse with a StatusCode of 0x05 on THn (chip-tool) log CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0008 [1649756670.402192][10794:10799] CHIP:CTL: Device returned status 5 on receiving the NOC @@ -122,7 +128,21 @@ tests: - label: "TH_CR1 removes FabricIndex1" PICS: OPCREDS.S.C0a.Rsp verification: | - on 1st controller using chip tool, remove fabric with FabricIndex=1 + on TH_CR1 using chip tool, remove fabric with FabricIndex=1 ./chip-tool operationalcredentials remove-fabric 1 1 0 + + CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0008 + CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Command 0x0000_0008 + CHIP:TOO: NOCResponse: { + CHIP:TOO: statusCode: 0 + CHIP:TOO: fabricIndex: 1 + CHIP:TOO: } + CHIP:DMG: ICR moving to [AwaitingDe] + + Verify CommissionedFabrics=SupportedFabrics-1 on TH_CR1(chip-tool) log + + ./chip-tool operationalcredentials read commissioned-fabrics 1 0 + + [1660907933.677983][33780:33785] CHIP:TOO: CommissionedFabrics: 15 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_21.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_21.yaml index 4119e0fbebea8b..3b49df915b30db 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_21.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_21.yaml @@ -14,8 +14,8 @@ # Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default name: - 4.1.21. [TC-CADMIN-1.21] Open commissioning window - durations max and max+1 - [BCM] [DUT - Commissionee] + 30.1.21. [TC-CADMIN-1.21] Open commissioning window - durations max and + max+1 [BCM] [DUT - Commissionee] PICS: - CADMIN.S @@ -23,109 +23,88 @@ PICS: config: nodeId: 0x12344321 - cluster: "Basic" + timeout: 950 endpoint: 0 + discriminator: + type: int16u + defaultValue: 3840 tests: - - label: "Precondition" - verification: | - Reset Devices to factory defaults - disabled: true + - label: "Precondition: Reset Devices to factory defaults" + PICS: PICS_SDK_CI_ONLY + cluster: "SystemCommands" + command: "FactoryReset" - - label: "TH_CR1 starts a commissioning process with DUT_CE using BCM" - PICS: CADMIN.S.C01.Rsp + - label: "Precondition: Reset Devices to factory defaults" verification: | - "1. Provision the device using 1st controller chip tool(use above instructions) , - " - disabled: true - - - label: - "TH_CR1 opens a commissioning window on DUT_CE with a value of 900 - seconds" + Not implemented in YAML + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Factory Reset the DUT and enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: "TH_CR1 starts a commissioning process with DUT_CE" + cluster: "DelayCommands" + command: "WaitForCommissionee" + PICS: CADMIN.S + arguments: + values: + - name: "nodeId" + value: nodeId + + - label: "TH_CR1 opens a commissioning window on DUT_CE using BCM" + cluster: "AdministratorCommissioning" + command: "OpenBasicCommissioningWindow" + timedInteractionTimeoutMs: 10000 PICS: CADMIN.S.C01.Rsp - verification: | - On 1st controller chip tool, open commissioning window - - For BCM, - - - ./chip-tool administratorcommissioning open-basic-commissioning-window 900 2 0 --timedInteractionTimeoutMs 1000 - - - CHIP:DMG: InvokeResponseMessage = - [1650278416.248379][11064:11069] CHIP:DMG: { - [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, - [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = - [1650278416.248570][11064:11069] CHIP:DMG: [ - [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = - [1650278416.248718][11064:11069] CHIP:DMG: { - [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = - [1650278416.248860][11064:11069] CHIP:DMG: { - [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = - [1650278416.249011][11064:11069] CHIP:DMG: { - [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, - [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, - [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, - [1650278416.249347][11064:11069] CHIP:DMG: }, - [1650278416.249430][11064:11069] CHIP:DMG: - [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = - [1650278416.249581][11064:11069] CHIP:DMG: { - [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), - [1650278416.249738][11064:11069] CHIP:DMG: }, - [1650278416.249823][11064:11069] CHIP:DMG: - [1650278416.249889][11064:11069] CHIP:DMG: }, - [1650278416.249969][11064:11069] CHIP:DMG: - [1650278416.250035][11064:11069] CHIP:DMG: }, - [1650278416.250113][11064:11069] CHIP:DMG: - [1650278416.250169][11064:11069] CHIP:DMG: ], - [1650278416.250241][11064:11069] CHIP:DMG: - [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 - [1650278416.250355][11064:11069] CHIP:DMG: }, - [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 - [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] - disabled: true + arguments: + values: + - name: "CommissioningTimeout" + value: 900 + - name: "discriminator" + value: discriminator - label: "Wait for commissioning Window to 901 seconds" - verification: | - Wait for commissioning Window to Timeout - disabled: true + cluster: "DelayCommands" + command: "WaitForMs" + arguments: + values: + - name: "ms" + value: 901000 - label: "TH_CR1 reads the window status to verify the DUT_CE window is closed" + cluster: "AdministratorCommissioning" + command: "readAttribute" + attribute: "WindowStatus" PICS: CADMIN.S.A0000 - verification: | - ./chip-tool administratorcommissioning read window-status 1 0 - - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 2849200592 - [1651137648.760469][14047:14052] CHIP:TOO: WindowStatus: 0 - [1651137648.760534][14047:14052] CHIP:EM: Sending Standalone Ack for MessageCounter:5527412 on exchange 14590i - disabled: true + response: + value: 0 - - label: - "TH_CR1 opens a commissioning window on DUT_CE with a value of 901 - seconds" + - label: "TH_CR1 opens a commissioning window on DUT_CE" + cluster: "AdministratorCommissioning" + command: "OpenBasicCommissioningWindow" PICS: CADMIN.S.C01.Rsp - verification: | - On 1st controller chip tool, open commissioning window - - For BCM, - ./chip-tool administratorcommissioning open-basic-commissioning-window 901 2 0 --timedInteractionTimeoutMs 1000 - - CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x85 - [1652860801.225084][9512:9517] CHIP:TOO: Error: IM Error 0x00000585: General error: 0x85 (INVALID_COMMAND) - [1652860801.225173][9512:9517] CHIP:DMG: ICR moving to [AwaitingDe] - [1652860801.225294][9512:9517] CHIP:EM: Sending Standalone Ack for MessageCounter:4191961 on exchange 37827i - disabled: true + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "CommissioningTimeout" + value: 901 + - name: "discriminator" + value: discriminator + response: + error: INVALID_COMMAND - label: "TH_CR1 reads the window status to verify the DUT_CE window is closed" + cluster: "AdministratorCommissioning" + command: "readAttribute" + attribute: "WindowStatus" PICS: CADMIN.S.A0000 - verification: | - On 1st controller read window status - - ./chip-tool administratorcommissioning read window-status 1 0 - - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 2849200592 - [1651137648.760469][14047:14052] CHIP:TOO: WindowStatus: 0 - [1651137648.760534][14047:14052] CHIP:EM: Sending Standalone Ack for MessageCounter:5527412 on exchange 14590i - disabled: true + response: + value: 0 diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_22.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_22.yaml index 261b804cfc05e6..52864032e07829 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_22.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_22.yaml @@ -14,120 +14,112 @@ # Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default name: - 4.1.22. [TC-CADMIN-1.22] Open commissioning window - durations max and max+1 - [ECM] [DUT - Commissionee] + 30.1.22. [TC-CADMIN-1.22] Open commissioning window - durations max and + max+1 [ECM] [DUT - Commissionee] PICS: - CADMIN.S config: nodeId: 0x12344321 - cluster: "Basic" + timeout: 950 endpoint: 0 + discriminator: + type: int16u + defaultValue: 3840 + PakeVerifier: + type: octet_string + defaultValue: + "\xb9\x61\x70\xaa\xe8\x03\x34\x68\x84\x72\x4f\xe9\xa3\xb2\x87\xc3\x03\x30\xc2\xa6\x60\x37\x5d\x17\xbb\x20\x5a\x8c\xf1\xae\xcb\x35\x04\x57\xf8\xab\x79\xee\x25\x3a\xb6\xa8\xe4\x6b\xb0\x9e\x54\x3a\xe4\x22\x73\x6d\xe5\x01\xe3\xdb\x37\xd4\x41\xfe\x34\x49\x20\xd0\x95\x48\xe4\xc1\x82\x40\x63\x0c\x4f\xf4\x91\x3c\x53\x51\x38\x39\xb7\xc0\x7f\xcc\x06\x27\xa1\xb8\x57\x3a\x14\x9f\xcd\x1f\xa4\x66\xcf" tests: - - label: "Precondition" - verification: | - Reset Devices to factory defaults - disabled: true + - label: "Precondition: Reset Devices to factory defaults" + cluster: "SystemCommands" + PICS: PICS_SDK_CI_ONLY + command: "FactoryReset" - - label: "TH_CR1 starts a commissioning process with DUT_CE using ECM" - PICS: CADMIN.S.C00.Rsp + - label: "Precondition: Reset Devices to factory defaults" verification: | - "1. Provision the device using 1st controller chip tool(use above instructions) , - " - disabled: true - - - label: - "TH_CR1 opens a commissioning window on DUT_CE with a value of 900 - seconds" + Not implemented in YAML + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Factory Reset the DUT and enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: "TH_CR1 starts a commissioning process with DUT_CE" + cluster: "DelayCommands" + command: "WaitForCommissionee" PICS: CADMIN.S.C00.Rsp - verification: | - On 1st controller chip tool, open commissioning window - - Below is the example when using chip tool as controller - - - For ECM, - ./chip-tool pairing open-commissioning-window 1 1 900 1000 3840 - - [1635925713.966786][9695:9700] CHIP:SC: Success status report received. Session was established - [1635925713.966839][9695:9700] CHIP:IN: New secure session created for device 0x0000000000000001, key 33!! - [1635925713.966938][9695:9700] CHIP:CTL: OpenCommissioningWindow for device ID 1 - [1635925713.972601][9695:9700] CHIP:DMG: ICR moving to [AddingComm] - [1635925713.972705][9695:9700] CHIP:DMG: ICR moving to [AddedComma] - [1635925713.972815][9695:9700] CHIP:IN: Prepared encrypted message 0xaaaad9b57d10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 31056i with MessageCounter:0. - [1635925713.972876][9695:9700] CHIP:IN: Sending encrypted msg 0xaaaad9b57d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 13449459 msec - [1635925713.973006][9695:9700] CHIP:DMG: ICR moving to [CommandSen] - [1635925713.973061][9695:9700] CHIP:CTL: Manual pairing code: [35484132896] - [1635925713.973120][9695:9700] CHIP:CTL: SetupQRCode: [MT:00000CQM00A7F87ZT10] - [1635925713.973178][9695:9700] CHIP:EM: Sending Standalone Ack for MessageCounter:1964916542 on exchange 31055i - disabled: true + arguments: + values: + - name: "nodeId" + value: nodeId + + - label: "TH_CR1 opens a commissioning window on DUT_CE" + cluster: "AdministratorCommissioning" + command: "OpenCommissioningWindow" + PICS: CADMIN.S.C00.Rsp + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "CommissioningTimeout" + value: 900 + - name: "PAKEVerifier" + value: PakeVerifier + - name: "discriminator" + value: discriminator + - name: "iterations" + value: 1000 + - name: "salt" + value: "SPAKE2P Key Salt" - label: "Wait for commissioning Window to 901 seconds" - verification: | - On 1st controller chip tool, open commissioning window - - Below is the example when using chip tool as controller - - - For ECM, - ./chip-tool pairing open-commissioning-window 1 1 900 1000 3840 - - [1635925713.966786][9695:9700] CHIP:SC: Success status report received. Session was established - [1635925713.966839][9695:9700] CHIP:IN: New secure session created for device 0x0000000000000001, key 33!! - [1635925713.966938][9695:9700] CHIP:CTL: OpenCommissioningWindow for device ID 1 - [1635925713.972601][9695:9700] CHIP:DMG: ICR moving to [AddingComm] - [1635925713.972705][9695:9700] CHIP:DMG: ICR moving to [AddedComma] - [1635925713.972815][9695:9700] CHIP:IN: Prepared encrypted message 0xaaaad9b57d10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 31056i with MessageCounter:0. - [1635925713.972876][9695:9700] CHIP:IN: Sending encrypted msg 0xaaaad9b57d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 13449459 msec - [1635925713.973006][9695:9700] CHIP:DMG: ICR moving to [CommandSen] - [1635925713.973061][9695:9700] CHIP:CTL: Manual pairing code: [35484132896] - [1635925713.973120][9695:9700] CHIP:CTL: SetupQRCode: [MT:00000CQM00A7F87ZT10] - [1635925713.973178][9695:9700] CHIP:EM: Sending Standalone Ack for MessageCounter:1964916542 on exchange 31055i - disabled: true + cluster: "DelayCommands" + command: "WaitForMs" + arguments: + values: + - name: "ms" + value: 901000 - label: "TH_CR1 reads the window status to verify the DUT_CE window is closed" + cluster: "AdministratorCommissioning" + command: "readAttribute" + attribute: "WindowStatus" PICS: CADMIN.S.A0000 - verification: | - On 1st controller read window status - - ./chip-tool administratorcommissioning read window-status 1 0 - - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 2849200592 - [1651137648.760469][14047:14052] CHIP:TOO: WindowStatus: 0 - [1651137648.760534][14047:14052] CHIP:EM: Sending Standalone Ack for MessageCounter:5527412 on exchange 14590i - disabled: true + response: + value: 0 - - label: - "TH_CR1 opens a commissioning window on DUT_CE with a value of 901 - seconds" + - label: "TH_CR1 opens a commissioning window on DUT_CE" + cluster: "AdministratorCommissioning" + command: "OpenCommissioningWindow" PICS: CADMIN.S.C00.Rsp - verification: | - On 1st controller chip tool, open commissioning window - - Below is the example when using chip tool as controller - - - For ECM, - ./chip-tool pairing open-commissioning-window 1 1 901 1000 3840 - - CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x85 - [1652860801.225084][9512:9517] CHIP:TOO: Error: IM Error 0x00000585: General error: 0x85 (INVALID_COMMAND) - [1652860801.225173][9512:9517] CHIP:DMG: ICR moving to [AwaitingDe] - [1652860801.225294][9512:9517] CHIP:EM: Sending Standalone Ack for MessageCounter:4191961 on exchange 37827i - disabled: true + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "CommissioningTimeout" + value: 901 + - name: "PAKEVerifier" + value: PakeVerifier + - name: "discriminator" + value: discriminator + - name: "iterations" + value: 1000 + - name: "salt" + value: "SPAKE2P Key Salt" + response: + error: INVALID_COMMAND - label: "TH_CR1 reads the window status to verify the DUT_CE window is closed" + cluster: "AdministratorCommissioning" + command: "readAttribute" + attribute: "WindowStatus" PICS: CADMIN.S.A0000 - verification: | - On first controller, read window status - - ./chip-tool administratorcommissioning read window-status 1 0 - - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 2849200592 - [1651137648.760469][14047:14052] CHIP:TOO: WindowStatus: 0 - [1651137648.760534][14047:14052] CHIP:EM: Sending Standalone Ack for MessageCounter:5527412 on exchange 14590i - disabled: true + response: + value: 0 diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_23.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_23.yaml index 5ba018a444cd38..f014b0272aabe3 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_23.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_23.yaml @@ -23,7 +23,7 @@ PICS: config: nodeId: 0x12344321 - timeout: 330 + timeout: 200 endpoint: 0 discriminator: type: int16u @@ -69,7 +69,7 @@ tests: - name: "discriminator" value: discriminator - - label: "Wait for commissioning Window to 301 seconds" + - label: "Wait for commissioning Window to 181 seconds" cluster: "DelayCommands" command: "WaitForMs" arguments: diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_24.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_24.yaml index 736adc1aad733b..d589e09a309ac1 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_24.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_24.yaml @@ -22,7 +22,7 @@ PICS: config: nodeId: 0x12344321 - timeout: 330 + timeout: 200 endpoint: 0 discriminator: type: int16u @@ -78,7 +78,7 @@ tests: - name: "salt" value: "SPAKE2P Key Salt" - - label: "Wait for commissioning Window to 301 seconds" + - label: "Wait for commissioning Window to 181 seconds" cluster: "DelayCommands" command: "WaitForMs" arguments: diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_6.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_6.yaml index 3b2066c0c6d8a1..fc2ef27ac21f25 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_6.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_6.yaml @@ -87,7 +87,7 @@ tests: - name: "ms" value: 190000 - - label: "Commission from beta" + - label: "TH_CR2 starts a commissioning process with DUT_CE" identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_7.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_7.yaml index c8371b511790e7..51584addb07c21 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_7.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_7.yaml @@ -40,7 +40,7 @@ tests: - label: "DUT_CR1 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - 1. Provision the device using DUT_CR1 controller on the raspi. + "1. Provision the TH_CE (all-cluster-app) device using DUT_CR1 (chip-tool ) on the raspi" " disabled: true - label: @@ -48,19 +48,21 @@ tests: commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" PICS: CADMIN.C.C00.Tx verification: | - On 1st controller open commissioning widow using ECM. + On DUT_CR1 send the below command - Below is the example while using chip tool as controller, + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command with their all-cluster-app and for the second and third commissioners. + + Verify the Open commisioning window on the TH_CE(all-cluster-app) Log: + + [1660904553.796857][3537:3537] CHIP:DMG: Received command for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0000 + [1660904553.796951][3537:3537] CHIP:ZCL: Received command to open commissioning window + [1660904553.797255][3537:3537] CHIP:IN: SecureSession[0xaaab142ef7f0]: Allocated Type:1 LSID:34523 ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 - [1635871058.908790][4273:4278] CHIP:SC: Success status report received. Session was established - [1635871058.908827][4273:4278] CHIP:IN: New secure session created for device 0x0000000000000001, key 47!! - [1635871058.908924][4273:4278] CHIP:CTL: OpenCommissioningWindow for device ID 1 - [1635871058.916166][4273:4278] CHIP:DMG: ICR moving to [AddingComm] - [1635871058.916223][4273:4278] CHIP:DMG: ICR moving to [AddedComma] - [1635871058.916362][4273:4278] CHIP:IN: Prepared encrypted message 0xaaaac41dfd10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 21937i with MessageCounter:0. - [1635871058.916421][4273:4278] CHIP:IN: Sending encrypted msg 0xaaaac41dfd10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 12630575 msec + Verify the Manual pairing code on the DUT_CR1(chip-tool) Log: + + 0x0000000000000001 at monotonic time: 12630575 msec [1635871058.916549][4273:4278] CHIP:DMG: ICR moving to [CommandSen] [1635871058.916607][4273:4278] CHIP:CTL: Manual pairing code: [36366524220] [1635871058.916679][4273:4278] CHIP:CTL: SetupQRCode: [MT:00000CQM0088GL3XV00] @@ -94,13 +96,15 @@ tests: PIXIT.CADMIN.CwDuration (that was given in step 2) + 10 seconds" PICS: CADMIN.C verification: | - On the 2nd controller using chip-tool , connect using manual code generated by DUT Controller + On TH_CR2 send the below command + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - Below is the example when using chip tool as controller (considering 36366524220 as the manual code generated by DUT controller) + (considering 36366524220 as the manual code generated by DUT controller) ./chip-tool pairing code 2 36366524220 --commissioner-name beta - verify you got the following message in the TH log + Verify the below message in the TH_CR2(chip-tool) Log: + CHIP:SC: PASESession timed out while waiting for a response from the peer. Expected message type was 33 CHIP:TOO: Secure Pairing Failed CHIP:TOO: Pairing Failure: ../../third_party/connectedhomeip/src/protocols/secure_channel/PASESession.cpp:324: CHIP Error 0x00000032: Timeout @@ -112,19 +116,21 @@ tests: ECM" PICS: CADMIN.C.C00.Tx verification: | - On your second controller open commissioning widow using ECM. + On DUT_CR1 send the below command - Below is the example while using chip tool as controller, + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing open-commissioning-window 2 1 300 1000 3840 --commissioner-name beta - [1635871058.908790][4273:4278] CHIP:SC: Success status report received. Session was established - [1635871058.908827][4273:4278] CHIP:IN: New secure session created for device 0x0000000000000001, key 47!! - [1635871058.908924][4273:4278] CHIP:CTL: OpenCommissioningWindow for device ID 1 - [1635871058.916166][4273:4278] CHIP:DMG: ICR moving to [AddingComm] - [1635871058.916223][4273:4278] CHIP:DMG: ICR moving to [AddedComma] - [1635871058.916362][4273:4278] CHIP:IN: Prepared encrypted message 0xaaaac41dfd10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 21937i with MessageCounter:0. - [1635871058.916421][4273:4278] CHIP:IN: Sending encrypted msg 0xaaaac41dfd10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 12630575 msec + Verify the Open commisioning window on the TH_CE(all-cluster-app) Log: + + [1660904553.796857][3537:3537] CHIP:DMG: Received command for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0000 + [1660904553.796951][3537:3537] CHIP:ZCL: Received command to open commissioning window + [1660904553.797255][3537:3537] CHIP:IN: SecureSession[0xaaab142ef7f0]: Allocated Type:1 LSID:34523 + + Verify the Manual pairing code on the DUT_CR1(chip-tool) Log: + + 0x0000000000000001 at monotonic time: 12630575 msec [1635871058.916549][4273:4278] CHIP:DMG: ICR moving to [CommandSen] [1635871058.916607][4273:4278] CHIP:CTL: Manual pairing code: [36366524220] [1635871058.916679][4273:4278] CHIP:CTL: SetupQRCode: [MT:00000CQM0088GL3XV00] @@ -134,55 +140,43 @@ tests: - label: "DUT_CR1 sends command to TH_CE to revoke the commissioning window" PICS: CADMIN.C.C02.Tx verification: | - On First controller send revoke commissioning + On DUT_CR1 send the below command - Below is the example while using chip tool as controller, + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool administratorcommissioning revoke-commissioning 1 0 --timedInteractionTimeoutMs 1000 - CHIP:DMG: InvokeResponseMessage = - [1650278416.248379][11064:11069] CHIP:DMG: { - [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, - [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = - [1650278416.248570][11064:11069] CHIP:DMG: [ - [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = - [1650278416.248718][11064:11069] CHIP:DMG: { - [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = - [1650278416.248860][11064:11069] CHIP:DMG: { - [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = - [1650278416.249011][11064:11069] CHIP:DMG: { - [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, - [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, - [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, + Verify success response On DUT_CR1(CHIP-TOOL) Log + + [1650278416.249347][11064:11069] CHIP:DMG: }, [1650278416.249430][11064:11069] CHIP:DMG: [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = [1650278416.249581][11064:11069] CHIP:DMG: { [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), [1650278416.249738][11064:11069] CHIP:DMG: }, - [1650278416.249823][11064:11069] CHIP:DMG: - [1650278416.249889][11064:11069] CHIP:DMG: }, - [1650278416.249969][11064:11069] CHIP:DMG: - [1650278416.250035][11064:11069] CHIP:DMG: }, - [1650278416.250113][11064:11069] CHIP:DMG: - [1650278416.250169][11064:11069] CHIP:DMG: ], - [1650278416.250241][11064:11069] CHIP:DMG: - [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 - [1650278416.250355][11064:11069] CHIP:DMG: }, - [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 + [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] + + Verify the Commissioning window is closed in TH_CE(all-clusters-app) Log + + [1660901039.590962][3045:3045] CHIP:DMG: Received command for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0002 + [1660901039.591036][3045:3045] CHIP:ZCL: Received command to close commissioning window + [1660901039.591094][3045:3045] CHIP:SVR: Closing pairing window + [1660901039.591169][3045:3045] CHIP:IN: SecureSession[0xaaaab010d400]: Released - Type:1 LSID:14411 disabled: true - label: "TH_CR2 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - On the 2nd controller using chip-tool , connect using manual code generated by DUT Controller + On TH_CR2 send the below command + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - Below is the example when using chip tool as controller (considering 34921141778 as the manual code generated by DUT controller) + (considering 34921141778 as the manual code generated by DUT controller) ./chip-tool pairing code 2 34921141778 --commissioner-name beta - verify you got the following message in the TH log + verify you got the following message in the TH_CR2(chip-tool) log CHIP:SC: PASESession timed out while waiting for a response from the peer. Expected message type was 33 CHIP:TOO: Secure Pairing Failed CHIP:TOO: Pairing Failure: ../../third_party/connectedhomeip/src/protocols/secure_channel/PASESession.cpp:324: CHIP Error 0x00000032: Timeout @@ -191,26 +185,22 @@ tests: - label: "DUT_CR1 sends command to TH_CE to revoke the commissioning window" PICS: CADMIN.C.C02.Tx verification: | - On your first controller revoke commissioning - - Below is the example while using chip tool as controller, - - /chip-tool administratorcommissioning revoke-commissioning 1 0 --timedInteractionTimeoutMs 1000 - - CHIP:DMG: InvokeResponseMessage = - [1650524034.111241][15422:15427] CHIP:DMG: { - [1650524034.111316][15422:15427] CHIP:DMG: suppressResponse = false, - [1650524034.111383][15422:15427] CHIP:DMG: InvokeResponseIBs = - [1650524034.111464][15422:15427] CHIP:DMG: [ - [1650524034.111531][15422:15427] CHIP:DMG: InvokeResponseIB = - [1650524034.111643][15422:15427] CHIP:DMG: { - [1650524034.111714][15422:15427] CHIP:DMG: CommandStatusIB = - [1650524034.111803][15422:15427] CHIP:DMG: { - [1650524034.111886][15422:15427] CHIP:DMG: CommandPathIB = - [1650524034.111979][15422:15427] CHIP:DMG: { - [1650524034.112072][15422:15427] CHIP:DMG: EndpointId = 0x0, - [1650524034.112167][15422:15427] CHIP:DMG: ClusterId = 0x3c, - [1650524034.112257][15422:15427] CHIP:DMG: CommandId = 0x2, + On DUT_CR1 send the below command + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + ./chip-tool administratorcommissioning revoke-commissioning 1 0 --timedInteractionTimeoutMs 1000 + + Verify the Commissioning window is closed in TH_CE(all-clusters-app) Log + + [1660901039.590962][3045:3045] CHIP:DMG: Received command for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0002 + [1660901039.591036][3045:3045] CHIP:ZCL: Received command to close commissioning window + [1660901039.591094][3045:3045] CHIP:SVR: Closing pairing window + [1660901039.591169][3045:3045] CHIP:IN: SecureSession[0xaaaab010d400]: Released - Type:1 LSID:14411 + + Verify cluster-status code 3 On DUT_CR1(chip-tool) Log + + [1650524034.112345][15422:15427] CHIP:DMG: }, [1650524034.112456][15422:15427] CHIP:DMG: [1650524034.112543][15422:15427] CHIP:DMG: StatusIB = @@ -219,16 +209,6 @@ tests: [1650524034.112825][15422:15427] CHIP:DMG: cluster-status = 0x3, [1650524034.112914][15422:15427] CHIP:DMG: }, [1650524034.113005][15422:15427] CHIP:DMG: - [1650524034.113084][15422:15427] CHIP:DMG: }, - [1650524034.113176][15422:15427] CHIP:DMG: - [1650524034.113245][15422:15427] CHIP:DMG: }, - [1650524034.113328][15422:15427] CHIP:DMG: - [1650524034.113392][15422:15427] CHIP:DMG: ], - [1650524034.113477][15422:15427] CHIP:DMG: - [1650524034.113545][15422:15427] CHIP:DMG: InteractionModelRevision = 1 - [1650524034.113610][15422:15427] CHIP:DMG: }, - [1650524034.113780][15422:15427] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0002 Status=0x1 - [1650524034.113892][15422:15427] CHIP:TOO: Error: IM Error 0x00000603: Cluster-specific error: 0x03 disabled: true - label: @@ -236,43 +216,52 @@ tests: Information Clusters NodeLabel mandatory attribute" PICS: BINFO.C.A0005 verification: | - Using your DUT controller, write attribute and read attribute to and from TH_CE - - Below is the example while using chip tool on second controller, - ./chip-tool basic write node-label te5new 1 0 - - CHIP:DMG: WriteResponseMessage = - [1649245940.788522][10110:10115] CHIP:DMG: { - [1649245940.788577][10110:10115] CHIP:DMG: AttributeStatusIBs = - [1649245940.788653][10110:10115] CHIP:DMG: [ - [1649245940.788713][10110:10115] CHIP:DMG: AttributeStatusIB = - [1649245940.788787][10110:10115] CHIP:DMG: { - [1649245940.788852][10110:10115] CHIP:DMG: AttributePathIB = - [1649245940.788931][10110:10115] CHIP:DMG: { - [1649245940.789009][10110:10115] CHIP:DMG: Endpoint = 0x0, - [1649245940.789143][10110:10115] CHIP:DMG: Cluster = 0x28, - [1649245940.789228][10110:10115] CHIP:DMG: Attribute = 0x0000_0005, - [1649245940.789313][10110:10115] CHIP:DMG: } - [1649245940.789388][10110:10115] CHIP:DMG: - [1649245940.789454][10110:10115] CHIP:DMG: StatusIB = - [1649245940.789519][10110:10115] CHIP:DMG: { - [1649245940.789588][10110:10115] CHIP:DMG: status = 0x00 (SUCCESS), - [1649245940.789654][10110:10115] CHIP:DMG: }, - [1649245940.789719][10110:10115] CHIP:DMG: - [1649245940.789778][10110:10115] CHIP:DMG: }, - [1649245940.789841][10110:10115] CHIP:DMG: - [1649245940.789885][10110:10115] CHIP:DMG: ], - [1649245940.789941][10110:10115] CHIP:DMG: - [1649245940.789984][10110:10115] CHIP:DMG: InteractionModelRevision = 1 - [1649245940.790033][10110:10115] CHIP:DMG: } - [1649245940.790167][10110:10115] CHIP:DMG: WriteClient moving to [AwaitingDe] - - - Verify read attribute returns the updated value written - ./chip-tool basic read node-label 2 0 - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0005 DataVersion: 3061847068 - [1649245950.006849][10116:10121] CHIP:TOO: NodeLabel: te5new - [1649245950.007024][10116:10121] CHIP:EM: Sending Standalone Ack for MessageCounter:12495101 on exchange 24816i + On DUT_CR1 send the below command + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + ./chip-tool basic write node-label te5new 2 0 --commissioner-name beta + + Verify Write request on TH_CE(all-clusters-app) Log + + [1660894021.901330][2871:2871] CHIP:EM: Handling via exchange: 9616r, Delegate: 0xaaaada21ffc0 + [1660894021.901426][2871:2871] CHIP:IM: Received Write request + [1660894021.901484][2871:2871] CHIP:DMG: IM WH moving to [Initialized] + [1660894021.901613][2871:2871] CHIP:DMG: WriteRequestMessage = + [1660894021.901676][2871:2871] CHIP:DMG: { + [1660894021.901735][2871:2871] CHIP:DMG: suppressResponse = false, + [1660894021.901802][2871:2871] CHIP:DMG: timedRequest = false, + [1660894021.901864][2871:2871] CHIP:DMG: AttributeDataIBs = + [1660894021.901940][2871:2871] CHIP:DMG: [ + [1660894021.902001][2871:2871] CHIP:DMG: AttributeDataIB = + [1660894021.902071][2871:2871] CHIP:DMG: { + [1660894021.902136][2871:2871] CHIP:DMG: AttributePathIB = + [1660894021.902219][2871:2871] CHIP:DMG: { + [1660894021.902302][2871:2871] CHIP:DMG: Endpoint = 0x0, + [1660894021.902394][2871:2871] CHIP:DMG: Cluster = 0x28, + [1660894021.902488][2871:2871] CHIP:DMG: Attribute = 0x0000_0005, + [1660894021.902574][2871:2871] CHIP:DMG: } + [1660894021.902827][2871:2871] CHIP:DMG: + [1660894021.902912][2871:2871] CHIP:DMG: Data = "te5new" (6 chars), + [1660894021.902985][2871:2871] CHIP:DMG: }, + + ./chip-tool basic read node-label 2 0 --commissioner-name beta + + Verify read request on TH_CE(all-clusters-app) Log + + + [1660894142.828718][2871:2871] CHIP:EM: Handling via exchange: 62454r, Delegate: 0xaaaada21ffc0 + [1660894142.828834][2871:2871] CHIP:IM: Received Read request + [1660894142.829023][2871:2871] CHIP:DMG: ReadRequestMessage = + [1660894142.829097][2871:2871] CHIP:DMG: { + [1660894142.829153][2871:2871] CHIP:DMG: AttributePathIBs = + [1660894142.829235][2871:2871] CHIP:DMG: [ + [1660894142.829306][2871:2871] CHIP:DMG: AttributePathIB = + [1660894142.829376][2871:2871] CHIP:DMG: { + [1660894142.829449][2871:2871] CHIP:DMG: Endpoint = 0x0, + [1660894142.829532][2871:2871] CHIP:DMG: Cluster = 0x28, + [1660894142.829627][2871:2871] CHIP:DMG: Attribute = 0x0000_0005, + [1660894142.829703][2871:2871] CHIP:DMG: } + [1660894142.829777][2871:2871] CHIP:DMG: disabled: true - label: @@ -280,19 +269,21 @@ tests: commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" PICS: CADMIN.C.C00.Tx verification: | - On your first controller open commissioning widow using ECM. + On DUT_CR1 send the below command - Below is the example while using chip tool as controller, + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 - [1635871373.773447][4322:4328] CHIP:SC: Success status report received. Session was established - [1635871373.773517][4322:4328] CHIP:IN: New secure session created for device 0x0000000000000001, key 54!! - [1635871373.773611][4322:4328] CHIP:CTL: OpenCommissioningWindow for device ID 1 - [1635871373.780891][4322:4328] CHIP:DMG: ICR moving to [AddingComm] - [1635871373.780942][4322:4328] CHIP:DMG: ICR moving to [AddedComma] - [1635871373.781067][4322:4328] CHIP:IN: Prepared encrypted message 0xaaaae2653d10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 62089i with MessageCounter:0. - [1635871373.781124][4322:4328] CHIP:IN: Sending encrypted msg 0xaaaae2653d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 12945439 msec + Verify the Commissioning window is opened in TH_CE(all-clusters-app) Log + + [1660901022.112296][3045:3045] CHIP:DIS: mDNS service published: _matterc._udp + [1660901022.112389][3045:3045] CHIP:ZCL: Commissioning window is now open + [1660901022.112474][3045:3045] CHIP:DMG: Command handler moving to [ Preparing] + + Verify Manual pairing code on DUT_CR1(chip-tool) Log + + [1635871373.781269][4322:4328] CHIP:DMG: ICR moving to [CommandSen] [1635871373.781329][4322:4328] CHIP:CTL: Manual pairing code: [35256543344] [1635871373.781482][4322:4328] CHIP:CTL: SetupQRCode: [MT:00000CQM00CIWV01J10] @@ -302,26 +293,29 @@ tests: - label: "TH_CR2 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - On the 2nd controller using chip-tool , connect using manual code generated by DUT Controller + On TH_CR2 send the below command + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - Below is the example when using chip tool as controller (considering 35256543344 as the manual code generated by DUT controller) + (considering 35256543344 as the manual code generated by DUT controller) ./chip-tool pairing code 2 35256543344 --commissioner-name beta - Verify you got below message + Verify whether you got below message in the log of TH_CR2(CHIP-TOOL) Device commissioning completed with success disabled: true - label: "TH_CR3 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - On the 3rd controller using chip-tool , connect using manual code generated by DUT Controller + On TH_CR3 send the below command + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command with their all-cluster-app and for the second and third commissioners. - Below is the example when using chip tool as controller (considering 35256543344 as the manual code generated by DUT controller) + (considering 35256543344 as the manual code generated by DUT controller) ./chip-tool pairing code 3 35256543344 --commissioner-name gamma - verify you got the following message in the TH log + verify you got the following message in the TH_CR3(chip-tool) log + CHIP:SC: PASESession timed out while waiting for a response from the peer. Expected message type was 33 CHIP:TOO: Secure Pairing Failed CHIP:TOO: Pairing Failure: ../../third_party/connectedhomeip/src/protocols/secure_channel/PASESession.cpp:324: CHIP Error 0x00000032: Timeout diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_8.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_8.yaml index eea76fb7b1cb0f..b5bec5f1454f45 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_8.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_8.yaml @@ -40,7 +40,7 @@ tests: - label: "DUT_CR1 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - 1. Provision the device using DUT_CR1 controller on the raspi. + "1. Provision the TH_CE (all-cluster-app) device using DUT_CR1 (chip-tool ) on the raspi" " disabled: true - label: @@ -48,43 +48,28 @@ tests: commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" PICS: CADMIN.C.C01.Tx verification: | - On your 1st controller open commissioning widow using BCM. + On DUT_CR1 send the below command - Below is the example while using chip tool as controller, + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 - CHIP:DMG: InvokeResponseMessage = - [1650278416.248379][11064:11069] CHIP:DMG: { - [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, - [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = - [1650278416.248570][11064:11069] CHIP:DMG: [ - [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = - [1650278416.248718][11064:11069] CHIP:DMG: { - [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = - [1650278416.248860][11064:11069] CHIP:DMG: { - [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = - [1650278416.249011][11064:11069] CHIP:DMG: { - [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, - [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, - [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, - [1650278416.249347][11064:11069] CHIP:DMG: }, + + Verify the Open commisioning window on the TH_CE(all-cluster-app) Log: + + [1660904553.796857][3537:3537] CHIP:DMG: Received command for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0000 + [1660904553.796951][3537:3537] CHIP:ZCL: Received command to open commissioning window + [1660904553.797255][3537:3537] CHIP:IN: SecureSession[0xaaab142ef7f0]: Allocated Type:1 LSID:34523 + + Verify success response On DUT_CR1(chip-tool) Log + + [1650278416.249430][11064:11069] CHIP:DMG: [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = [1650278416.249581][11064:11069] CHIP:DMG: { [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), [1650278416.249738][11064:11069] CHIP:DMG: }, [1650278416.249823][11064:11069] CHIP:DMG: - [1650278416.249889][11064:11069] CHIP:DMG: }, - [1650278416.249969][11064:11069] CHIP:DMG: - [1650278416.250035][11064:11069] CHIP:DMG: }, - [1650278416.250113][11064:11069] CHIP:DMG: - [1650278416.250169][11064:11069] CHIP:DMG: ], - [1650278416.250241][11064:11069] CHIP:DMG: - [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 - [1650278416.250355][11064:11069] CHIP:DMG: }, - [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 - [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] disabled: true - label: @@ -114,11 +99,14 @@ tests: PIXIT.CADMIN.CwDuration (that was given in step 2) + 10 seconds" PICS: CADMIN.C verification: | - On the 2nd controller using chip-tool , connect to the accessory + On TH_CR2 send the below command + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing onnetwork 2 20202021 --commissioner-name beta - verify you got the following message in the TH log + Verify the below message in the TH_CR2(chip-tool) Log: + CHIP:SC: PASESession timed out while waiting for a response from the peer. Expected message type was 33 CHIP:TOO: Secure Pairing Failed CHIP:TOO: Pairing Failure: ../../third_party/connectedhomeip/src/protocols/secure_channel/PASESession.cpp:324: CHIP Error 0x00000032: Timeout @@ -130,27 +118,20 @@ tests: BCM" PICS: CADMIN.C.C01.Tx verification: | - On your first controller open commissioning widow using BCM. + On DUT_CR1 send the below command - Below is the example while using chip tool as controller, + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool administratorcommissioning open-basic-commissioning-window 500 1 0 --timedInteractionTimeoutMs 1000 + Verify the Open commisioning window on the TH_CE(all-cluster-app) Log: + + [1660904553.796857][3537:3537] CHIP:DMG: Received command for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0000 + [1660904553.796951][3537:3537] CHIP:ZCL: Received command to open commissioning window + [1660904553.797255][3537:3537] CHIP:IN: SecureSession[0xaaab142ef7f0]: Allocated Type:1 LSID:34523 + + Verify success response On TH1(all-clusters-app) Log - CHIP:DMG: InvokeResponseMessage = - [1650278416.248379][11064:11069] CHIP:DMG: { - [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, - [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = - [1650278416.248570][11064:11069] CHIP:DMG: [ - [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = - [1650278416.248718][11064:11069] CHIP:DMG: { - [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = - [1650278416.248860][11064:11069] CHIP:DMG: { - [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = - [1650278416.249011][11064:11069] CHIP:DMG: { - [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, - [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, - [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, [1650278416.249347][11064:11069] CHIP:DMG: }, [1650278416.249430][11064:11069] CHIP:DMG: [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = @@ -158,67 +139,45 @@ tests: [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), [1650278416.249738][11064:11069] CHIP:DMG: }, [1650278416.249823][11064:11069] CHIP:DMG: - [1650278416.249889][11064:11069] CHIP:DMG: }, - [1650278416.249969][11064:11069] CHIP:DMG: - [1650278416.250035][11064:11069] CHIP:DMG: }, - [1650278416.250113][11064:11069] CHIP:DMG: - [1650278416.250169][11064:11069] CHIP:DMG: ], - [1650278416.250241][11064:11069] CHIP:DMG: - [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 - [1650278416.250355][11064:11069] CHIP:DMG: }, - [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 - [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] disabled: true - label: "DUT_CR1 sends command to TH_CE to revoke the commissioning window" PICS: CADMIN.C.C02.Tx verification: | - On your DUT controller revoke commissioning + On DUT_CR1 send the below command + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - Below is the example while using chip tool as controller, /chip-tool administratorcommissioning revoke-commissioning 1 0 --timedInteractionTimeoutMs 1000 - CHIP:DMG: InvokeResponseMessage = - [1650278416.248379][11064:11069] CHIP:DMG: { - [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, - [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = - [1650278416.248570][11064:11069] CHIP:DMG: [ - [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = - [1650278416.248718][11064:11069] CHIP:DMG: { - [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = - [1650278416.248860][11064:11069] CHIP:DMG: { - [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = - [1650278416.249011][11064:11069] CHIP:DMG: { - [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, - [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, - [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, + Verify success response On DUT_CR1(CHIP-TOOL) Log + [1650278416.249347][11064:11069] CHIP:DMG: }, [1650278416.249430][11064:11069] CHIP:DMG: [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = [1650278416.249581][11064:11069] CHIP:DMG: { [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), [1650278416.249738][11064:11069] CHIP:DMG: }, - [1650278416.249823][11064:11069] CHIP:DMG: - [1650278416.249889][11064:11069] CHIP:DMG: }, - [1650278416.249969][11064:11069] CHIP:DMG: - [1650278416.250035][11064:11069] CHIP:DMG: }, - [1650278416.250113][11064:11069] CHIP:DMG: - [1650278416.250169][11064:11069] CHIP:DMG: ], - [1650278416.250241][11064:11069] CHIP:DMG: - [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 - [1650278416.250355][11064:11069] CHIP:DMG: }, - [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 - [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] + + Verify the Commissioning window is closed in TH_CE(all-clusters-app) Log + + [1660901039.590962][3045:3045] CHIP:DMG: Received command for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0002 + [1660901039.591036][3045:3045] CHIP:ZCL: Received command to close commissioning window + [1660901039.591094][3045:3045] CHIP:SVR: Closing pairing window + [1660901039.591169][3045:3045] CHIP:IN: SecureSession[0xaaaab010d400]: Released - Type:1 LSID:14411 disabled: true - label: "TH_CR2 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - On the 2nd controller using chip-tool , connect to the accessory + On TH_CR2 send the below command + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing onnetwork 2 20202021 --commissioner-name beta - verify you got the following message in the TH log + verify you got the following message in the TH_CR2(CHIP-TOOL) log + CHIP:SC: PASESession timed out while waiting for a response from the peer. Expected message type was 33 CHIP:TOO: Secure Pairing Failed CHIP:TOO: Pairing Failure: ../../third_party/connectedhomeip/src/protocols/secure_channel/PASESession.cpp:324: CHIP Error 0x00000032: Timeout @@ -227,26 +186,25 @@ tests: - label: "DUT_CR1 sends command to TH_CE to revoke the commissioning window" PICS: CADMIN.C.C02.Tx verification: | - On your 1st controller revoke commissioning + On DUT_CR1 send the below command - Below is the example while using chip tool as controller, + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers /chip-tool administratorcommissioning revoke-commissioning 1 0 --timedInteractionTimeoutMs 1000 - CHIP:DMG: InvokeResponseMessage = - [1650524034.111241][15422:15427] CHIP:DMG: { - [1650524034.111316][15422:15427] CHIP:DMG: suppressResponse = false, - [1650524034.111383][15422:15427] CHIP:DMG: InvokeResponseIBs = - [1650524034.111464][15422:15427] CHIP:DMG: [ - [1650524034.111531][15422:15427] CHIP:DMG: InvokeResponseIB = - [1650524034.111643][15422:15427] CHIP:DMG: { - [1650524034.111714][15422:15427] CHIP:DMG: CommandStatusIB = - [1650524034.111803][15422:15427] CHIP:DMG: { - [1650524034.111886][15422:15427] CHIP:DMG: CommandPathIB = - [1650524034.111979][15422:15427] CHIP:DMG: { - [1650524034.112072][15422:15427] CHIP:DMG: EndpointId = 0x0, - [1650524034.112167][15422:15427] CHIP:DMG: ClusterId = 0x3c, - [1650524034.112257][15422:15427] CHIP:DMG: CommandId = 0x2, + Verify success response On TH1(all-clusters-app) Log + + + Verify the Commissioning window is closed in TH_CE(all-clusters-app) Log + + [1660901039.590962][3045:3045] CHIP:DMG: Received command for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0002 + [1660901039.591036][3045:3045] CHIP:ZCL: Received command to close commissioning window + [1660901039.591094][3045:3045] CHIP:SVR: Closing pairing window + [1660901039.591169][3045:3045] CHIP:IN: SecureSession[0xaaaab010d400]: Released - Type:1 LSID:14411 + + Verify cluster-status code 3 On DUT_CR1(CHIP-TOOL) Log + + [1650524034.112345][15422:15427] CHIP:DMG: }, [1650524034.112456][15422:15427] CHIP:DMG: [1650524034.112543][15422:15427] CHIP:DMG: StatusIB = @@ -255,16 +213,6 @@ tests: [1650524034.112825][15422:15427] CHIP:DMG: cluster-status = 0x3, [1650524034.112914][15422:15427] CHIP:DMG: }, [1650524034.113005][15422:15427] CHIP:DMG: - [1650524034.113084][15422:15427] CHIP:DMG: }, - [1650524034.113176][15422:15427] CHIP:DMG: - [1650524034.113245][15422:15427] CHIP:DMG: }, - [1650524034.113328][15422:15427] CHIP:DMG: - [1650524034.113392][15422:15427] CHIP:DMG: ], - [1650524034.113477][15422:15427] CHIP:DMG: - [1650524034.113545][15422:15427] CHIP:DMG: InteractionModelRevision = 1 - [1650524034.113610][15422:15427] CHIP:DMG: }, - [1650524034.113780][15422:15427] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0002 Status=0x1 - [1650524034.113892][15422:15427] CHIP:TOO: Error: IM Error 0x00000603: Cluster-specific error: 0x03 disabled: true - label: @@ -272,42 +220,53 @@ tests: Information Clusters NodeLabel mandatory attribute" PICS: BINFO.C.A0005 verification: | - Using 1st controller, write attribute and read attribute to and from TH_CE - - Below is the example while using chip tool on second controller, - ./chip-tool basic write node-label te5new 2 0 - - CHIP:DMG: WriteResponseMessage = - [1649245940.788522][10110:10115] CHIP:DMG: { - [1649245940.788577][10110:10115] CHIP:DMG: AttributeStatusIBs = - [1649245940.788653][10110:10115] CHIP:DMG: [ - [1649245940.788713][10110:10115] CHIP:DMG: AttributeStatusIB = - [1649245940.788787][10110:10115] CHIP:DMG: { - [1649245940.788852][10110:10115] CHIP:DMG: AttributePathIB = - [1649245940.788931][10110:10115] CHIP:DMG: { - [1649245940.789009][10110:10115] CHIP:DMG: Endpoint = 0x0, - [1649245940.789143][10110:10115] CHIP:DMG: Cluster = 0x28, - [1649245940.789228][10110:10115] CHIP:DMG: Attribute = 0x0000_0005, - [1649245940.789313][10110:10115] CHIP:DMG: } - [1649245940.789388][10110:10115] CHIP:DMG: - [1649245940.789454][10110:10115] CHIP:DMG: StatusIB = - [1649245940.789519][10110:10115] CHIP:DMG: { - [1649245940.789588][10110:10115] CHIP:DMG: status = 0x00 (SUCCESS), - [1649245940.789654][10110:10115] CHIP:DMG: }, - [1649245940.789719][10110:10115] CHIP:DMG: - [1649245940.789778][10110:10115] CHIP:DMG: }, - [1649245940.789841][10110:10115] CHIP:DMG: - [1649245940.789885][10110:10115] CHIP:DMG: ], - [1649245940.789941][10110:10115] CHIP:DMG: - [1649245940.789984][10110:10115] CHIP:DMG: InteractionModelRevision = 1 - [1649245940.790033][10110:10115] CHIP:DMG: } - [1649245940.790167][10110:10115] CHIP:DMG: WriteClient moving to [AwaitingDe] - - Verify read attribute returns the updated value written - ./chip-tool basic read node-label 2 0 - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0005 DataVersion: 3061847068 - [1649245950.006849][10116:10121] CHIP:TOO: NodeLabel: te5new - [1649245950.007024][10116:10121] CHIP:EM: Sending Standalone Ack for MessageCounter:12495101 on exchange 24816i + On DUT_CR1 send the below command + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + ./chip-tool basic write node-label te5new 2 0 --commissioner-name beta + + Verify Write request on TH_CE(all-clusters-app) Log + + [1660894021.901330][2871:2871] CHIP:EM: Handling via exchange: 9616r, Delegate: 0xaaaada21ffc0 + [1660894021.901426][2871:2871] CHIP:IM: Received Write request + [1660894021.901484][2871:2871] CHIP:DMG: IM WH moving to [Initialized] + [1660894021.901613][2871:2871] CHIP:DMG: WriteRequestMessage = + [1660894021.901676][2871:2871] CHIP:DMG: { + [1660894021.901735][2871:2871] CHIP:DMG: suppressResponse = false, + [1660894021.901802][2871:2871] CHIP:DMG: timedRequest = false, + [1660894021.901864][2871:2871] CHIP:DMG: AttributeDataIBs = + [1660894021.901940][2871:2871] CHIP:DMG: [ + [1660894021.902001][2871:2871] CHIP:DMG: AttributeDataIB = + [1660894021.902071][2871:2871] CHIP:DMG: { + [1660894021.902136][2871:2871] CHIP:DMG: AttributePathIB = + [1660894021.902219][2871:2871] CHIP:DMG: { + [1660894021.902302][2871:2871] CHIP:DMG: Endpoint = 0x0, + [1660894021.902394][2871:2871] CHIP:DMG: Cluster = 0x28, + [1660894021.902488][2871:2871] CHIP:DMG: Attribute = 0x0000_0005, + [1660894021.902574][2871:2871] CHIP:DMG: } + [1660894021.902827][2871:2871] CHIP:DMG: + [1660894021.902912][2871:2871] CHIP:DMG: Data = "te5new" (6 chars), + [1660894021.902985][2871:2871] CHIP:DMG: }, + + ./chip-tool basic read node-label 2 0 --commissioner-name beta + + Verify read request on TH_CE(all-clusters-app) Log + + + [1660894142.828718][2871:2871] CHIP:EM: Handling via exchange: 62454r, Delegate: 0xaaaada21ffc0 + [1660894142.828834][2871:2871] CHIP:IM: Received Read request + [1660894142.829023][2871:2871] CHIP:DMG: ReadRequestMessage = + [1660894142.829097][2871:2871] CHIP:DMG: { + [1660894142.829153][2871:2871] CHIP:DMG: AttributePathIBs = + [1660894142.829235][2871:2871] CHIP:DMG: [ + [1660894142.829306][2871:2871] CHIP:DMG: AttributePathIB = + [1660894142.829376][2871:2871] CHIP:DMG: { + [1660894142.829449][2871:2871] CHIP:DMG: Endpoint = 0x0, + [1660894142.829532][2871:2871] CHIP:DMG: Cluster = 0x28, + [1660894142.829627][2871:2871] CHIP:DMG: Attribute = 0x0000_0005, + [1660894142.829703][2871:2871] CHIP:DMG: } + [1660894142.829777][2871:2871] CHIP:DMG: disabled: true - label: @@ -316,28 +275,21 @@ tests: BCM" PICS: CADMIN.C.C01.Tx verification: | - On 1st controller open commissioning widow using BCM. + On DUT_CR1 send the below command - Below is the example while using chip tool as controller, + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 + Verify the Commissioning window is opened in TH_CE(all-clusters-app) Log + + [1660901022.112296][3045:3045] CHIP:DIS: mDNS service published: _matterc._udp + [1660901022.112389][3045:3045] CHIP:ZCL: Commissioning window is now open + [1660901022.112474][3045:3045] CHIP:DMG: Command handler moving to [ Preparing] + + Verify Manual pairing code on DUT_CR1(chip-tool) Log - CHIP:DMG: InvokeResponseMessage = - [1650278416.248379][11064:11069] CHIP:DMG: { - [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, - [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = - [1650278416.248570][11064:11069] CHIP:DMG: [ - [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = - [1650278416.248718][11064:11069] CHIP:DMG: { - [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = - [1650278416.248860][11064:11069] CHIP:DMG: { - [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = - [1650278416.249011][11064:11069] CHIP:DMG: { - [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, - [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, - [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, [1650278416.249347][11064:11069] CHIP:DMG: }, [1650278416.249430][11064:11069] CHIP:DMG: [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = @@ -345,37 +297,32 @@ tests: [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), [1650278416.249738][11064:11069] CHIP:DMG: }, [1650278416.249823][11064:11069] CHIP:DMG: - [1650278416.249889][11064:11069] CHIP:DMG: }, - [1650278416.249969][11064:11069] CHIP:DMG: - [1650278416.250035][11064:11069] CHIP:DMG: }, - [1650278416.250113][11064:11069] CHIP:DMG: - [1650278416.250169][11064:11069] CHIP:DMG: ], - [1650278416.250241][11064:11069] CHIP:DMG: - [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 - [1650278416.250355][11064:11069] CHIP:DMG: }, - [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 - [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] disabled: true - label: "TH_CR2 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - On the 2nd controller using chip-tool , connect to the accessory + On TH_CR2 send the below command + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing onnetwork 2 20202021 --commissioner-name beta - Verify you got below message + Verify whether you got below message in the log of TH_CR2(CHIP-TOOL) Device commissioning completed with success disabled: true - label: "TH_CR3 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - On the 3rd controller using chip-tool , connect to the accessory + On TH_CR3 send the below command + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing onnetwork 3 20202021 --commissioner-name gamma - verify you got the following message in the TH log + verify you got the following message in the TH_CR3(all-clusters-app) log + CHIP:SC: PASESession timed out while waiting for a response from the peer. Expected message type was 33 CHIP:TOO: Secure Pairing Failed CHIP:TOO: Pairing Failure: ../../third_party/connectedhomeip/src/protocols/secure_channel/PASESession.cpp:324: CHIP Error 0x00000032: Timeout diff --git a/src/app/tests/suites/certification/Test_TC_CC_1_1.yaml b/src/app/tests/suites/certification/Test_TC_CC_1_1.yaml index 5477760c2ef1bf..1cc684a78110d2 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_1_1.yaml @@ -14,6 +14,9 @@ name: 25.1.1. [TC-CC-1.1] Global attributes with server as DUT +PICS: + - CC.S + config: nodeId: 0x12344321 cluster: "Color Control" @@ -36,6 +39,15 @@ tests: constraints: type: int16u + - label: "Read the global attribute: FeatureMap" + PICS: ( !CC.S.F00 && !CC.S.F01 && !CC.S.F02 && !CC.S.F03 ) + command: "readAttribute" + attribute: "FeatureMap" + response: + value: 0 + constraints: + type: bitmap32 + - label: "Read the global attribute: FeatureMap" PICS: ( CC.S.F00 || CC.S.F01 || CC.S.F02 || CC.S.F03 ) command: "readAttribute" @@ -43,7 +55,7 @@ tests: response: constraints: type: bitmap32 - minValue: 0 + minValue: 1 maxValue: 31 - label: "Read the global attribute: AttributeList" diff --git a/src/app/tests/suites/certification/Test_TC_CC_3_2.yaml b/src/app/tests/suites/certification/Test_TC_CC_3_2.yaml index 5ec62e14fd1454..a629614f4b3795 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_3_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_3_2.yaml @@ -14,6 +14,9 @@ name: 25.3.2. [TC-CC-3.2] Hue Move functionality with server as DUT +PICS: + - CC.S + config: nodeId: 0x12344321 cluster: "Color Control" diff --git a/src/app/tests/suites/certification/Test_TC_CC_3_3.yaml b/src/app/tests/suites/certification/Test_TC_CC_3_3.yaml index f34c9bf733dc81..c3e2ad14f2714e 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_3_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_3_3.yaml @@ -14,6 +14,9 @@ name: 25.3.3. [TC-CC-3.3] Hue Step functionality with server as DUT +PICS: + - CC.S + config: nodeId: 0x12344321 cluster: "Color Control" diff --git a/src/app/tests/suites/certification/Test_TC_CC_4_1.yaml b/src/app/tests/suites/certification/Test_TC_CC_4_1.yaml index 861d16be0b72aa..2f4fe4a27f5e9b 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_4_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_4_1.yaml @@ -14,6 +14,9 @@ name: 25.3.5. [TC-CC-4.1] Saturation MoveTo functionality with server as DUT +PICS: + - CC.S + config: nodeId: 0x12344321 cluster: "Color Control" diff --git a/src/app/tests/suites/certification/Test_TC_CC_4_2.yaml b/src/app/tests/suites/certification/Test_TC_CC_4_2.yaml index 4f275574c0f43f..f338768af6aa88 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_4_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_4_2.yaml @@ -14,6 +14,9 @@ name: 25.3.6. [TC-CC-4.2] Saturation Move functionality with server as DUT +PICS: + - CC.S + config: nodeId: 0x12344321 cluster: "Color Control" diff --git a/src/app/tests/suites/certification/Test_TC_CC_4_3.yaml b/src/app/tests/suites/certification/Test_TC_CC_4_3.yaml index e7b72f1ef8184b..f66cfa2afa84bc 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_4_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_4_3.yaml @@ -14,6 +14,9 @@ name: 25.3.7. [TC-CC-4.3] Saturation Step functionality with server as DUT +PICS: + - CC.S + config: nodeId: 0x12344321 cluster: "Color Control" diff --git a/src/app/tests/suites/certification/Test_TC_CC_4_4.yaml b/src/app/tests/suites/certification/Test_TC_CC_4_4.yaml index f855351c446655..5de1f4e59a1f19 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_4_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_4_4.yaml @@ -15,6 +15,9 @@ name: 25.3.8. [TC-CC-4.4] MoveToHueAndSaturation functionality with server as DUT +PICS: + - CC.S + config: nodeId: 0x12344321 cluster: "Color Control" diff --git a/src/app/tests/suites/certification/Test_TC_CGEN_2_2.yaml b/src/app/tests/suites/certification/Test_TC_CGEN_2_2.yaml index 2a051a0531c254..1660f93e10be43 100644 --- a/src/app/tests/suites/certification/Test_TC_CGEN_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CGEN_2_2.yaml @@ -30,7 +30,7 @@ tests: numTrustedRootsOriginal" verification: | ./chip-tool operationalcredentials read trusted-root-certificates 1 0 - On TH1 verify that TH reads TrustedRootCertificates entries from DUT + On TH1 verify the TrustedRootCertificates entries from DUT [1658482014.176273][26852:26857] CHIP:DMG: } [1658482014.176359][26852:26857] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0004 DataVersion: 527687668 @@ -45,7 +45,7 @@ tests: PICS: CGEN.S.A0001 verification: | ./chip-tool generalcommissioning read basic-commissioning-info 1 0 - On TH1 verify that TH reads BasicCommissioningInfo attribute from DUT + On TH1 verify the BasicCommissioningInfo attribute from DUT [1658482413.950617][27013:27018] CHIP:DMG: } [1658482413.950753][27013:27018] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Attribute 0x0000_0001 DataVersion: 2195123768 @@ -63,7 +63,7 @@ tests: PICS: CGEN.S.C00.Rsp && CGEN.S.C01.Tx verification: | ./chip-tool generalcommissioning arm-fail-safe 900 1 1 0 - On TH1 verify that TH reads ArmFailSafe command from DUT + On TH1 verify the ArmFailSafe command from DUT [1658482454.092676][27036:27041] CHIP:DMG: }, [1658482454.092739][27036:27041] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0001 @@ -81,7 +81,7 @@ tests: verification: | ./chip-tool generalcommissioning read breadcrumb 1 0 - On TH1 Verify that the breadcrumb attribute value + On TH1 Verify the breadcrumb attribute value [1658482504.991161][27058:27064] CHIP:DMG: } [1658482504.991205][27058:27064] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Attribute 0x0000_0000 DataVersion: 2195123769 [1658482504.991215][27058:27064] CHIP:TOO: Breadcrumb: 1 @@ -100,8 +100,9 @@ tests: Once build completes 3. cd out/debug 4. ./chip-cert gen-cert --type r --subject-chip-id CACACACA00000001 --valid-from "2020-10-15 14:23:43" --lifetime 7305 --out-key Chip-Root-Key.txt --out Chip-Root-Cert.txt --out-format chip-hex - 5. cat Chip-Root-Key.txt + 5. cat Chip-Root-Cert.txt + While adding new add-trusted-root-certificate please use the above generated new root key ./chip-tool operationalcredentials add-trusted-root-certificate hex:1530010828c376ebc17f21512402013703271401000000cacacaca182604ef171b2726056eb5b94c3706271401000000cacacaca182407012408013009410452c19fd9d329a738fd65722a8309fa68bcaa9ffe87d8114b802c922e5066d0b2f0573b89b38bf98fc9c424ab8ffdabcb18d42e623d82a02d0ca0c062ccadb4bc370a350129011824026030041457934de5405e9a40eacb86ee647e583141ae78f430051457934de5405e9a40eacb86ee647e583141ae78f418300b40a0b0d57bddbc7bcf44480a8b7bd0231d54ccacd68d90efb67b7aa3206adbd268725092992a0388c8e934504178613c5b932d422eed7463f38fd82aaa429b574a18 1 0 @@ -120,7 +121,7 @@ tests: Operational Credentials cluster" verification: | ./chip-tool operationalcredentials read trusted-root-certificates 1 0 - On TH1 verify that TrustedRootCertificates entries from DUT + On TH1 verify the TrustedRootCertificates entries from DUT [1658482718.809139][27144:27149] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0004 DataVersion: 527687668 [1658482718.809271][27144:27149] CHIP:TOO: TrustedRootCertificates: 2 entries [1658482718.809327][27144:27149] CHIP:TOO: [1]: 1530010100240201370324140018260480228127260580254D3A370624140018240701240801300941045B7F0549925832A9A1294607ADC4695EA3477D3DC9E584431F53A60FC57629C6A616814389C479D3E059D931600F62CA328087462582A350AD015B32756DDC69370A3501290118240260300414A1BBCB2500D57101023ACB4AFD7EBD4FC0487AF3300514A1BBCB2500D57101023ACB4AFD7EBD4FC0487AF318300B40E878725378AEA74A5F6CB6267CB9F7ACD0DACF26741FB24356379D850DD5F23A746281C845FD76D89E97AB188E9BF8A98047B43E3E868A5A8B8E50BAE62F116F18 @@ -133,7 +134,7 @@ tests: "TH1 waits for PIXIT.CGEN.FailsafeExpiryLengthSeconds to ensure the failsafe timer has expired" verification: | - The expiry length is mentioned in above step as 900 secs so wait till 60secs and proced for next step + The expiry length is mentioned in above step as 900 secs so wait till 900secs and proced for next step disabled: true - label: @@ -141,7 +142,7 @@ tests: Operational Credentials cluster" verification: | ./chip-tool operationalcredentials read trusted-root-certificates 1 0 - On TH1 verify that TrustedRootCertificates entries from DUT + On TH1 verify the TrustedRootCertificates entries from DUT [1658483361.121153][27343:27348] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0004 DataVersion: 527687668 [1658483361.121212][27343:27348] CHIP:TOO: TrustedRootCertificates: 1 entries [1658483361.121257][27343:27348] CHIP:TOO: [1]: 1530010100240201370324140018260480228127260580254D3A370624140018240701240801300941045B7F0549925832A9A1294607ADC4695EA3477D3DC9E584431F53A60FC57629C6A616814389C479D3E059D931600F62CA328087462582A350AD015B32756DDC69370A3501290118240260300414A1BBCB2500D57101023ACB4AFD7EBD4FC0487AF3300514A1BBCB2500D57101023ACB4AFD7EBD4FC0487AF318300B40E878725378AEA74A5F6CB6267CB9F7ACD0DACF26741FB24356379D850DD5F23A746281C845FD76D89E97AB188E9BF8A98047B43E3E868A5A8B8E50BAE62F116F18 @@ -153,7 +154,7 @@ tests: verification: | ./chip-tool generalcommissioning read breadcrumb 1 0 - On TH1 Verify that the breadcrumb attribute value + On TH1 Verify the breadcrumb attribute value [1658483428.627422][27375:27380] CHIP:DMG: } [1658483428.627566][27375:27380] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Attribute 0x0000_0000 DataVersion: 2195123770 [1658483428.627610][27375:27380] CHIP:TOO: Breadcrumb: 0 @@ -163,6 +164,51 @@ tests: - label: "TH1 repeats steps 3 through 5" verification: | TH1 repeats steps 3 through 5 + + To repeat Step 3 please send below mentioned command + ./chip-tool generalcommissioning arm-fail-safe 900 1 1 0 + On TH1 verify that TH reads ArmFailSafe command from DUT + + [1658482454.092676][27036:27041] CHIP:DMG: }, + [1658482454.092739][27036:27041] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0001 + [1658482454.092777][27036:27041] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Command 0x0000_0001 + [1658482454.092821][27036:27041] CHIP:TOO: ArmFailSafeResponse: { + [1658482454.092853][27036:27041] CHIP:TOO: errorCode: 0 + [1658482454.092866][27036:27041] CHIP:TOO: debugText: + [1658482454.092878][27036:27041] CHIP:TOO: } + [1658482454.092910][27036:27041] CHIP:DMG: ICR moving to [AwaitingDe] + [1658482454.092955][27036:27041] CHIP:EM: Sending Standalone Ack for MessageCounter:147679912 on exchange 8754i + + To repeat Step 4 please send below mentioned command + ./chip-tool generalcommissioning read breadcrumb 1 0 + + On TH1 Verify that the breadcrumb attribute value + [1658482504.991161][27058:27064] CHIP:DMG: } + [1658482504.991205][27058:27064] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Attribute 0x0000_0000 DataVersion: 2195123769 + [1658482504.991215][27058:27064] CHIP:TOO: Breadcrumb: 1 + [1658482504.991243][27058:27064] CHIP:EM: Sending Standalone Ack for MessageCounter:52534281 on exchange 8370i + + To repeat Step 5 please send below mentioned command + To generate TrustedRootCertificate, need to buld chip-cert in connectedhomeip by giving below mentioned commands + 1. gn gen --check out/debug + 2. ninja -v -C out/debug chip-cert + Once build completes + 3. cd out/debug + 4. ./chip-cert gen-cert --type r --subject-chip-id CACACACA00000001 --valid-from ""2020-10-15 14:23:43"" --lifetime 7305 --out-key Chip-Root-Key.txt --out Chip-Root-Cert.txt --out-format chip-hex + 5. cat Chip-Root-Cert.txt + + While adding new add-trusted-root-certificate please use the above generated new root key + + ./chip-tool operationalcredentials add-trusted-root-certificate hex:1530010828c376ebc17f21512402013703271401000000cacacaca182604ef171b2726056eb5b94c3706271401000000cacacaca182407012408013009410452c19fd9d329a738fd65722a8309fa68bcaa9ffe87d8114b802c922e5066d0b2f0573b89b38bf98fc9c424ab8ffdabcb18d42e623d82a02d0ca0c062ccadb4bc370a350129011824026030041457934de5405e9a40eacb86ee647e583141ae78f430051457934de5405e9a40eacb86ee647e583141ae78f418300b40a0b0d57bddbc7bcf44480a8b7bd0231d54ccacd68d90efb67b7aa3206adbd268725092992a0388c8e934504178613c5b932d422eed7463f38fd82aaa429b574a18 1 0 + + + on TH1, Verify that the DUT responds with SUCCESS + + + [1658482609.069728][27095:27100] CHIP:DMG: InteractionModelRevision = 1 + [1658482609.069733][27095:27100] CHIP:DMG: }, + [1658482609.069760][27095:27100] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003E Command=0x0000_000B Status=0x0 + [1658482609.069779][27095:27100] CHIP:DMG: ICR moving to [AwaitingDe] disabled: true - label: @@ -171,7 +217,7 @@ tests: PICS: CGEN.S.C00.Rsp && CGEN.S.C01.Tx verification: | ./chip-tool generalcommissioning arm-fail-safe 0 1 1 0 - On TH1 verify that ArmFailSafe command from DUT + On TH1 verify the ArmFailSafeResponse with ErrorCode as "OK"(0) and DebugText argument is of type string with max length 512 or empty from DUT [1658483503.637026][27397:27402] CHIP:DMG: }, [1658483503.637054][27397:27402] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0001 [1658483503.637074][27397:27402] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Command 0x0000_0001 @@ -186,6 +232,21 @@ tests: - label: "Repeat steps 8 through 9" verification: | Repeat steps 8 through 9 + To repeat Step 8 please send below mentioned command + ./chip-tool operationalcredentials read trusted-root-certificates 1 0 + On TH1 verify the TrustedRootCertificates entries from DUT + [1658483361.121153][27343:27348] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0004 DataVersion: 527687668 + [1658483361.121212][27343:27348] CHIP:TOO: TrustedRootCertificates: 1 entries + [1658483361.121257][27343:27348] CHIP:TOO: [1]: 1530010100240201370324140018260480228127260580254D3A370624140018240701240801300941045B7F0549925832A9A1294607ADC4695EA3477D3DC9E584431F53A60FC57629C6A616814389C479D3E059D931600F62CA328087462582A350AD015B32756DDC69370A3501290118240260300414A1BBCB2500D57101023ACB4AFD7EBD4FC0487AF3300514A1BBCB2500D57101023ACB4AFD7EBD4FC0487AF318300B40E878725378AEA74A5F6CB6267CB9F7ACD0DACF26741FB24356379D850DD5F23A746281C845FD76D89E97AB188E9BF8A98047B43E3E868A5A8B8E50BAE62F116F18 + [1658483361.121342][27343:27348] CHIP:EM: Sending Standalone Ack for MessageCounter:8407614 on exchange 22615i + + To repeat Step 9 please send below mentioned command + ./chip-tool generalcommissioning read breadcrumb 1 0 + On TH1 Verify the breadcrumb attribute value + [1658483428.627422][27375:27380] CHIP:DMG: } + [1658483428.627566][27375:27380] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Attribute 0x0000_0000 DataVersion: 2195123770 + [1658483428.627610][27375:27380] CHIP:TOO: Breadcrumb: 0 + [1658483428.627696][27375:27380] CHIP:EM: Sending Standalone Ack for MessageCounter:242324966 on exchange 46358i disabled: true - label: @@ -222,8 +283,8 @@ tests: - label: "TH2 opens a PASE session with the DUT" verification: | - ./chip-tool pairing code 1 36116400648 - On TH2 verify that the PASE established successfully + ./chip-tool pairing code 2 36116400648 --commissioner-name beta + while pairing On TH2 verify that the PASE established successfully [1658483765.114083][8082:8087] CHIP:CTL: Stopping commissioning discovery over DNS-SD [1658483765.114107][8082:8087] CHIP:TOO: Pairing Success [1658483765.114130][8082:8087] CHIP:TOO: PASE establishment successful @@ -262,7 +323,7 @@ tests: as nocs" verification: | ./chip-tool operationalcredentials read nocs 1 0 --fabric-filtered 0 - On TH1 verify that TH reads nocs entries from DUT + On TH1 verify the nocs entries from DUT [1658484050.459056][27576:27582] CHIP:DMG: } [1658484050.459316][27576:27582] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0000 DataVersion: 527687672 [1658484050.459362][27576:27582] CHIP:TOO: NOCs: 2 entries @@ -357,7 +418,7 @@ tests: cluster using a non-fabric-filtered read" verification: | ./chip-tool operationalcredentials read nocs 1 0 - On TH1 verify that TH reads nocs entries from DUT + On TH1 verify the nocs entries from DUT [1658484226.587652][27658:27663] CHIP:DMG: } [1658484226.587884][27658:27663] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0004 DataVersion: 527687672 [1658484226.587936][27658:27663] CHIP:TOO: TrustedRootCertificates: 2 entries @@ -371,7 +432,7 @@ tests: cluster using a non-fabric-filtered read" verification: | ./chip-tool operationalcredentials read fabrics 1 0 --fabric-filtered 0 - On TH1 verify that TH reads fabrics list from DUT + On TH1 verify the fabrics list from DUT [1658484405.562192][27710:27716] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 527687672 [1658484405.562321][27710:27716] CHIP:TOO: Fabrics: 2 entries [1658484405.562395][27710:27716] CHIP:TOO: [1]: { @@ -398,7 +459,7 @@ tests: Operational Credentials cluster" verification: | ./chip-tool operationalcredentials read trusted-root-certificates 1 0 - On TH1 verify that TH reads TrustedRootCertificates entries from DUT + On TH1 verify the TrustedRootCertificates entries from DUT [1658484601.144043][28501:28506] CHIP:DMG: InteractionModelRevision = 1 [1658484601.144050][28501:28506] CHIP:DMG: } [1658484601.144213][28501:28506] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0004 DataVersion: 527687672 @@ -413,7 +474,12 @@ tests: - label: "TH2 fully commissions the DUT" verification: | - verification step to be updated. + While pairing between DUT and TH2, On TH2 verify that commissioning completes successfully + [1660748637.271112][21572:21577] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0005 + [1660748637.271128][21572:21577] CHIP:CTL: Received CommissioningComplete response, errorCode=0 + [1660748637.271139][21572:21577] CHIP:CTL: Successfully finished commissioning step "SendComplete" + [1660748637.271146][21572:21577] CHIP:CTL: Commissioning stage next step: "SendComplete" -> "Cleanup" + [1660748637.271156][21572:21577] CHIP:CTL: Performing next commissioning step "Cleanup" disabled: true - label: @@ -428,10 +494,10 @@ tests: Once build completes 3. cd out/debug 4. ./chip-cert gen-cert --type r --subject-chip-id CACACACA00000001 --valid-from "2020-10-15 14:23:43" --lifetime 7305 --out-key Chip-Root-Key.txt --out Chip-Root-Cert.txt --out-format chip-hex - 5. cat Chip-Root-Key.txt + 5. cat Chip-Root-Cert.txt - ./chip-tool operationalcredentials add-trusted-root-certificate 04614D01D2897082D7F85832CE00AC787A5A221A6F7B19C4202C069E3D70DDC615E5B9436919266360AC847F2FAB3EAEE3902B43812A13D18C061CC5028EADB775583DCB1008E4CEBFF810EEB2BC60FF7A3CF954C57101798443DA39E75F5FFDEA 2 0 + ./chip-tool operationalcredentials add-trusted-root-certificate 04614D01D2897082D7F85832CE00AC787A5A221A6F7B19C4202C069E3D70DDC615E5B9436919266360AC847F2FAB3EAEE3902B43812A13D18C061CC5028EADB775583DCB1008E4CEBFF810EEB2BC60FF7A3CF954C57101798443DA39E75F5FFDEA 2 0 --commissioner-name beta On TH2 verify that DUT responds with FAILSAFE_REQUIRED [1658484766.785916][8132:8137] CHIP:DMG: [1658484766.785961][8132:8137] CHIP:DMG: InteractionModelRevision = 1 @@ -446,7 +512,7 @@ tests: cluster using a non-fabric-filtered read" verification: | ./chip-tool operationalcredentials read fabrics 1 0 --fabric-filtered 0 - On TH1 verify that TH reads fabrics list from DUT + On TH1 verify the fabrics list from DUT [1658484969.071455][28631:28636] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0000 DataVersion: 527687672 [1658484969.071527][28631:28636] CHIP:TOO: NOCs: 2 entries [1658484969.071587][28631:28636] CHIP:TOO: [1]: { @@ -469,7 +535,7 @@ tests: PICS: CGEN.S.C00.Rsp && CGEN.S.C01.Tx verification: | ./chip-tool generalcommissioning arm-fail-safe 60 1 1 0 - On TH1 verify that TH reads ArmFailSafe command from DUT + On TH1 verify the ArmFailSafe command from DUT [1658485224.066397][28732:28737] CHIP:DMG: InteractionModelRevision = 1 [1658485224.066407][28732:28737] CHIP:DMG: }, [1658485224.066441][28732:28737] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0001 @@ -504,7 +570,7 @@ tests: verification: | ./chip-tool operationalcredentials read trusted-root-certificates 1 0 - On TH1 verify that TH reads TrustedRootCertificates entries from DUT + On TH1 verify the TrustedRootCertificates entries from DUT [1658485696.739931][28920:28925] CHIP:DMG: InteractionModelRevision = 1 [1658485696.739936][28920:28925] CHIP:DMG: } [1658485696.740122][28920:28925] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0004 DataVersion: 527687672 @@ -521,7 +587,7 @@ tests: PICS: CGEN.S.C00.Rsp && CGEN.S.C01.Tx verification: | ./chip-tool generalcommissioning arm-fail-safe 900 1 1 0 - On TH1 verify that TH reads ArmFailSafe command from DUT + On TH1 verify the ArmFailSafe command from DUT [1658486181.080260][29218:29223] CHIP:DMG: }, [1658486181.080289][29218:29223] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0001 [1658486181.080319][29218:29223] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Command 0x0000_0001 @@ -557,8 +623,8 @@ tests: value as 1" PICS: CGEN.S.C00.Rsp && CGEN.S.C01.Tx verification: | - ./chip-tool generalcommissioning arm-fail-safe 900 1 2 0 - On TH2 verify that TH reads ArmFailSafe command from DUT + ./chip-tool generalcommissioning arm-fail-safe 900 1 2 0 --commissioner-name beta + On TH2 verify the ArmFailSafe command from DUT [1658486289.473526][8200:8205] CHIP:DMG: InteractionModelRevision = 1 [1658486289.473563][8200:8205] CHIP:DMG: }, [1658486289.473639][8200:8205] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0001 @@ -577,7 +643,7 @@ tests: PICS: CGEN.S.C00.Rsp verification: | ./chip-tool generalcommissioning arm-fail-safe 0 1 1 0 - On TH1 verify that TH reads ArmFailSafe command from DUT + On TH1 verify the ArmFailSafe command from DUT [1658486510.232274][29388:29393] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0001 [1658486510.232302][29388:29393] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Command 0x0000_0001 [1658486510.232334][29388:29393] CHIP:TOO: ArmFailSafeResponse: { @@ -594,7 +660,7 @@ tests: PICS: CGEN.S.C00.Rsp verification: | ./chip-tool generalcommissioning arm-fail-safe 900 1 1 0 - On TH1 verify that TH reads ArmFailSafe command from DUT + On TH1 verify the ArmFailSafe command from DUT [1658486418.024554][29343:29348] CHIP:DMG: InteractionModelRevision = 1 [1658486418.024559][29343:29348] CHIP:DMG: }, [1658486418.024588][29343:29348] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0001 @@ -624,7 +690,7 @@ tests: Once build completes 3. cd out/debug 4. ./chip-cert gen-cert --type r --subject-chip-id CACACACA00000001 --valid-from "2020-10-15 14:23:43" --lifetime 7305 --out-key Chip-Root-Key.txt --out Chip-Root-Cert.txt --out-format chip-hex - 5. cat Chip-Root-Key.txt + 5. cat Chip-Root-Cert.txt @@ -642,7 +708,7 @@ tests: Operational Credentials cluster" verification: | ./chip-tool operationalcredentials read trusted-root-certificates 1 0 - On TH1 verify that TH reads TrustedRootCertificates entries from DUT + On TH1 verify the TrustedRootCertificates entries from DUT [1658487613.357548][30232:30237] CHIP:DMG: } [1658487613.358000][30232:30237] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0004 DataVersion: 527687672 @@ -668,7 +734,7 @@ tests: PICS: CGEN.S.C00.Rsp verification: | ./chip-tool generalcommissioning arm-fail-safe 900 0 1 0 - On TH1 verify that TH reads ArmFailSafe command from DUT + On TH1 verify the ArmFailSafe command from DUT [1658487663.593485][30268:30273] CHIP:DMG: InteractionModelRevision = 1 [1658487663.593506][30268:30273] CHIP:DMG: }, @@ -696,7 +762,7 @@ tests: Operational Credentials cluster" verification: | ./chip-tool operationalcredentials read trusted-root-certificates 1 0 - On TH1 verify that TH reads TrustedRootCertificates entries from DUT + On TH1 verify the TrustedRootCertificates entries from DUT [1658489869.278413][31188:31193] CHIP:DMG: } [1658489869.278997][31188:31193] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0004 DataVersion: 527687672 [1658489869.279090][31188:31193] CHIP:TOO: TrustedRootCertificates: 2 entries diff --git a/src/app/tests/suites/certification/Test_TC_CHANNEL_1_6.yaml b/src/app/tests/suites/certification/Test_TC_CHANNEL_1_6.yaml index fa5005b3600bba..a988c23d18dc14 100644 --- a/src/app/tests/suites/certification/Test_TC_CHANNEL_1_6.yaml +++ b/src/app/tests/suites/certification/Test_TC_CHANNEL_1_6.yaml @@ -40,6 +40,15 @@ tests: constraints: type: int16u + - label: "Read the global attribute: FeatureMap" + PICS: ( !CHANNEL.S.CL && !CHANNEL.S.LI ) + command: "readAttribute" + attribute: "FeatureMap" + response: + value: 0 + constraints: + type: bitmap32 + - label: "Read the global attribute: FeatureMap" PICS: CHANNEL.S.CL || CHANNEL.S.LI command: "readAttribute" @@ -47,7 +56,7 @@ tests: response: constraints: type: bitmap32 - minValue: 0 + minValue: 1 maxValue: 3 - label: "Read the global attribute: AttributeList" diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_12.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_12.yaml index 0d282af563100f..63861455bce4fd 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_12.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_12.yaml @@ -26,6 +26,23 @@ config: endpoint: 0 tests: + - label: "Commission TH and DUT on Thread setup" + verification: | + verification step to be updated. + disabled: true + + - label: + "The cluster Identifier 49 (0x0031) is present in the ServerList + attribute" + verification: | + verification step to be updated. + disabled: true + + - label: "The FeatureMap attribute value is 2" + verification: | + verification step to be updated. + disabled: true + - label: "During the commissioning process, TH and DUT, TH sends ArmFailSafe command to the DUT" diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_13.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_13.yaml index ee7443197417c5..68bbd8f20f9910 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_13.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_13.yaml @@ -26,6 +26,73 @@ config: endpoint: 0 tests: + - label: "Commission TH and DUT over BLE to setup the Wi-Fi" + verification: | + + disabled: true + + - label: + "The cluster Identifier 49 (0x0031) is present in the ServerList + attribute" + verification: | + ./chip-tool descriptor read server-list 1 0 + + Verify the "server-list" on the TH(Chip-tool) log + + [1653474860.462391][29901:29906] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0001 DataVersion: 1237231415 + [1653474860.462487][29901:29906] CHIP:TOO: server list: 25 entries + [1653474860.462524][29901:29906] CHIP:TOO: [1]: 3 + [1653474860.462549][29901:29906] CHIP:TOO: [2]: 4 + [1653474860.462574][29901:29906] CHIP:TOO: [3]: 29 + [1653474860.462598][29901:29906] CHIP:TOO: [4]: 30 + [1653474860.462622][29901:29906] CHIP:TOO: [5]: 31 + [1653474860.462646][29901:29906] CHIP:TOO: [6]: 40 + [1653474860.462670][29901:29906] CHIP:TOO: [7]: 42 + [1653474860.462693][29901:29906] CHIP:TOO: [8]: 43 + [1653474860.462717][29901:29906] CHIP:TOO: [9]: 44 + [1653474860.462741][29901:29906] CHIP:TOO: [10]: 45 + [1653474860.462765][29901:29906] CHIP:TOO: [11]: 46 + [1653474860.462788][29901:29906] CHIP:TOO: [12]: 48 + [1653474860.462812][29901:29906] CHIP:TOO: [13]: 49 + [1653474860.462836][29901:29906] CHIP:TOO: [14]: 50 + [1653474860.462859][29901:29906] CHIP:TOO: [15]: 51 + [1653474860.462883][29901:29906] CHIP:TOO: [16]: 52 + [1653474860.462906][29901:29906] CHIP:TOO: [17]: 53 + [1653474860.462930][29901:29906] CHIP:TOO: [18]: 54 + [1653474860.462954][29901:29906] CHIP:TOO: [19]: 55 + [1653474860.462977][29901:29906] CHIP:TOO: [20]: 60 + [1653474860.463001][29901:29906] CHIP:TOO: [21]: 62 + [1653474860.463024][29901:29906] CHIP:TOO: [22]: 63 + [1653474860.463048][29901:29906] CHIP:TOO: [23]: 64 + [1653474860.463071][29901:29906] CHIP:TOO: [24]: 65 + [1653474860.463095][29901:29906] CHIP:TOO: [25]: 1029 + [1653474860.463296][29901:29906] CHIP:EM: Sending Standalone Ack for MessageCounter:10703464 on exchange 2435i + disabled: true + + - label: "The FeatureMap attribute value is 1" + verification: | + ./chip-tool networkcommissioning read feature-map 1 0 + + Verify the "feature-map" on the TH(Chip-tool) log + + [1653474932.055513][29920:29925] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_FFFC DataVersion: 1600858167 + [1653474932.055578][29920:29925] CHIP:TOO: FeatureMap: 1 + [1653474932.055675][29920:29925] CHIP:EM: Sending Standalone Ack for MessageCounter:1494059 on exchange 5482i + disabled: true + + - label: + "MaxNetworks attribute value is at least 4 which is saved as + MaxNetworksValue for future use" + verification: | + The test case is not verifiable. As MaxNetworks value is 1 but expected is 4 + + ./chip-tool networkcommissioning read max-networks 1 0 + + [1653476960.303444][30164:30169] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_0000 DataVersion: 1600858167 + [1653476960.303531][30164:30169] CHIP:TOO: MaxNetworks: 1 + [1653476960.303641][30164:30169] CHIP:EM: Sending Standalone Ack for MessageCounter:2083922 on exchange 45120i + disabled: true + - label: "TH sends ArmFailSafe command to the DUT with ExpiryLengthSeco nds set to 900" @@ -68,8 +135,8 @@ tests: disabled: true - label: - "TH calculates the midpoint of the network list - as floor((MaxNetwor ksValue + 1)/2) and saves as Midpoint" + "TH calculates the midpoint of the network list as floor((MaxNetwor + ksValue + 1)/2) and saves as Midpoint" verification: | The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4 ( Pre-Condition) diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_14.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_14.yaml index 637f12813fa436..db445de96a72be 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_14.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_14.yaml @@ -26,6 +26,73 @@ config: endpoint: 0 tests: + - label: "Commission TH and DUT on Thread setup" + verification: | + + disabled: true + + - label: + "The cluster Identifier 49 (0x0031) is present in the ServerList + attribute" + verification: | + ./chip-tool descriptor read server-list 1 0 + + Verify the "server-list" on the TH(Chip-tool) log + + [1653474860.462391][29901:29906] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0001 DataVersion: 1237231415 + [1653474860.462487][29901:29906] CHIP:TOO: server list: 25 entries + [1653474860.462524][29901:29906] CHIP:TOO: [1]: 3 + [1653474860.462549][29901:29906] CHIP:TOO: [2]: 4 + [1653474860.462574][29901:29906] CHIP:TOO: [3]: 29 + [1653474860.462598][29901:29906] CHIP:TOO: [4]: 30 + [1653474860.462622][29901:29906] CHIP:TOO: [5]: 31 + [1653474860.462646][29901:29906] CHIP:TOO: [6]: 40 + [1653474860.462670][29901:29906] CHIP:TOO: [7]: 42 + [1653474860.462693][29901:29906] CHIP:TOO: [8]: 43 + [1653474860.462717][29901:29906] CHIP:TOO: [9]: 44 + [1653474860.462741][29901:29906] CHIP:TOO: [10]: 45 + [1653474860.462765][29901:29906] CHIP:TOO: [11]: 46 + [1653474860.462788][29901:29906] CHIP:TOO: [12]: 48 + [1653474860.462812][29901:29906] CHIP:TOO: [13]: 49 + [1653474860.462836][29901:29906] CHIP:TOO: [14]: 50 + [1653474860.462859][29901:29906] CHIP:TOO: [15]: 51 + [1653474860.462883][29901:29906] CHIP:TOO: [16]: 52 + [1653474860.462906][29901:29906] CHIP:TOO: [17]: 53 + [1653474860.462930][29901:29906] CHIP:TOO: [18]: 54 + [1653474860.462954][29901:29906] CHIP:TOO: [19]: 55 + [1653474860.462977][29901:29906] CHIP:TOO: [20]: 60 + [1653474860.463001][29901:29906] CHIP:TOO: [21]: 62 + [1653474860.463024][29901:29906] CHIP:TOO: [22]: 63 + [1653474860.463048][29901:29906] CHIP:TOO: [23]: 64 + [1653474860.463071][29901:29906] CHIP:TOO: [24]: 65 + [1653474860.463095][29901:29906] CHIP:TOO: [25]: 1029 + [1653474860.463296][29901:29906] CHIP:EM: Sending Standalone Ack for MessageCounter:10703464 on exchange 2435i + disabled: true + + - label: "The FeatureMap attribute value is 2" + verification: | + ./chip-tool networkcommissioning read feature-map 1 0 + + Verify the "feature-map" on the TH(Chip-tool) log + + [1653474932.055513][29920:29925] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_FFFC DataVersion: 1600858167 + [1653474932.055578][29920:29925] CHIP:TOO: FeatureMap: 1 + [1653474932.055675][29920:29925] CHIP:EM: Sending Standalone Ack for MessageCounter:1494059 on exchange 5482i + disabled: true + + - label: + "MaxNetworks attribute value is at least 4 which is saved as + MaxNetworksValue for future use" + verification: | + The test case is not verifiable. As MaxNetworks value is 1 but expected is 4 + + ./chip-tool networkcommissioning read max-networks 1 0 + + [1653476960.303444][30164:30169] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_0000 DataVersion: 1600858167 + [1653476960.303531][30164:30169] CHIP:TOO: MaxNetworks: 1 + [1653476960.303641][30164:30169] CHIP:EM: Sending Standalone Ack for MessageCounter:2083922 on exchange 45120i + disabled: true + - label: "TH sends ArmFailSafe command to the DUT with ExpiryLengthSeco nds set to 900" diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_15.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_15.yaml index 3519c474b73ec3..4c97f68359c397 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_15.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_15.yaml @@ -26,6 +26,35 @@ config: endpoint: 0 tests: + - label: "Factory Reset the DUT" + verification: | + verification step to be updated. + disabled: true + + - label: "Commission TH and DUT over BLE to setup the Wi-Fi" + verification: | + verification step to be updated. + disabled: true + + - label: + "The cluster Identifier 49 (0x0031) is present in the ServerList + attribute" + verification: | + verification step to be updated. + disabled: true + + - label: "The FeatureMap attribute value is 1" + verification: | + verification step to be updated. + disabled: true + + - label: + "MaxNetworks attribute value is at least 1 which is saved as + MaxNetworksValue for future use" + verification: | + verification step to be updated. + disabled: true + - label: "TH sends ArmFailSafe command to the DUT with the ExpiryLengthSeco nds field set to 900" @@ -48,7 +77,7 @@ tests: "TH sends RemoveNetwork Command to the DUT with NetworkID field set to PIXIT.CNET.WIFI_ 2ND_ACCESSPOIN T_SSID, which does not match the provisioned network, and Breadcrumb field set to 1" - PICS: CNET.S.C06.Rsp && CNET.S.C07.Tx + PICS: CNET.S.C04.Rsp && CNET.S.C05.Tx verification: | ./chip-tool networkcommissioning remove-network hex: 1 0 diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_16.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_16.yaml index 7963d5e3a75fca..c8de75528e18e3 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_16.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_16.yaml @@ -26,6 +26,35 @@ config: endpoint: 0 tests: + - label: "Factory Reset the DUT" + verification: | + verification step to be updated. + disabled: true + + - label: "Commission TH and DUT to setup the Thread" + verification: | + verification step to be updated. + disabled: true + + - label: + "The cluster Identifier 49 (0x0031) is present in the ServerList + attribute" + verification: | + verification step to be updated. + disabled: true + + - label: "The FeatureMap attribute value is 2" + verification: | + verification step to be updated. + disabled: true + + - label: + "MaxNetworks attribute value is at least 1 which is saved as + MaxNetworksValue for future use" + verification: | + verification step to be updated. + disabled: true + - label: "TH sends ArmFailSafe command to the DUT" verification: | ./chip-tool generalcommissioning arm-fail-safe 900 0 54 0 diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_17.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_17.yaml index 5e70a7db0f11b4..ea25d1506d0157 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_17.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_17.yaml @@ -31,6 +31,11 @@ tests: Chip-tool command used below are an example to verify the DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. disabled: true + - label: "Commission TH and DUT over BLE to setup the Wi-Fi" + verification: | + verification step to be updated. + disabled: true + - label: "DUT reads the MaxNetworks attribute from the TH" PICS: CNET.S.A0000 verification: | diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_18.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_18.yaml index b21221f902dba5..e43c2b5422c02b 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_18.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_18.yaml @@ -31,6 +31,11 @@ tests: Chip-tool command used below are an example to verify the DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. disabled: true + - label: "Commission TH and DUT on Thread setup" + verification: | + verification step to be updated. + disabled: true + - label: "DUT reads the MaxNetworks attribute from the TH" PICS: CNET.S.A0000 verification: | diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_19.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_19.yaml index 6ccf90ff45fb6a..c6986de08c4b45 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_19.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_19.yaml @@ -31,6 +31,11 @@ tests: Chip-tool command used below are an example to verify the DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. disabled: true + - label: "Commission TH and DUT on Ethernet setup" + verification: | + verification step to be updated. + disabled: true + - label: "DUT reads the MaxNetworks attribute from the TH" PICS: CNET.S.A0000 verification: | diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_20.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_20.yaml index c1bcc524516814..286ad3a2b050a4 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_20.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_20.yaml @@ -30,6 +30,11 @@ tests: Chip-tool command used below are an example to verify the DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. disabled: true + - label: "Commission TH and DUT over BLE to setup the Wi-Fi" + verification: | + verification step to be updated. + disabled: true + - label: "DUT sends the ScanNetwork command to the TH" PICS: CNET.C.C00.Tx verification: | @@ -60,7 +65,7 @@ tests: disabled: true - label: "DUT sends the AddOrUpdateWiFiNetwork command to the TH" - PICS: CNET.C.C03.Tx + PICS: CNET.C.C02.Tx verification: | ./chip-tool networkcommissioning add-or-update-wi-fi-network-network hex: 1 0 diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_21.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_21.yaml index fd1cabf5b3bb18..8bb383b44f2388 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_21.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_21.yaml @@ -31,6 +31,11 @@ tests: Chip-tool command used below are an example to verify the DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. disabled: true + - label: "Commission TH and DUT on Thread setup" + verification: | + verification step to be updated. + disabled: true + - label: "DUT sends the ScanNetwork command to the TH" PICS: CNET.C.C00.Tx verification: | diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_22.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_22.yaml index 6fa3d6745f312b..0d5946a130707a 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_22.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_22.yaml @@ -26,6 +26,30 @@ config: endpoint: 0 tests: + - label: "DUT supports CNET.S.F01(TH)" + verification: | + verification step to be updated. + disabled: true + + - label: + "DUT has a Network Commissioning cluster on endpoint + PIXIT.CNET.ENDPOINT_THREAD with FeatureMap attribute of 2" + verification: | + verification step to be updated. + disabled: true + + - label: "DUT is commissioned on PIXIT.CNET.THREAD_1ST_OPERATIONALDATASET" + verification: | + verification step to be updated. + disabled: true + + - label: + "TH can communicate with the DUT on + PIXIT.CNET.THREAD_1ST_OPERATIONALDATASET" + verification: | + verification step to be updated. + disabled: true + - label: "TH sends ScanNetworks command to the DUT with the SSID field omitted and the Breadcrumb field set to 1" diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_4.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_4.yaml index 8fa6d52855988d..ae7d031e7e0eaa 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_4.yaml @@ -26,6 +26,60 @@ config: endpoint: 0 tests: + - label: "Commission TH and DUT over BLE to setup the Wi-Fi" + verification: | + + disabled: true + + - label: + "The cluster Identifier 49 (0x0031) in present in the ServerList + attribute" + verification: | + ./chip-tool descriptor read server-list 1 0 + + Verify tthe "descriptor" on the TH(Chip-tool) Log: + + [1653474860.462391][29901:29906] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0001 DataVersion: 1237231415 + [1653474860.462487][29901:29906] CHIP:TOO: server list: 25 entries + [1653474860.462524][29901:29906] CHIP:TOO: [1]: 3 + [1653474860.462549][29901:29906] CHIP:TOO: [2]: 4 + [1653474860.462574][29901:29906] CHIP:TOO: [3]: 29 + [1653474860.462598][29901:29906] CHIP:TOO: [4]: 30 + [1653474860.462622][29901:29906] CHIP:TOO: [5]: 31 + [1653474860.462646][29901:29906] CHIP:TOO: [6]: 40 + [1653474860.462670][29901:29906] CHIP:TOO: [7]: 42 + [1653474860.462693][29901:29906] CHIP:TOO: [8]: 43 + [1653474860.462717][29901:29906] CHIP:TOO: [9]: 44 + [1653474860.462741][29901:29906] CHIP:TOO: [10]: 45 + [1653474860.462765][29901:29906] CHIP:TOO: [11]: 46 + [1653474860.462788][29901:29906] CHIP:TOO: [12]: 48 + [1653474860.462812][29901:29906] CHIP:TOO: [13]: 49 + [1653474860.462836][29901:29906] CHIP:TOO: [14]: 50 + [1653474860.462859][29901:29906] CHIP:TOO: [15]: 51 + [1653474860.462883][29901:29906] CHIP:TOO: [16]: 52 + [1653474860.462906][29901:29906] CHIP:TOO: [17]: 53 + [1653474860.462930][29901:29906] CHIP:TOO: [18]: 54 + [1653474860.462954][29901:29906] CHIP:TOO: [19]: 55 + [1653474860.462977][29901:29906] CHIP:TOO: [20]: 60 + [1653474860.463001][29901:29906] CHIP:TOO: [21]: 62 + [1653474860.463024][29901:29906] CHIP:TOO: [22]: 63 + [1653474860.463048][29901:29906] CHIP:TOO: [23]: 64 + [1653474860.463071][29901:29906] CHIP:TOO: [24]: 65 + [1653474860.463095][29901:29906] CHIP:TOO: [25]: 1029 + [1653474860.463296][29901:29906] CHIP:EM: Sending Standalone Ack for MessageCounter:10703464 on exchange 2435i + disabled: true + + - label: "The FeatureMap attribute value is 1" + verification: | + ./chip-tool networkcommissioning read feature-map 1 0 + + Verify the "feature-map" on the TH(Chip-tool) Log: + + [1653474932.055513][29920:29925] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_FFFC DataVersion: 1600858167 + [1653474932.055578][29920:29925] CHIP:TOO: FeatureMap: 1 + [1653474932.055675][29920:29925] CHIP:EM: Sending Standalone Ack for MessageCounter:1494059 on exchange 5482i + disabled: true + - label: "TH sends ScanNetworks command to the DUT with the SSID field set to null and Breadcrumb field set to 1" diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_5.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_5.yaml index 8de8180dd2332c..5ca63fec18f1fc 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_5.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_5.yaml @@ -26,6 +26,29 @@ config: endpoint: 0 tests: + - label: "Commission TH and DUT over BLE to setup the Wi-Fi" + verification: | + + disabled: true + + - label: + "The cluster Identifier 49 (0x0031) is present in the ServerList + attribute" + verification: | + verification step to be updated. + disabled: true + + - label: "The FeatureMap attribute value is 1" + verification: | + "./chip-tool networkcommissioning read feature-map 1 0 + + Verify the "feature-map" on the TH(Chip-tool) Log: + + [1653474932.055513][29920:29925] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_FFFC DataVersion: 1600858167 + [1653474932.055578][29920:29925] CHIP:TOO: FeatureMap: 1 + [1653474932.055675][29920:29925] CHIP:EM: Sending Standalone Ack for MessageCounter:1494059 on exchange 5482i" + disabled: true + - label: "TH sends the AddOrUpdateWiFiNetwork command to the DUT with the following argument: SSID argument value as Userwifi_ssid Credentials diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_6.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_6.yaml index 0f38ac33930338..5a5a0d81c960d6 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_6.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_6.yaml @@ -26,6 +26,23 @@ config: endpoint: 0 tests: + - label: "Commission TH and DUT on Thread setup" + verification: | + verification step to be updated. + disabled: true + + - label: + "The cluster Identifier 49 (0x0031) is present in the ServerList + attribute" + verification: | + verification step to be updated. + disabled: true + + - label: "The FeatureMap attribute value is 2" + verification: | + verification step to be updated. + disabled: true + - label: "TH sends the AddOrUpdateThreadNetwork command to the DUT with the following argument: OperationalDataset argument value as Userth_op @@ -36,7 +53,7 @@ tests: Below is an example: - ./chip-tool networkcommissioning add-or-update-thread-network hex:1232034768527434274 51 0 + ./chip-tool networkcommissioning add-or-update-thread-network hex:1011101122222229 51 0 Verify "FAILSAFE_REQUIRED status code" on the TH(Chip-tool) Log: @@ -54,7 +71,7 @@ tests: Below is an example: - /chip-tool networkcommissioning remove-network hex:1232034768527434274 51 0 + ./chip-tool networkcommissioning remove-network hex:1011101122222229 51 0 Verify "FAILSAFE_REQUIRED status code" on the TH(Chip-tool) Log: @@ -72,7 +89,7 @@ tests: Below is an example: - ./chip-tool networkcommissioning connect-network hex:1232034768527434274 51 0 + ./chip-tool networkcommissioning connect-network hex:1011101122222229 51 0 Verify "FAILSAFE_REQUIRED status code" on the TH(chip-tool) Log: diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_9.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_9.yaml index 8bbc9c3b5801fe..4a1dfefa8cd73e 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_9.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_9.yaml @@ -26,6 +26,88 @@ config: endpoint: 0 tests: + - label: "Commission TH and DUT over BLE to setup the Wi-Fi" + verification: | + + disabled: true + + - label: + "The cluster Identifier 49 (0x0031) is present in the ServerList + attribute" + verification: | + ./chip-tool descriptor read server-list 1 0 + + Verify the "descriptor" on the TH(Chip-tool) log + + [1653474860.462391][29901:29906] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0001 DataVersion: 1237231415 + [1653474860.462487][29901:29906] CHIP:TOO: server list: 25 entries + [1653474860.462524][29901:29906] CHIP:TOO: [1]: 3 + [1653474860.462549][29901:29906] CHIP:TOO: [2]: 4 + [1653474860.462574][29901:29906] CHIP:TOO: [3]: 29 + [1653474860.462598][29901:29906] CHIP:TOO: [4]: 30 + [1653474860.462622][29901:29906] CHIP:TOO: [5]: 31 + [1653474860.462646][29901:29906] CHIP:TOO: [6]: 40 + [1653474860.462670][29901:29906] CHIP:TOO: [7]: 42 + [1653474860.462693][29901:29906] CHIP:TOO: [8]: 43 + [1653474860.462717][29901:29906] CHIP:TOO: [9]: 44 + [1653474860.462741][29901:29906] CHIP:TOO: [10]: 45 + [1653474860.462765][29901:29906] CHIP:TOO: [11]: 46 + [1653474860.462788][29901:29906] CHIP:TOO: [12]: 48 + [1653474860.462812][29901:29906] CHIP:TOO: [13]: 49 + [1653474860.462836][29901:29906] CHIP:TOO: [14]: 50 + [1653474860.462859][29901:29906] CHIP:TOO: [15]: 51 + [1653474860.462883][29901:29906] CHIP:TOO: [16]: 52 + [1653474860.462906][29901:29906] CHIP:TOO: [17]: 53 + [1653474860.462930][29901:29906] CHIP:TOO: [18]: 54 + [1653474860.462954][29901:29906] CHIP:TOO: [19]: 55 + [1653474860.462977][29901:29906] CHIP:TOO: [20]: 60 + [1653474860.463001][29901:29906] CHIP:TOO: [21]: 62 + [1653474860.463024][29901:29906] CHIP:TOO: [22]: 63 + [1653474860.463048][29901:29906] CHIP:TOO: [23]: 64 + [1653474860.463071][29901:29906] CHIP:TOO: [24]: 65 + [1653474860.463095][29901:29906] CHIP:TOO: [25]: 1029 + [1653474860.463296][29901:29906] CHIP:EM: Sending Standalone Ack for MessageCounter:10703464 on exchange 2435i + disabled: true + + - label: "The FeatureMap attribute value is 1" + verification: | + ./chip-tool networkcommissioning read feature-map 1 0 + + Verify the "feature-map" on the TH(Chip-tool) log + + [1653474932.055513][29920:29925] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_FFFC DataVersion: 1600858167 + [1653474932.055578][29920:29925] CHIP:TOO: FeatureMap: 1 + [1653474932.055675][29920:29925] CHIP:EM: Sending Standalone Ack for MessageCounter:1494059 on exchange 5482i + disabled: true + + - label: "The Networks attribute value is 1 entries" + verification: | + ./chip-tool networkcommissioning read networks 1 0 + + Verify the "networks" on the TH(Chip-tool) log + + [1653478044.910989][30351:30356] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_0001 DataVersion: 1600858167 + [1653478044.911109][30351:30356] CHIP:TOO: Networks: 1 entries + [1653478044.911192][30351:30356] CHIP:TOO: [1]: { + [1653478044.911238][30351:30356] CHIP:TOO: NetworkID: 47524C50726976617465 + [1653478044.911280][30351:30356] CHIP:TOO: Connected: FALSE + [1653478044.911322][30351:30356] CHIP:TOO: } + [1653478044.911474][30351:30356] CHIP:EM: Sending Standalone Ack for MessageCounter:3575760 on exchange 51774i + disabled: true + + - label: + "MaxNetworks attribute value is at least 1 which is saved as + MaxNetworksValue for future use" + verification: | + ./chip-tool networkcommissioning read max-networks 1 0 + + Verify the "max-networks" on the TH(Chip-tool) log + + [1653476960.303444][30164:30169] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_0000 DataVersion: 1600858167 + [1653476960.303531][30164:30169] CHIP:TOO: MaxNetworks: 1 + [1653476960.303641][30164:30169] CHIP:EM: Sending Standalone Ack for MessageCounter:2083922 on exchange 45120i + disabled: true + - label: "TH sends ArmFailSafe command to the DUT with ExpiryLengthSeco nds set to 900" @@ -181,6 +263,8 @@ tests: "TH sends ArmFailSafe command to the DUT with ExpiryLengthSeco nds set to 0" verification: | + Mark as not applicable and proceed to next step + ./chip-tool generalcommissioning arm-fail-safe 0 0 1 0 Verify "ArmFailSafeResponse" on the TH(Chip-tool) Log: @@ -196,6 +280,8 @@ tests: - label: "TH reads Networks attribute from the DUT" PICS: CNET.S.A0001 verification: | + Mark as not applicable and proceed to next step + ./chip-tool networkcommissioning read networks 1 0 Verify "Networks entiries and its status" on the TH(Chip-tool) Log: @@ -208,6 +294,8 @@ tests: "TH sends ArmFailSafe command to the DUT with ExpiryLengthSeco nds set to 90" verification: | + Mark as not applicable and proceed to next step + ./chip-tool generalcommissioning arm-fail-safe 90 1 1 0 Verify "ArmFailSafeResponse" on the TH(Chip-tool) Log: @@ -225,6 +313,8 @@ tests: PIXIT.CNET.WIFI_ 1ST_ACCESSPOINT _SSID and Breadcrumb field set to 1" PICS: CNET.S.C04.Rsp && CNET.S.C05.Tx verification: | + Mark as not applicable and proceed to next step + ./chip-tool networkcommissioning remove-network hex: 1 0 Below is an example: diff --git a/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_1_11.yaml b/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_1_11.yaml index 09e8cf190ec511..b24690a2ab0d75 100644 --- a/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_1_11.yaml +++ b/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_1_11.yaml @@ -41,6 +41,15 @@ tests: constraints: type: int16u + - label: "Read the global attribute: FeatureMap" + PICS: ( !CONTENTLAUNCHER.S.CS && !CONTENTLAUNCHER.S.UP ) + command: "readAttribute" + attribute: "FeatureMap" + response: + value: 0 + constraints: + type: bitmap32 + - label: "Read the global attribute: FeatureMap" PICS: CONTENTLAUNCHER.S.CS || CONTENTLAUNCHER.S.UP command: "readAttribute" @@ -48,7 +57,7 @@ tests: response: constraints: type: bitmap32 - minValue: 0 + minValue: 1 maxValue: 3 - label: "Read the global attribute: AttributeList" diff --git a/src/app/tests/suites/certification/Test_TC_DA_1_4.yaml b/src/app/tests/suites/certification/Test_TC_DA_1_4.yaml index 056047d867594d..a4606fa7781765 100644 --- a/src/app/tests/suites/certification/Test_TC_DA_1_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_DA_1_4.yaml @@ -28,7 +28,14 @@ config: tests: - label: "Note" verification: | - Chip-tool command used below are an example to verify the DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Pre-Conditions" + verification: | + 1. PAA, PAI, DAC certificates are obtained and validated + 2. Operations happen within the Fail-Safe Context + 3. TH1 should be known about Commissioner based error condition/warning disabled: true - label: "Start the commissioning process of TH1 on DUT" @@ -42,11 +49,20 @@ tests: - label: "DUT generates 32-byte AttestationNonce" verification: | - To generate the Attestation Nonce give below command - - echo hex:$(hexdump -vn32 -e"4/4 "%08X" " /dev/urandom) - - The generated Attestation Nonce is hex:F573438E58E445EAB50665023A298E351446F5E5E9493F05F4C63CCC02E1F834 + DUT generates 32-byte AttestationNonce on TH(all-clusters-app) log + + [1660832898.375011][2480:2485] CHIP:DMG: } + [1660832898.375071][2480:2485] CHIP:DMG: Device Type Id = 22 + [1660832898.375136][2480:2485] CHIP:DMG: Certificate Id (19) = ZIG20142ZB330003-24 + [1660832898.375198][2480:2485] CHIP:DMG: Security Level = 0 + [1660832898.375257][2480:2485] CHIP:DMG: Security Information = 0 + [1660832898.375315][2480:2485] CHIP:DMG: Version Number = 9876 + [1660832898.375374][2480:2485] CHIP:DMG: Certification Type = 0 + [1660832898.375431][2480:2485] CHIP:DMG: } + [1660832898.375496][2480:2485] CHIP:DMG: Attestation Nonce (32) = 79C7156A8580C653945226CD5B5994EF4EC3D79CEAE6D32325CA2EA24B5201CB + [1660832898.375552][2480:2485] CHIP:DMG: Timestamp = 0 + [1660832898.375605][2480:2485] CHIP:DMG: } + [1660832898.375655][2480:2485] CHIP:DMG: disabled: true - label: @@ -55,16 +71,16 @@ tests: verification: | DUT sends AttestationRequest Command with AttestationNonce as field to the TH1, verify attestation response is received on TH(all-clusters-app) log - ./chip-tool operationalcredentials attestation-request hex:F573438E58E445EAB50665023A298E351446F5E5E9493F05F4C63CCC02E1F834 1 0 + ./chip-tool operationalcredentials attestation-request hex:79C7156A8580C653945226CD5B5994EF4EC3D79CEAE6D32325CA2EA24B5201CB 1 0 - [1659514429.238042][3458:3464] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0001 - [1659514429.238161][3458:3464] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Command 0x0000_0001 - [1659514429.238282][3458:3464] CHIP:TOO: AttestationResponse: { - [1659514429.238447][3458:3464] CHIP:TOO: attestationElements: 1531011D023082021906092A864886F70D010702A082020A30820206020103310D300B06096086480165030402013082017106092A864886F70D010701A08201620482015E152400012501F1FF3602050080050180050280050380050480050580050680050780050880050980050A80050B80050C80050D80050E80050F80051080051180051280051380051480051580051680051780051880051980051A80051B80051C80051D80051E80051F80052080052180052280052380052480052580052680052780052880052980052A80052B80052C80052D80052E80052F80053080053180053280053380053480053580053680053780053880053980053A80053B80053C80053D80053E80053F80054080054180054280054380054480054580054680054780054880054980054A80054B80054C80054D80054E80054F80055080055180055280055380055480055580055680055780055880055980055A80055B80055C80055D80055E80055F80056080056180056280056380182403162C04135A494732303134325A423333303030332D3234240500240600250794 - [1659514429.238593][3458:3464] CHIP:TOO: ...................: 2624080018317D307B020103801462FA823359ACFAA9963E1CFA140ADDF504F37160300B0609608648016503040201300A06082A8648CE3D04030204473045022024E5D1F47A7D7B0D206A26EF699B7C9757B72D469089DE3192E678C745E7F60C022100F8AA2FA711FCB79B97E397CEDA667BAE464E2BD3FFDFC3CCED7AA8CA5F4C1A7C300220F573438E58E445EAB50665023A298E351446F5E5E9493F05F4C63CCC02E1F83424030018 - [1659514429.238672][3458:3464] CHIP:TOO: signature: 1644376FEC5DE29C92AD9CDF43E0051EA2C46DA93429BEEADDA5C7B74A6EF8ACFB47D8AAD77EBEEDEEFE987639ECCA596E1BBDBD39BF0ED5EE7BACAA7A899CA0 - [1659514429.238756][3458:3464] CHIP:TOO: } + Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0001 + [1660833399.901252][2506:2511] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Command 0x0000_0001 + [1660833399.901498][2506:2511] CHIP:TOO: AttestationResponse: { + [1660833399.901607][2506:2511] CHIP:TOO: attestationElements: 1531011D023082021906092A864886F70D010702A082020A30820206020103310D300B06096086480165030402013082017106092A864886F70D010701A08201620482015E152400012501F1FF3602050080050180050280050380050480050580050680050780050880050980050A80050B80050C80050D80050E80050F80051080051180051280051380051480051580051680051780051880051980051A80051B80051C80051D80051E80051F80052080052180052280052380052480052580052680052780052880052980052A80052B80052C80052D80052E80052F80053080053180053280053380053480053580053680053780053880053980053A80053B80053C80053D80053E80053F80054080054180054280054380054480054580054680054780054880054980054A80054B80054C80054D80054E80054F80055080055180055280055380055480055580055680055780055880055980055A80055B80055C80055D80055E80055F80056080056180056280056380182403162C04135A494732303134325A423333303030332D3234240500240600250794 + [1660833399.901733][2506:2511] CHIP:TOO: ...................: 2624080018317D307B020103801462FA823359ACFAA9963E1CFA140ADDF504F37160300B0609608648016503040201300A06082A8648CE3D04030204473045022024E5D1F47A7D7B0D206A26EF699B7C9757B72D469089DE3192E678C745E7F60C022100F8AA2FA711FCB79B97E397CEDA667BAE464E2BD3FFDFC3CCED7AA8CA5F4C1A7C30022079C7156A8580C653945226CD5B5994EF4EC3D79CEAE6D32325CA2EA24B5201CB24030018 + [1660833399.901816][2506:2511] CHIP:TOO: signature: 920E22FE88765058D28A248636828BDBD612D24FFA4B27A06FFFB5D76061E0D0EE7FBCED7030026624A012B32F11596FB87CE147323B13F55A3654F27ED59FB3 + [1660833399.901881][2506:2511] CHIP:TOO: } disabled: true - label: @@ -72,7 +88,7 @@ tests: by setting the following error condition: Commissionee is not yet certified" verification: | - To Execute ths step follow the following + To Execute this step follow the following 1. To generate the CD use the below command ./out/debug/chip-cert gen-cd -C credentials/test/certification-declaration/Chip-Test-CD-Signing-Cert.pem -K credentials/test/certification-declaration/Chip-Test-CD-Signing-Key.pem --out dec_message.txt -f 1 -V FFF1 -p 8000 -p 8001 -p 8002 -p 8003 -p 8004 -p 8005 -p 8006 -p 8007 -p 8008 -p 8009 -p 800A -p 800B -p 800C -p 800D -p 800E -p 800F -p 8010 -p 8011 -p 8012 -p 8013 -p 8014 -p 8015 -p 8016 -p 8017 -p 8018 -p 8019 -p 801A -p 801B -p 801C -p 801D -p 801E -p 801F -p 8020 -p 8021 -p 8022 -p 8023 -p 8024 -p 8025 -p 8026 -p 8027 -p 8028 -p 8029 -p 802A -p 802B -p 802C -p 802D -p 802E -p 802F -p 8030 -p 8031 -p 8032 -p 8033 -p 8034 -p 8035 -p 8036 -p 8037 -p 8038 -p 8039 -p 803A -p 803B -p 803C -p 803D -p 803E -p 803F -p 8040 -p 8041 -p 8042 -p 8043 -p 8044 -p 8045 -p 8046 -p 8047 -p 8048 -p 8049 -p 804A -p 804B -p 804C -p 804D -p 804E -p 804F -p 8050 -p 8051 -p 8052 -p 8053 -p 8054 -p 8055 -p 8056 -p 8057 -p 8058 -p 8059 -p 805A -p 805B -p 805C -p 805D -p 805E -p 805F -p 8060 -p 8061 -p 8062 -p 8063 -d 0016 -c "ZIG20142ZB330003-24" -l 0 -i 0 -n 2694 -t 0 @@ -106,12 +122,7 @@ tests: [1658320787.292739][4152:4157] CHIP:CTL: Expiring failsafe on proxy 0xffff7c000b60 disabled: true - - label: - "Verify that DUT notifies a warning stating that Commissionee is not a - fully trusted device,Verify that the warning contains the information - about the reason for error condition,If the warning message indicates - that Commissioning is allowed then confirm that CSRRequest Command is - sent from DUT to TH1" + - label: "" PICS: MCORE.DA.ATTEST_WARNING verification: | ------>sudo ./chip-all-clusters-app --dac_provide /dec_message.json @@ -159,13 +170,10 @@ tests: 1. To generate the CD use the below command ./out/debug/chip-cert gen-cd -C credentials/development/commissioner_dut/struct_dac_sig_algo_ecdsa_with_sha1/dac-Cert.pem -K credentials/development/commissioner_dut/struct_dac_sig_algo_ecdsa_with_sha1/dac-Key.pem --out dec_message_3 -f 1 -V FFF1 -p 8000 -p 8001 -p 8002 -p 8003 -p 8004 -p 8005 -p 8006 -p 8007 -p 8008 -p 8009 -p 800A -p 800B -p 800C -p 800D -p 800E -p 800F -p 8010 -p 8011 -p 8012 -p 8013 -p 8014 -p 8015 -p 8016 -p 8017 -p 8018 -p 8019 -p 801A -p 801B -p 801C -p 801D -p 801E -p 801F -p 8020 -p 8021 -p 8022 -p 8023 -p 8024 -p 8025 -p 8026 -p 8027 -p 8028 -p 8029 -p 802A -p 802B -p 802C -p 802D -p 802E -p 802F -p 8030 -p 8031 -p 8032 -p 8033 -p 8034 -p 8035 -p 8036 -p 8037 -p 8038 -p 8039 -p 803A -p 803B -p 803C -p 803D -p 803E -p 803F -p 8040 -p 8041 -p 8042 -p 8043 -p 8044 -p 8045 -p 8046 -p 8047 -p 8048 -p 8049 -p 804A -p 804B -p 804C -p 804D -p 804E -p 804F -p 8050 -p 8051 -p 8052 -p 8053 -p 8054 -p 8055 -p 8056 -p 8057 -p 8058 -p 8059 -p 805A -p 805B -p 805C -p 805D -p 805E -p 805F -p 8060 -p 8061 -p 8062 -p 8063 -d 0016 -c "ZIG20142ZB330003-24" -l 0 -i 0 -n 2694 -t 0 - - 2. Use the below command to see the generated CD xxd -p -c 1024 dec_message_3 3082021806092a864886f70d010702a082020930820205020103310d300b06096086480165030402013082017106092a864886f70d010701a08201620482015e152400012501f1ff3602050080050180050280050380050480050580050680050780050880050980050a80050b80050c80050d80050e80050f80051080051180051280051380051480051580051680051780051880051980051a80051b80051c80051d80051e80051f80052080052180052280052380052480052580052680052780052880052980052a80052b80052c80052d80052e80052f80053080053180053280053380053480053580053680053780053880053980053a80053b80053c80053d80053e80053f80054080054180054280054380054480054580054680054780054880054980054a80054b80054c80054d80054e80054f80055080055180055280055380055480055580055680055780055880055980055a80055b80055c80055d80055e80055f80056080056180056280056380182403162c04135a494732303134325a423333303030332d32342405002406002507942624080018317c307a02010380146f4b2077c703a3d97e2c7d0f7c309c9db12abbb3300b0609608648016503040201300a06082a8648ce3d04030204463044022065ce44afabe7ad98eba7f382825be984fd4da28a5b00904acaf9f904e12bfd93022037b92fc4343578c5305d0ef0fb85dd2105f8b665bfe97687e24834d7a27c5096 - 3. Copy the result from step 2 in json file and transfer the json file to Raspi That will be running chip-all-clusters-app 4. Commission TH to DUT using the above generated CD by using dac_provider parameter @@ -180,8 +188,6 @@ tests: [1658320256.356675][4486:4486] CHIP:IN: SecureSession[0xaaaaf9556b00]: Released - Type:1 LSID:62352 [1658320256.356758][4486:4486] CHIP:SVR: Commissioning failed (attempt 1): ../../third_party/connectedhomeip/src/app/server/CommissioningWindowManager.cpp:71: CHIP Error 0x00000032: Timeout - - --->./chip-tool pairing ble-wifi 1 zigbee-thread matter123 20202021 3840 --trace_decode 1 [1658320256.309769][4098:4103] CHIP:CTL: Commissioning stage next step: "SendAttestationRequest" -> "AttestationVerification" @@ -195,6 +201,80 @@ tests: [1658320256.315610][4098:4103] CHIP:CTL: Expiring failsafe on proxy 0xffff6c000b60 [1658320256.315707][4098:4103] CHIP:DMG: ICR moving to [AddingComm] [1658320256.315748][4098:4103] CHIP:DMG: ICR moving to [AddedComma] + + + Similarly for condition 2 follow below steps + + 1. To generate the CD use the below command + ./out/debug/chip-cert gen-cd -E vid-mismatch -C credentials/development/commissioner_dut/struct_dac_sig_algo_ecdsa_with_sha1/dac-Cert.der -K credentials/development/commissioner_dut/struct_dac_sig_algo_ecdsa_with_sha1/dac-Key.der --out dec_message_6.txt -f 1 -V FFF1 -p 8000 -p 8001 -p 8002 -p 8003 -p 8004 -p 8005 -p 8006 -p 8007 -p 8008 -p 8009 -p 800A -p 800B -p 800C -p 800D -p 800E -p 800F -p 8010 -p 8011 -p 8012 -p 8013 -p 8014 -p 8015 -p 8016 -p 8017 -p 8018 -p 8019 -p 801A -p 801B -p 801C -p 801D -p 801E -p 801F -p 8020 -p 8021 -p 8022 -p 8023 -p 8024 -p 8025 -p 8026 -p 8027 -p 8028 -p 8029 -p 802A -p 802B -p 802C -p 802D -p 802E -p 802F -p 8030 -p 8031 -p 8032 -p 8033 -p 8034 -p 8035 -p 8036 -p 8037 -p 8038 -p 8039 -p 803A -p 803B -p 803C -p 803D -p 803E -p 803F -p 8040 -p 8041 -p 8042 -p 8043 -p 8044 -p 8045 -p 8046 -p 8047 -p 8048 -p 8049 -p 804A -p 804B -p 804C -p 804D -p 804E -p 804F -p 8050 -p 8051 -p 8052 -p 8053 -p 8054 -p 8055 -p 8056 -p 8057 -p 8058 -p 8059 -p 805A -p 805B -p 805C -p 805D -p 805E -p 805F -p 8060 -p 8061 -p 8062 -p 8063 -d 0016 -c "ZIG20142ZB330003-24" -l 0 -i 0 -n 2694 -t 0 + + 2. Use the below command to see the generated CD + xxd -p -c 1024 dec_message_6.txt + 3082021906092a864886f70d010702a082020a30820206020103310d300b06096086480165030402013082017106092a864886f70d010701a08201620482015e152400012501f1ff3602050080050180050280050380050480050580050680050780050880050980050a80050b80050c80050d80050e80050f80051080051180051280051380051480051580051680051780051880051980051a80051b80051c80051d80051e80051f80052080052180052280052380052480052580052680052780052880052980052a80052b80052c80052d80052e80052f80053080053180053280053380053480053580053680053780053880053980053a80053b80053c80053d80053e80053f80054080054180054280054380054480054580054680054780054880054980054a80054b80054c80054d80054e80054f80055080055180055280055380055480055580055680055780055880055980055a80055b80055c80055d80055e80055f80056080056180056280056380182403162c04135a494732303134325a423333303030332d32342405002406002507942624080018317d307b02010380146f4b2077c703a3d97e2c7d0f7c309c9db12abbb3300b0609608648016503040201300a06082a8648ce3d040302044730450221009bc4c8759ff98a68fb1b42f2d7b2300a856f7830982a4876ff54855dcc25e773022060c17079368bc8e33171c52d9c73a09d690614c28303c119d1bdc1f9b4be869e + + 3. Copy the result from step 2 in json file and transfer the json file to Raspi That will be running chip-all-clusters-app + + 4. Commission TH to DUT using the above generated CD by using dac_provider parameter + + sudo rm -rf /tmp/chip_* + ./all-cluster-app --wifi --dac_provider /dec_3.json + + [1660836160.681814][4884:4884] CHIP:DL: HandlePlatformSpecificBLEEvent 32782 + [1660836160.681873][4884:4884] CHIP:SVR: Failsafe timer expired + [1660836160.681923][4884:4884] CHIP:IN: SecureSession[0xaaaad5440e10]: MarkForEviction Type:1 LSID:22448 + [1660836160.681975][4884:4884] CHIP:SC: SecureSession[0xaaaad5440e10]: Moving from state "kActive" --> "kPendingEviction" + [1660836160.682126][4884:4884] CHIP:IN: SecureSession[0xaaaad5440e10]: Released - Type:1 LSID:22448 + [1660836160.682202][4884:4884] CHIP:SVR: Commissioning failed (attempt 1): ../../third_party/connectedhomeip/src/app/server/CommissioningWindowManager.cpp:73: CHIP Error 0x00000032: Timeout + + + + --->./chip-tool pairing ble-wifi 1 zigbee-thread matter123 20202021 3840 --trace_decode 1 + + [1660836160.627772][2653:2658] CHIP:CTL: Performing next commissioning step "AttestationVerification" + [1660836160.627826][2653:2658] CHIP:CTL: Verifying attestation + [1660836160.686379][2653:2658] CHIP:CTL: Failed in verifying "Attestation Information" command received from the device: err 601. Look at AttestationVerificationResult enum to understand the errors + [1660836160.686579][2653:2658] CHIP:CTL: Error on commissioning step "AttestationVerification": "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" + [1660836160.686648][2653:2658] CHIP:CTL: Failed to perform commissioning step 8 + [1660836160.686714][2653:2658] CHIP:CTL: Going from commissioning step "AttestationVerification" with lastErr = "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" -> "Cleanup" + [1660836160.686806][2653:2658] CHIP:CTL: Performing next commissioning step "Cleanup" with completion status = "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" + [1660836160.686869][2653:2658] CHIP:CTL: Expiring failsafe on proxy 0xffffa4032330 + + + + Similarly for condition 3 follow below steps + + 1. To generate the CD use the below command + ./out/debug/chip-cert gen-att-cert --type a --subject-cn "Matter Development PAA 01" --valid-from "2020-10-15 14:23:43" --lifetime 7305 --out-key Chip-PAA-Key.pem --out Chip-PAA-Cert.pem + + 2. Use the below command to see the generated CD + xxd -p -c 1024 Chip-PAA-Cert.pem + 2d2d2d2d2d424547494e2043455254494649434154452d2d2d2d2d0a4d49494270444343415571674177494241674949636769574a6f6e394f653477436759494b6f5a497a6a3045417749774a4445694d434147413155454177775a0a54574630644756794945526c646d5673623342745a57353049464242515341774d544165467730794d4445774d5455784e44497a4e444e61467730304d4445770a4d5455784e44497a4e444a614d435178496a416742674e5642414d4d475531686448526c636942455a585a6c624739776257567564434251515545674d4445770a5754415442676371686b6a4f5051494242676771686b6a4f50514d4242774e4341415461314478507a5873473870372f6d755231686f5631783042797072516a0a58672b77536e742b5a6c45542b78424745373252624b4c6c474f2f54694d427776354972633534664d316e697067483546435078536258736f3259775a4441530a42674e5648524d4241663845434441474151482f416745424d41344741315564447745422f77514541774942426a416442674e564851344546675155307551580a4a6b4c73533667487174717875384a6e5a69487946343077487759445652306a42426777466f4155307551584a6b4c73533667487174717875384a6e5a6948790a46343077436759494b6f5a497a6a30454177494453414177525149674a703546485a545739617958334e575777774870543933677434614f7679424c555937500a74423875397038434951446c4e38375755324c6b6c68313339377a63517942565351345833634e6d4d426f336b5a4853584f475843673d3d0a2d2d2d2d2d454e442043455254494649434154452d2d2d2d2d0 + + 3. Copy the result from step 2 in json file and transfer the json file to Raspi That will be running chip-all-clusters-app + + 4. Commission TH to DUT using the above generated CD by using dac_provider parameter + + sudo rm -rf /tmp/chip_* + ./all-cluster-app --wifi --dac_provider /dec_7.json + + [1660894197.335249][5005:5005] CHIP:DL: HandlePlatformSpecificBLEEvent 32782 + [1660894197.335308][5005:5005] CHIP:SVR: Failsafe timer expired + [1660894197.335357][5005:5005] CHIP:IN: SecureSession[0xaaaae7002e10]: MarkForEviction Type:1 LSID:31514 + [1660894197.335430][5005:5005] CHIP:SC: SecureSession[0xaaaae7002e10]: Moving from state "kActive" --> "kPendingEviction" + [1660894197.335607][5005:5005] CHIP:IN: SecureSession[0xaaaae7002e10]: Released - Type:1 LSID:31514 + [1660894197.335686][5005:5005] CHIP:SVR: Commissioning failed (attempt 1): ../../third_party/connectedhomeip/src/app/server/CommissioningWindowManager.cpp:73: CHIP Error 0x00000032: Timeout + + + --->./chip-tool pairing ble-wifi 1 zigbee-thread matter123 20202021 3840 --trace_decode 1 + + [1660894197.296303][4561:4566] CHIP:CTL: Performing next commissioning step "AttestationVerification" + [1660894197.296356][4561:4566] CHIP:CTL: Verifying attestation + [1660894197.350259][4561:4566] CHIP:CTL: Failed in verifying "Attestation Information" command received from the device: err 600. Look at AttestationVerificationResult enum to understand the errors + [1660894197.350444][4561:4566] CHIP:CTL: Error on commissioning step "AttestationVerification": "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" + [1660894197.350508][4561:4566] CHIP:CTL: Failed to perform commissioning step 8 + [1660894197.350574][4561:4566] CHIP:CTL: Going from commissioning step "AttestationVerification" with lastErr = "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" -> "Cleanup" + [1660894197.350659][4561:4566] CHIP:CTL: Performing next commissioning step "Cleanup" with completion status = "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" + [1660894197.350718][4561:4566] CHIP:CTL: Expiring failsafe on proxy 0xffff6c032330 disabled: true - label: @@ -207,13 +287,11 @@ tests: Product ID (PID) the DAC is not present in the product_id_array field in the Certification Declaration" verification: | - To Execute ths step for error condition 1 follow the following + To Execute ths step for error condition 1 follow the following steps 1. To generate the CD use the below command ./out/debug/chip-cert gen-cd -I -E dac-origin-vid-present -C credentials/test/certification-declaration/Chip-Test-CD-Signing-Cert.pem -K credentials/test/certification-declaration/Chip-Test-CD-Signing-Key.pem --out cd_vid_present_pid_missing.txt -o 0x8000 -r 0xFFF1 -f 1 -V FFF1 -p 8000 -p 8001 -p 8002 -p 8003 -p 8004 -p 8005 -p 8006 -p 8007 -p 8008 -p 8009 -p 800A -p 800B -p 800C -p 800D -p 800E -p 800F -p 8010 -p 8011 -p 8012 -p 8013 -p 8014 -p 8015 -p 8016 -p 8017 -p 8018 -p 8019 -p 801A -p 801B -p 801C -p 801D -p 801E -p 801F -p 8020 -p 8021 -p 8022 -p 8023 -p 8024 -p 8025 -p 8026 -p 8027 -p 8028 -p 8029 -p 802A -p 802B -p 802C -p 802D -p 802E -p 802F -p 8030 -p 8031 -p 8032 -p 8033 -p 8034 -p 8035 -p 8036 -p 8037 -p 8038 -p 8039 -p 803A -p 803B -p 803C -p 803D -p 803E -p 803F -p 8040 -p 8041 -p 8042 -p 8043 -p 8044 -p 8045 -p 8046 -p 8047 -p 8048 -p 8049 -p 804A -p 804B -p 804C -p 804D -p 804E -p 804F -p 8050 -p 8051 -p 8052 -p 8053 -p 8054 -p 8055 -p 8056 -p 8057 -p 8058 -p 8059 -p 805A -p 805B -p 805C -p 805D -p 805E -p 805F -p 8060 -p 8061 -p 8062 -p 8063 -d 0016 -c "ZIG20142ZB330003-24" -l 0 -i 0 -n 2694 -t 0 - - 2. Use the below command to see the generated CD xxd -p -c 1024 cd_vid_present_pid_missing.txt 3082010506092a864886f70d010702a081f73081f4020103310d300b0609608648016503040201306106092a864886f70d010701a0540452152000012501f1ff3602050080182403162c04135a494732303134325a423333303030332d32342405002406002507942624080025090080360b10140b44cabbc5016577aa8b44ffb90fcca140fe66201818317d307b020103801462fa823359acfaa9963e1cfa140addf504f37160300b0609608648016503040201300a06082a8648ce3d0403020447304502205adea20956fcdce1213f2878da4a5f4a35907eaafa70efe367edc9cec23eb2f80221009b2482360c8713ccd2738150874f9b811ec2149c3ec1f579357219985ecc765a @@ -225,7 +303,6 @@ tests: sudo rm -rf /tmp/chip_* sudo ./chip-all-clusters-app --dac_provider /cd.json - [1658320561.405436][4521:4521] CHIP:DL: HandlePlatformSpecificBLEEvent 32782 [1658320561.405489][4521:4521] CHIP:SVR: Failsafe timer expired [1658320561.405546][4521:4521] CHIP:IN: SecureSession[0xaaaaec7c9e10]: MarkForEviction Type:1 LSID:27478 @@ -235,7 +312,6 @@ tests: [1658320561.405815][4521:4521] CHIP:IN: Clearing BLE pending packets. - --->./chip-tool pairing ble-wifi 1 zigbee-thread matter123 20202021 3840 --trace_decode 1 [1658320561.366298][4126:4132] CHIP:CTL: Failed in verifying "Attestation Information" command received from the device: err 603. Look at AttestationVerificationResult enum to understand the errors @@ -244,4 +320,111 @@ tests: [1658320561.366481][4126:4132] CHIP:CTL: Going from commissioning step "AttestationVerification" with lastErr = "../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1011: CHIP Error 0x000000AC: Internal error" -> "Cleanup" [1658320561.366524][4126:4132] CHIP:CTL: Performing next commissioning step "Cleanup" with completion status = "../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1011: CHIP Error 0x000000AC: Internal error" [1658320561.366554][4126:4132] CHIP:CTL: Expiring failsafe on proxy 0xffff84000b60 + + + Similarly for 2nd error condition follow the below steps + + 1. To generate the CD use the below command + ./out/debug/chip-cert gen-cd -E vid-mismatch -C credentials/development/commissioner_dut/struct_cd_vid_mismatch/dac-Cert.der -K credentials/development/commissioner_dut/struct_cd_vid_mismatch/dac-Key.der --out dec_message_3.txt -f 1 -V FFF5 -p 8000 -p 8001 -p 8002 -p 8003 -p 8004 -p 8005 -p 8006 -p 8007 -p 8008 -p 8009 -p 800A -p 800B -p 800C -p 800D -p 800E -p 800F -p 8010 -p 8011 -p 8012 -p 8013 -p 8014 -p 8015 -p 8016 -p 8017 -p 8018 -p 8019 -p 801A -p 801B -p 801C -p 801D -p 801E -p 801F -p 8020 -p 8021 -p 8022 -p 8023 -p 8024 -p 8025 -p 8026 -p 8027 -p 8028 -p 8029 -p 802A -p 802B -p 802C -p 802D -p 802E -p 802F -p 8030 -p 8031 -p 8032 -p 8033 -p 8034 -p 8035 -p 8036 -p 8037 -p 8038 -p 8039 -p 803A -p 803B -p 803C -p 803D -p 803E -p 803F -p 8040 -p 8041 -p 8042 -p 8043 -p 8044 -p 8045 -p 8046 -p 8047 -p 8048 -p 8049 -p 804A -p 804B -p 804C -p 804D -p 804E -p 804F -p 8050 -p 8051 -p 8052 -p 8053 -p 8054 -p 8055 -p 8056 -p 8057 -p 8058 -p 8059 -p 805A -p 805B -p 805C -p 805D -p 805E -p 805F -p 8060 -p 8061 -p 8062 -p 8063 -d 0016 -c "ZIG20142ZB330003-24" -l 0 -i 0 -n 2694 -t 0 + + + 2. Use the below command to see the generated CD + xxd -p -c 1024 dec_message_3.txt + 3082021906092a864886f70d010702a082020a30820206020103310d300b06096086480165030402013082017106092a864886f70d010701a08201620482015e152400012501f5ff3602050080050180050280050380050480050580050680050780050880050980050a80050b80050c80050d80050e80050f80051080051180051280051380051480051580051680051780051880051980051a80051b80051c80051d80051e80051f80052080052180052280052380052480052580052680052780052880052980052a80052b80052c80052d80052e80052f80053080053180053280053380053480053580053680053780053880053980053a80053b80053c80053d80053e80053f80054080054180054280054380054480054580054680054780054880054980054a80054b80054c80054d80054e80054f80055080055180055280055380055480055580055680055780055880055980055a80055b80055c80055d80055e80055f80056080056180056280056380182403162c04135a494732303134325a423333303030332d32342405002406002507942624080018317d307b02010380140b36c601086c7232d905bd8b1eb2ce75d9aa8eee300b0609608648016503040201300a06082a8648ce3d04030204473045022100afdf19ccdf9ebb227554c11b066d70d648d030cf49c9b16bfbb82f922af325da02201ea59fcb3fb51b99f40283b736486c141f4f136fec63983d72811b5804221d9f + + 3. Copy the result from step 2 in json file and transfer the json file to Raspi That will be running chip-all-clusters-app + + 4. Commission TH to DUT using the above generated CD by using dac_provider parameter + + ./chip-all-clusters-app --dac_provider dec.json + + [1660834197.222084][4765:4765] CHIP:DL: HandlePlatformSpecificBLEEvent 32782 + [1660834197.222142][4765:4765] CHIP:SVR: Failsafe timer expired + [1660834197.222191][4765:4765] CHIP:IN: SecureSession[0xaaaad7a03e10]: MarkForEviction Type:1 LSID:52084 + [1660834197.222242][4765:4765] CHIP:SC: SecureSession[0xaaaad7a03e10]: Moving from state "kActive" --> "kPendingEviction" + [1660834197.222392][4765:4765] CHIP:IN: SecureSession[0xaaaad7a03e10]: Released - Type:1 LSID:52084 + [1660834197.222468][4765:4765] CHIP:SVR: Commissioning failed (attempt 1): ../../third_party/connectedhomeip/src/app/server/CommissioningWindowManager.cpp:73: CHIP Error 0x00000032: Timeout + + ./chip-tool pairing ethernet 1 20202021 3840 fe80::e65f:1ff:fe0f:2753 5540 --trace_decode 1 + + [1660834197.161864][2546:2551] CHIP:CTL: Performing next commissioning step "AttestationVerification" + [1660834197.161918][2546:2551] CHIP:CTL: Verifying attestation + [1660834197.217691][2546:2551] CHIP:CTL: Failed in verifying "Attestation Information" command received from the device: err 601. Look at AttestationVerificationResult enum to understand the errors + [1660834197.218073][2546:2551] CHIP:CTL: Error on commissioning step "AttestationVerification": "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" + [1660834197.218139][2546:2551] CHIP:CTL: Failed to perform commissioning step 8 + [1660834197.218207][2546:2551] CHIP:CTL: Going from commissioning step "AttestationVerification" with lastErr = "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" -> "Cleanup" + [1660834197.218295][2546:2551] CHIP:CTL: Performing next commissioning step "Cleanup" with completion status = "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" + [1660834197.218358][2546:2551] CHIP:CTL: Expiring failsafe on proxy 0xffff80032330 + + + Similary for 3rd error condition follow the below steps + + 1. To generate the CD use the below command + ./out/debug/chip-cert gen-cd -E vid-mismatch -C credentials/development/commissioner_dut/struct_cd_vid_mismatch/dac-Cert.der -K credentials/development/commissioner_dut/struct_cd_vid_mismatch/dac-Key.der --out dec_message_3.txt -f 1 -V FFF5 -p 8000 -p 8001 -p 8002 -p 8003 -p 8004 -p 8005 -p 8006 -p 8007 -p 8008 -p 8009 -p 800A -p 800B -p 800C -p 800D -p 800E -p 800F -p 8010 -p 8011 -p 8012 -p 8013 -p 8014 -p 8015 -p 8016 -p 8017 -p 8018 -p 8019 -p 801A -p 801B -p 801C -p 801D -p 801E -p 801F -p 8020 -p 8021 -p 8022 -p 8023 -p 8024 -p 8025 -p 8026 -p 8027 -p 8028 -p 8029 -p 802A -p 802B -p 802C -p 802D -p 802E -p 802F -p 8030 -p 8031 -p 8032 -p 8033 -p 8034 -p 8035 -p 8036 -p 8037 -p 8038 -p 8039 -p 803A -p 803B -p 803C -p 803D -p 803E -p 803F -p 8040 -p 8041 -p 8042 -p 8043 -p 8044 -p 8045 -p 8046 -p 8047 -p 8048 -p 8049 -p 804A -p 804B -p 804C -p 804D -p 804E -p 804F -p 8050 -p 8051 -p 8052 -p 8053 -p 8054 -p 8055 -p 8056 -p 8057 -p 8058 -p 8059 -p 805A -p 805B -p 805C -p 805D -p 805E -p 805F -p 8060 -p 8061 -p 8062 -p 8063 -d 0016 -c "ZIG20142ZB330003-24" -l 0 -i 0 -n 2694 -t 0 + + + 2. Use the below command to see the generated CD + xxd -p -c 1024 dec_message_3.txt + 3082021906092a864886f70d010702a082020a30820206020103310d300b06096086480165030402013082017106092a864886f70d010701a08201620482015e152400012501f5ff3602050080050180050280050380050480050580050680050780050880050980050a80050b80050c80050d80050e80050f80051080051180051280051380051480051580051680051780051880051980051a80051b80051c80051d80051e80051f80052080052180052280052380052480052580052680052780052880052980052a80052b80052c80052d80052e80052f80053080053180053280053380053480053580053680053780053880053980053a80053b80053c80053d80053e80053f80054080054180054280054380054480054580054680054780054880054980054a80054b80054c80054d80054e80054f80055080055180055280055380055480055580055680055780055880055980055a80055b80055c80055d80055e80055f80056080056180056280056380182403162c04135a494732303134325a423333303030332d32342405002406002507942624080018317d307b02010380140b36c601086c7232d905bd8b1eb2ce75d9aa8eee300b0609608648016503040201300a06082a8648ce3d04030204473045022100afdf19ccdf9ebb227554c11b066d70d648d030cf49c9b16bfbb82f922af325da02201ea59fcb3fb51b99f40283b736486c141f4f136fec63983d72811b5804221d9f + + 3. Copy the result from step 2 in json file and transfer the json file to Raspi That will be running chip-all-clusters-app + + 4. Commission TH to DUT using the above generated CD by using dac_provider parameter + + ./chip-all-clusters-app --dac_provider dec.json + + [1660834197.222084][4765:4765] CHIP:DL: HandlePlatformSpecificBLEEvent 32782 + [1660834197.222142][4765:4765] CHIP:SVR: Failsafe timer expired + [1660834197.222191][4765:4765] CHIP:IN: SecureSession[0xaaaad7a03e10]: MarkForEviction Type:1 LSID:52084 + [1660834197.222242][4765:4765] CHIP:SC: SecureSession[0xaaaad7a03e10]: Moving from state "kActive" --> "kPendingEviction" + [1660834197.222392][4765:4765] CHIP:IN: SecureSession[0xaaaad7a03e10]: Released - Type:1 LSID:52084 + [1660834197.222468][4765:4765] CHIP:SVR: Commissioning failed (attempt 1): ../../third_party/connectedhomeip/src/app/server/CommissioningWindowManager.cpp:73: CHIP Error 0x00000032: Timeout + + ./chip-tool pairing ethernet 1 20202021 3840 fe80::e65f:1ff:fe0f:2753 5540 --trace_decode 1 + + [1660834197.161864][2546:2551] CHIP:CTL: Performing next commissioning step "AttestationVerification" + [1660834197.161918][2546:2551] CHIP:CTL: Verifying attestation + [1660834197.217691][2546:2551] CHIP:CTL: Failed in verifying "Attestation Information" command received from the device: err 601. Look at AttestationVerificationResult enum to understand the errors + [1660834197.218073][2546:2551] CHIP:CTL: Error on commissioning step "AttestationVerification": "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" + [1660834197.218139][2546:2551] CHIP:CTL: Failed to perform commissioning step 8 + [1660834197.218207][2546:2551] CHIP:CTL: Going from commissioning step "AttestationVerification" with lastErr = "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" -> "Cleanup" + [1660834197.218295][2546:2551] CHIP:CTL: Performing next commissioning step "Cleanup" with completion status = "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" + [1660834197.218358][2546:2551] CHIP:CTL: Expiring failsafe on proxy 0xffff80032330 + + + Similary for 4th error condition follow the below steps + + 1. To generate the CD use the below command + ./out/debug/chip-cert gen-cd -E vid-mismatch -C credentials/development/commissioner_dut/struct_cd_pid_array_missing/dac-Cert.der -K credentials/development/commissioner_dut/struct_cd_pid_array_missing/dac-Key.der --out dec_message_5.txt -f 1 -V FFF1 -p 8000 -p 8001 -p 8002 -p 8003 -p 8004 -p 8005 -p 8006 -p 8007 -p 8008 -p 8009 -p 800A -p 800B -p 800C -p 800D -p 800E -p 800F -p 8010 -p 8011 -p 8012 -p 8013 -p 8014 -p 8015 -p 8016 -p 8017 -p 8018 -p 8019 -p 801A -p 801B -p 801C -p 801D -p 801E -p 801F -p 8020 -p 8021 -p 8022 -p 8023 -p 8024 -p 8025 -p 8026 -p 8027 -p 8028 -p 8029 -p 802A -p 802B -p 802C -p 802D -p 802E -p 802F -p 8030 -p 8031 -p 8032 -p 8033 -p 8034 -p 8035 -p 8036 -p 8037 -p 8038 -p 8039 -p 803A -p 803B -p 803C -p 803D -p 803E -p 803F -p 8040 -p 8041 -p 8042 -p 8043 -p 8044 -p 8045 -p 8046 -p 8047 -p 8048 -p 8049 -p 804A -p 804B -p 804C -p 804D -p 804E -p 804F -p 8050 -p 8051 -p 8052 -p 8053 -p 8054 -p 8055 -p 8056 -p 8057 -p 8058 -p 8059 -p 805A -p 805B -p 805C -p 805D -p 805E -p 805F -p 8060 -p 8061 -p 8062 -p 8063 -d 0016 -c "ZIG20142ZB330003-24" -l 0 -i 0 -n 2694 -t 0 + + + 2. Use the below command to see the generated CD + xxd -p -c 1024 dec_message_5.txt + 3082021906092a864886f70d010702a082020a30820206020103310d300b06096086480165030402013082017106092a864886f70d010701a08201620482015e152400012501f1ff3602050080050180050280050380050480050580050680050780050880050980050a80050b80050c80050d80050e80050f80051080051180051280051380051480051580051680051780051880051980051a80051b80051c80051d80051e80051f80052080052180052280052380052480052580052680052780052880052980052a80052b80052c80052d80052e80052f80053080053180053280053380053480053580053680053780053880053980053a80053b80053c80053d80053e80053f80054080054180054280054380054480054580054680054780054880054980054a80054b80054c80054d80054e80054f80055080055180055280055380055480055580055680055780055880055980055a80055b80055c80055d80055e80055f80056080056180056280056380182403162c04135a494732303134325a423333303030332d32342405002406002507942624080018317d307b0201038014e84b969e3104277c0a25ec2fd2e014cf6cabbc50300b0609608648016503040201300a06082a8648ce3d04030204473045022005a46eb5d9ba996c44abcad5498a65898a8a7711bc91b25b24949b154949b046022100873aaac936ef14cf795c59629603d6d9ffa193f3e6d13082b47b0d018b21d60f + + 3. Copy the result from step 2 in json file and transfer the json file to Raspi That will be running chip-all-clusters-app + + 4. Commission TH to DUT using the above generated CD by using dac_provider parameter + + ./chip-all-clusters-app --dac_provider dec_1.json + + [1660834938.999182][4811:4811] CHIP:DL: HandlePlatformSpecificBLEEvent 32782 + [1660834938.999232][4811:4811] CHIP:SVR: Failsafe timer expired + [1660834938.999276][4811:4811] CHIP:IN: SecureSession[0xaaaae51efe10]: MarkForEviction Type:1 LSID:59289 + [1660834938.999321][4811:4811] CHIP:SC: SecureSession[0xaaaae51efe10]: Moving from state "kActive" --> "kPendingEviction" + [1660834938.999452][4811:4811] CHIP:IN: SecureSession[0xaaaae51efe10]: Released - Type:1 LSID:59289 + [1660834938.999519][4811:4811] CHIP:SVR: Commissioning failed (attempt 1): ../../third_party/connectedhomeip/src/app/server/CommissioningWindowManager.cpp:73: CHIP Error 0x00000032: Timeout + + + ./chip-tool pairing ethernet 1 20202021 3840 fe80::e65f:1ff:fe0f:2753 5540 --trace_decode 1 + + [1660834938.937220][2589:2594] CHIP:CTL: Commissioning stage next step: "SendAttestationRequest" -> "AttestationVerification" + [1660834938.937294][2589:2594] CHIP:CTL: Performing next commissioning step "AttestationVerification" + [1660834938.937346][2589:2594] CHIP:CTL: Verifying attestation + [1660834938.995809][2589:2594] CHIP:CTL: Failed in verifying "Attestation Information" command received from the device: err 601. Look at AttestationVerificationResult enum to understand the errors + [1660834938.996010][2589:2594] CHIP:CTL: Error on commissioning step "AttestationVerification": "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" + [1660834938.996077][2589:2594] CHIP:CTL: Failed to perform commissioning step 8 + [1660834938.996145][2589:2594] CHIP:CTL: Going from commissioning step "AttestationVerification" with lastErr = "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" -> "Cleanup" + [1660834938.996234][2589:2594] CHIP:CTL: Performing next commissioning step "Cleanup" with completion status = "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" + [1660834938.996293][2589:2594] CHIP:CTL: Expiring failsafe on proxy 0xffff84032330 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DA_1_5.yaml b/src/app/tests/suites/certification/Test_TC_DA_1_5.yaml index 1ab2e84c96a65e..717ee8f06dc1d0 100644 --- a/src/app/tests/suites/certification/Test_TC_DA_1_5.yaml +++ b/src/app/tests/suites/certification/Test_TC_DA_1_5.yaml @@ -38,7 +38,7 @@ tests: "TH1 establishes a CASE session to the DUT and saves the attestation challenge as attestation_challenge" verification: | - Verify in TH log: + Verify case session is established on TH(chip-tool) log: [1657081321.112631][2354:2359] CHIP:CTL: Operational credentials provisioned on device 0xffff68000b60 [1657081321.112706][2354:2359] CHIP:TOO: Secure Pairing Success @@ -51,7 +51,7 @@ tests: verification: | ./chip-tool operationalcredentials certificate-chain-request 1 1 0 - Verify CertificateChainResponse in TH log: + Verify CertificateChainResponse on TH(chip-tool) log: [1658393690.991117][3329:3334] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0003 [1658393690.991168][3329:3334] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Command 0x0000_0003 @@ -67,7 +67,7 @@ tests: verification: | ./chip-tool generalcommissioning arm-fail-safe 900 0 1 0 - Verify ArmFailSafeResponse in TH log : + Verify ArmFailSafeResponse on TH(chip-tool) log : [1658393763.804225][3345:3350] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0001 [1658393763.804288][3345:3350] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Command 0x0000_0001 [1658393763.804376][3345:3350] CHIP:TOO: ArmFailSafeResponse: { @@ -86,7 +86,7 @@ tests: ./chip-tool operationalcredentials csrrequest hex:AFB3070A828B7A9CABEE888688F867683C084E6E4B3F13CDEDF17EEF05A9F352 1 0 - Verify CSRResponse in TH log: + Verify CSRResponse on TH(chip-tool) log: [1658393935.238621][3359:3364] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0005 [1658393935.238726][3359:3364] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Command 0x0000_0005 [1658393935.238839][3359:3364] CHIP:TOO: CSRResponse: { @@ -111,13 +111,18 @@ tests: verification step to be updated. disabled: true + - label: "" + verification: | + verification step to be updated. + disabled: true + - label: "TH1 sends an ArmFailSafe command to the General Commissioning cluster with the ExpiryLengthSeconds field set to 0" verification: | ./chip-tool generalcommissioning arm-fail-safe 0 0 1 0 - Verify ArmFailSafeResponse in TH log : + Verify ArmFailSafeResponse on TH(chip-tool) log : [1658394142.961248][3378:3383] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0001 [1658394142.961297][3378:3383] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Command 0x0000_0001 @@ -133,7 +138,7 @@ tests: verification: | ./chip-tool generalcommissioning arm-fail-safe 900 0 1 0 - Verify ArmFailSafeResponse in TH log : + Verify ArmFailSafeResponse on TH(chip-tool) log : [1658393763.804225][3345:3350] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0001 [1658393763.804288][3345:3350] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Command 0x0000_0001 @@ -149,7 +154,7 @@ tests: verification: | ./chip-tool operationalcredentials csrrequest hex:AFB3070A828B7A9CABEE888688F867683C084E6E4B3F13CDEDF17EEF05A9 1 0 - Verify General error INVALID_COMMAND in TH log: + Verify General error INVALID_COMMAND in TH(chip-tool) log: [1658394196.798739][3387:3392] CHIP:EM: Removed CHIP MessageCounter:192677922 from RetransTable on exchange 13029i [1658394196.798787][3387:3392] CHIP:DMG: ICR moving to [ResponseRe] [1658394196.798859][3387:3392] CHIP:DMG: InvokeResponseMessage = @@ -191,7 +196,7 @@ tests: verification: | ./chip-tool generalcommissioning arm-fail-safe 0 0 1 0 - Verify ArmFailSafeResponse in TH log : + Verify ArmFailSafeResponse in TH(chip-tool) log : [1658394142.961248][3378:3383] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0001 [1658394142.961297][3378:3383] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Command 0x0000_0001 @@ -207,7 +212,7 @@ tests: verification: | ./chip-tool pairing open-commissioning-window 1 1 400 2000 3840 - Verify TH1 open commissiong window + Verify manual pairing code on TH(chip-tool) log [1658394279.082812][3401:3407] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0000 Status=0x0 [1658394279.082900][3401:3407] CHIP:CTL: Successfully opened pairing window on the device @@ -217,9 +222,9 @@ tests: - label: "TH2 fully commissions the DUT" verification: | - ./chip-tool pairing code 2 34941319897 --trace_decode 1 + ./chip-tool pairing code 2 34941319897 --trace_decode 1 --commissioner-name beta - Verify in TH2 is commissioned successfully in log: + Verify TH2 is commissioned successfully on TH2(chip-tool) log: [1658394409.242162][2474:2479] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0005 [1658394409.242204][2474:2479] CHIP:CTL: Received CommissioningComplete response, errorCode=0 [1658394409.242237][2474:2479] CHIP:CTL: Successfully finished commissioning step "SendComplete" @@ -233,9 +238,9 @@ tests: "TH2 reads the NOCs attribute from the Node Operational Credentials cluster using a non-fabric-scoped read" verification: | - ./chip-tool operationalcredentials read nocs 2 0 + ./chip-tool operationalcredentials read nocs 2 0 --commissioner-name beta - Verify that there are two element in the list in TH2 log: + Verify that there are two element in the list on TH2(chip-tool) log: [1658394451.122862][2491:2496] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0000 DataVersion: 1660110007 [1658394451.126674][2491:2496] CHIP:TOO: NOCs: 1 entries [1658394451.126806][2491:2496] CHIP:TOO: [1]: { @@ -247,13 +252,13 @@ tests: - label: "TH2 extracts the pubic key from noc1 and noc2" verification: | - Verify both public key of noc1 and noc 2 are different + Verify both public key of noc1 and noc 2 are different in TH (all-clusters-app) To extract public key follow the below step 1. Copy the NOCVALUE of TH1 in commissioning log of TH1 2. save it in a file 3. give below command to get public key - ./out/debug/chip-cert print-cert noc_1.txt + ./out/debug/chip-cert print-cert noc_1.txt --commissioner-name beta ---> The extracted public key of noc1 is CHIP Certificate: @@ -280,6 +285,9 @@ tests: BA D5 4F AC 3F F0 81 6E 0B D3 E0 BE C9 7E 8E FE FB 7A 28 67 8E BA 58 8F D9 74 F1 4D C4 82 C5 F4 + + + --->Follow the same steps for noc2 The generated public key for noc2 is CHIP Certificate: diff --git a/src/app/tests/suites/certification/Test_TC_DA_1_6.yaml b/src/app/tests/suites/certification/Test_TC_DA_1_6.yaml index 8881c34f0fba45..16dee77a88b348 100644 --- a/src/app/tests/suites/certification/Test_TC_DA_1_6.yaml +++ b/src/app/tests/suites/certification/Test_TC_DA_1_6.yaml @@ -26,15 +26,14 @@ config: tests: - label: "Note" verification: | - Chip-tool command used below are an example to verify the DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. disabled: true - - label: - "Pre-Conditions 1. Device Attestation is completed 2. PAI, DAC - certificates are obtained and validated against externally obtained - PAA certificate 3. Operations happen within the Fail-Safe Context" + - label: "Pre-Conditions" verification: | - verification step to be updated. + 1. Device Attestation is completed + 2. PAI, DAC certificates are obtained and validated against externally obtained PAA certificate + 3. Operations happen within the Fail-Safe Context disabled: true - label: "DUT completes the attestation procedure" diff --git a/src/app/tests/suites/certification/Test_TC_DA_1_7.yaml b/src/app/tests/suites/certification/Test_TC_DA_1_7.yaml index 471121b5640352..f0e874045bb00b 100644 --- a/src/app/tests/suites/certification/Test_TC_DA_1_7.yaml +++ b/src/app/tests/suites/certification/Test_TC_DA_1_7.yaml @@ -57,6 +57,31 @@ tests: [1657774756.281289][7964:7969] CHIP:TOO: certificate: 308201CB30820171A003020102020856AD8222AD945B64300A06082A8648CE3D04030230303118301606035504030C0F4D617474657220546573742050414131143012060A2B0601040182A27C02010C04464646313020170D3232303230353030303030305A180F39393939313233313233353935395A303D3125302306035504030C1C4D6174746572204465762050414920307846464631206E6F2050494431143012060A2B0601040182A27C02010C04464646313059301306072A8648CE3D020106082A8648CE3D03010703420004419A9315C2173E0C8C876D03CCFC944852647F7FEC5E5082F4059928ECA894C594151309AC631E4CB03392AF684B0BAFB7E65B3B8162C2F52BF931B8E77AAA82A366306430120603551D130101FF040830060101FF020100300E0603551D0F0101FF040403020106301D0603551D0E0416041463540E47F64B1C38D13884A462D16C195D8FFB3C301F0603551D230418301680146AFD22771F511FECBF1641976710DCDC31A1717E300A06082A8648CE3D0403020348003045022100B2EF27F49AE9B50FB91EEAC94C4D0BDBB8D7929C6C [1657774756.281357][7964:7969] CHIP:TOO: ...........: B88FACE529368D12054C0C0220655DC92B86BD909882A6C62177B825D7D05EDBE7C22F9FEA71220E7EA703F891 [1657774756.281388][7964:7969] CHIP:TOO: } + + The log has certificate details (starting with ---BEGIN CERTIFICATE and ending with ---END CERTIFICATE ) as highlighted below , save the certificate in .pem file format. Open editor on your TH , save that in file, example: pai.pem + + [1660952198157] [17290:5268348] CHIP: [DMG] Encrypted Payload (531 bytes) = + [1660952198157] [17290:5268348] CHIP: [DMG] { + [1660952198157] [17290:5268348] CHIP: [DMG] data = 001c39000820730541fea9f0e9b148d6c50bdd30d20acef8a0ee67b0458c5fe377d9793092b83e0670ad46770ce44154de4d131731f7065b8329d08be8a280db77f8c12b48300c5fb009c0d3f4b0b1b0a8f4523e319db11ee5d8eb679325c2982248aa5c75b474c50f3bbb0f617ab06a04df403557a564bac4cf08c56fd2eb951d4be875f290dd7b9da01e558fc85ad7b4922d804029410735cae9910a6df282145059b3228e9349467ddc917a268638fa7882a3f7b278355ec848c2ac3f466d3cca746ca416733b85dc6bd8e99ecd35bfc0d3b85f28db6e897636bec89fc41ee2eba78bc7ca11fe959a913ec37901b30a193e6665672e8159e194ca133831251205bca75c00dd8b10160a5b6b814e0cc4fc52f48cc2b68819212bcf71ba11785d2c4628363718e9943216a3f4a3f28adcb988997af982a48d793cd9bd0b62648aa2ffed8f373cd7d5ca86ae703415016adf45a1e8ee26a62d023a6a09accca619ca28e3db15cd4ee5b850608c8319e166dc540877683d960d4b9fde0ae4042096ce696532e9d6b8c96f030def011e59a8762753fc0d50ecf30842377249f78c9b3ee164f5f7988a777a4a1ca407f40923737480eca5e0181977b6048d8835b3d3cedd0d36b9c39098e49048c31db9b48decd744f3121b0260e07b9afe9a8a71d9c14a230e48a1b56894c0453b9779bc8fe269e072ee842aa17821ee09b83cfab5e852918a37bbc1414b7f62cd5dc4c254bfa4 + [1660952198157] [17290:5268348] CHIP: [DMG] buffer_ptr = 140233457951312 + [1660952198157] [17290:5268348] CHIP: [DMG] } + [1660952198157] [17290:5268348] CHIP: [DMG] + [1660952198157] [17290:5268348] CHIP: [DMG] DAC/PAI (463) = + [1660952198157] [17290:5268348] CHIP: [DMG] { + -----BEGIN CERTIFICATE----- + MIIByzCCAXGgAwIBAgIIVq2CIq2UW2QwCgYIKoZIzj0EAwIwMDEYMBYGA1UEAwwP + TWF0dGVyIFRlc3QgUEFBMRQwEgYKKwYBBAGConwCAQwERkZGMTAgFw0yMjAyMDUw + MDAwMDBaGA85OTk5MTIzMTIzNTk1OVowPTElMCMGA1UEAwwcTWF0dGVyIERldiBQ + QUkgMHhGRkYxIG5vIFBJRDEUMBIGCisGAQQBgqJ8AgEMBEZGRjEwWTATBgcqhkjO + PQIBBggqhkjOPQMBBwNCAARBmpMVwhc+DIyHbQPM/JRIUmR/f+xeUIL0BZko7KiU + xZQVEwmsYx5MsDOSr2hLC6+35ls7gWLC9Sv5MbjneqqCo2YwZDASBgNVHRMBAf8E + CDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUY1QOR/ZLHDjROISk + YtFsGV2P+zwwHwYDVR0jBBgwFoAUav0idx9RH+y/FkGXZxDc3DGhcX4wCgYIKoZI + zj0EAwIDSAAwRQIhALLvJ/Sa6bUPuR7qyUxNC9u415KcbLiPrOUpNo0SBUwMAiBl + Xckrhr2QmIKmxiF3uCXX0F7b58Ivn+pxIg5+pwP4kQ== + -----END CERTIFICATE----- + [1660952198157] [17290:5268348] CHIP: [DMG] } + [1660952198157] [17290:5268348] CHIP: [DMG] disabled: true - label: @@ -77,153 +102,49 @@ tests: [1657774717.722181][7956:7961] CHIP:TOO: certificate: 308201E73082018EA003020102020869CDF10DE9E54ED1300A06082A8648CE3D040302303D3125302306035504030C1C4D6174746572204465762050414920307846464631206E6F2050494431143012060A2B0601040182A27C02010C04464646313020170D3232303230353030303030305A180F39393939313233313233353935395A30533125302306035504030C1C4D61747465722044657620444143203078464646312F30783830303131143012060A2B0601040182A27C02010C044646463131143012060A2B0601040182A27C02020C04383030313059301306072A8648CE3D020106082A8648CE3D03010703420004463AC69342910A0E5588FC6FF56BB63E62ECCECB148F7D4EB03EE552601415767D16A5C663F793E49123260B8297A7CD7E7CFC7B316B39D98E90D29377738E82A360305E300C0603551D130101FF04023000300E0603551D0F0101FF040403020780301D0603551D0E0416041488DDE7B300382932CFF734C04624810F44168A6F301F0603551D2304183016801463540E47F64B1C38D13884A462D16C195D8FFB3C300A06082A8648CE3D040302 [1657774717.722269][7956:7961] CHIP:TOO: ...........: 034700304402200127A27B4B44610EE2FCDC4D2B7885563660BC0F76F17219ED6A08DFB2B3C1CD02206B59E0AF45F3EB2A85B919D35731528C6028C415239545E108E4E54E70971353 [1657774717.722297][7956:7961] CHIP:TOO: } - disabled: true - - label: "TH extracts the Authority Key Identifier from the PAI certificate" - verification: | - During commissioning we will get PAI certificate, see on TH(chip-tool) log: - [1659415376.883870][2666:2671] CHIP:CTL: Performing next commissioning step "SendPAICertificateRequest" - [1659415376.883925][2666:2671] CHIP:CTL: Sending request for PAI certificate - [1659415376.884015][2666:2671] CHIP:CTL: Sending Certificate Chain request to 0xffffa0000b60 device - [1659415376.884167][2666:2671] CHIP:DMG: ICR moving to [AddingComm] - [1659415376.884302][2666:2671] CHIP:DMG: ICR moving to [AddedComma] - [1659415376.884867][2666:2671] CHIP:IN: Prepared secure message 0xffffb37ec8d8 to 0xFFFFFFFB00000000 (0) of type 0x8 and protocolId (0, 1) on exchange 61632i with MessageCounter:72933899. - [1659415376.884965][2666:2671] CHIP:IN: Sending encrypted msg 0xffffb37ec8d8 with MessageCounter:72933899 to 0xFFFFFFFB00000000 (0) at monotonic time: 0000000000161D55 msec - [1659415376.885796][2666:2671] CHIP:DMG: >> to BLE | 72933899 | [Interaction Model (1) / InvokeCommandRequest (0x08) / Session = 384 / Exchange = 61632] - [1659415376.885890][2666:2671] CHIP:DMG: Header Flags = - [1659415376.885944][2666:2671] CHIP:DMG: { - [1659415376.886028][2666:2671] CHIP:DMG: Exchange (0x01) = - [1659415376.886081][2666:2671] CHIP:DMG: { - [1659415376.886154][2666:2671] CHIP:DMG: Initiator = true - [1659415376.886206][2666:2671] CHIP:DMG: } - [1659415376.886296][2666:2671] CHIP:DMG: } - [1659415376.886350][2666:2671] CHIP:DMG: - [1659415376.886438][2666:2671] CHIP:DMG: Encrypted Payload (62 bytes) = - [1659415376.886492][2666:2671] CHIP:DMG: { - [1659415376.886542][2666:2671] CHIP:DMG: data = 008001000be258046e751fb56b97dabcc7ee6b6611ede33a66461e188834bb1fe5b6332edb4a3896d32bce2eb59dee722e070c4426af77c82dfca14619bb - [1659415376.886616][2666:2671] CHIP:DMG: buffer_ptr = 281473366182720 - [1659415376.886666][2666:2671] CHIP:DMG: } - [1659415376.886714][2666:2671] CHIP:DMG: - [1659415376.886900][2666:2671] CHIP:DMG: InvokeRequestMessage = - [1659415376.886962][2666:2671] CHIP:DMG: { - [1659415376.887039][2666:2671] CHIP:DMG: suppressResponse = false, - [1659415376.887103][2666:2671] CHIP:DMG: timedRequest = false, - [1659415376.887162][2666:2671] CHIP:DMG: InvokeRequests = - [1659415376.887234][2666:2671] CHIP:DMG: [ - [1659415376.887312][2666:2671] CHIP:DMG: CommandDataIB = - [1659415376.887380][2666:2671] CHIP:DMG: { - [1659415376.887442][2666:2671] CHIP:DMG: CommandPathIB = - [1659415376.887538][2666:2671] CHIP:DMG: { - [1659415376.887633][2666:2671] CHIP:DMG: EndpointId = 0x0, - [1659415376.887874][2666:2671] CHIP:DMG: ClusterId = 0x3e, - [1659415376.888039][2666:2671] CHIP:DMG: CommandId = 0x2, - [1659415376.888125][2666:2671] CHIP:DMG: }, - [1659415376.888225][2666:2671] CHIP:DMG: - [1659415376.888289][2666:2671] CHIP:DMG: CommandFields = - [1659415376.888384][2666:2671] CHIP:DMG: { - [1659415376.888478][2666:2671] CHIP:DMG: 0x0 = 2, - [1659415376.888560][2666:2671] CHIP:DMG: }, - [1659415376.888655][2666:2671] CHIP:DMG: }, - [1659415376.888728][2666:2671] CHIP:DMG: - [1659415376.888806][2666:2671] CHIP:DMG: ], - [1659415376.888877][2666:2671] CHIP:DMG: - [1659415376.888955][2666:2671] CHIP:DMG: InteractionModelRevision = 1 - [1659415376.889012][2666:2671] CHIP:DMG: }, - [1659415376.889086][2666:2671] CHIP:DMG: - [1659415376.889368][2666:2671] CHIP:DMG: ICR moving to [CommandSen] - [1659415376.889523][2666:2671] CHIP:DMG: ICR moving to [AwaitingDe] - [1659415376.972895][2666:2671] CHIP:DL: HandlePlatformSpecificBLEEvent 16387 - [1659415377.021227][2666:2669] CHIP:DL: Indication received, conn = 0xffffa803b9b0 - [1659415377.021488][2666:2671] CHIP:DL: HandlePlatformSpecificBLEEvent 16389 - [1659415377.122119][2666:2669] CHIP:DL: Indication received, conn = 0xffffa803b9b0 - [1659415377.122505][2666:2671] CHIP:DL: HandlePlatformSpecificBLEEvent 16389 - [1659415377.217641][2666:2669] CHIP:DL: Indication received, conn = 0xffffa803b9b0 - [1659415377.217905][2666:2671] CHIP:DL: HandlePlatformSpecificBLEEvent 16389 - [1659415377.219135][2666:2671] CHIP:DMG: << from BLE | 199585160 | [Interaction Model (1) / InvokeCommandResponse (0x09) / Session = 46479 / Exchange = 61632] - [1659415377.219238][2666:2671] CHIP:DMG: Header Flags = - [1659415377.219295][2666:2671] CHIP:DMG: { - [1659415377.219391][2666:2671] CHIP:DMG: } - [1659415377.219446][2666:2671] CHIP:DMG: - [1659415377.219518][2666:2671] CHIP:DMG: Encrypted Payload (527 bytes) = - [1659415377.219573][2666:2671] CHIP:DMG: { - [1659415377.219626][2666:2671] CHIP:DMG: data = 008fb500886de50b9dd1c80f8f48187dc9457d6066ed57c1f15550aefb6a675573c3fcff99cc266b26bdbd97c5ac460ff50e513fd8ef02f39294c2e79b507b0d7b6342caea806048b1c64804aae7bb9d4cdb04d4c7c4d345788e332256c05e7ea38eddd7693e4a39cdfe625688f0101cf16af6f5281049b25e47e6931b06c832d9a014a8248d7cfe31d8b75ebb7805b511293591caa108030939b43b951ad2a164692b051201f9c777e769b9632f05b94bc1990718ec3d2e0fa0161da28ec39bc51017c519e994e9fbbc68693e86ae9fa72618a5a0bc9a133e919bf61ca0805a90a09807c5c4b88329bd1d99149788c5464650dc3b7223e11f4d5a487c0b589453f725b035b543b0159801bee756dcd835832af45402931d73f4977371c90a3fd406905b278fefccf607e0699cac0b082d062b563f17d6e9438720a885f6b5d0dd035d652fd9b88790b1e79995030977f4423139eff3d2e36915065474ea1996705bd63b40395344e402c191e54c1c136c4daa31040ea09cc39c5804dd4203763d05e30d2cfd50ed84e12fd01ecf9c49a4bf7fe73c13416af1cc8bed4f5f2e8919f5724d698990115f97c08f43f9dd463883b53d09e6f888ac8a8d8ba91bd65b242ae049cccd4af6fdcfa402877ba10fb560008d07054deb1e9f1a39fd9110930e1e620fc64f999255a52f8064dc1c83fe6aa35de56c44850e932c82919c1f1af174afa75f3ef77c8b08fcace33883 - [1659415377.219729][2666:2671] CHIP:DMG: buffer_ptr = 281473366176768 - [1659415377.219780][2666:2671] CHIP:DMG: } - [1659415377.219830][2666:2671] CHIP:DMG: - [1659415377.220104][2666:2671] CHIP:DMG: DAC/PAI (463) = - [1659415377.220220][2666:2671] CHIP:DMG: { + The log has certificate details (starting with ---BEGIN CERTIFICATE and ending with ---END CERTIFICATE ) as highlighted below , save the certificate in .pem file format. Open editor on your TH , save that in file , example: dac.pem + + 1660951953700] [17233:5262446] CHIP: [DMG] data = 0068e9001f1f110e4f813e5e997100f2b1c69eb72b23bd4e69002a0485ecc741a33706d82f20c8ea99d6b830b2f60ed69c07cecba48142c7f3c8ded67e9ed878b5d68fe28facaf111ee3ce4510fc9b00ad13d57c2a7bd8bdcf868ca8e0aa0bb96c873862f32f12a32207a22e33fe3d8124435207df4f5747414a21b9674685a486f0d3c0aae5d96ba2f02067be2221b98415244522a221f570b62c21a83d88a9ee1a085c5a8c8f5d598f7cb168b4b36ca2306a4554a062e058dba25e7058a4e2f9f976fc71e3d6fcdafb40346d74600e033100243c0837f30f2e6fb337582f6a7d122ffc8943bbc17ba447f80fbac538609c9822d0ab95f6c831071a68ccc9cb1e5180f4daf0a1ae16a33ee3ac7d4754d5f6dca657e44f5a1f9405e668ce848132bb62b1fab6f5cd9aa2d4357fd14e516f18f5c158373f21479aef4c290477141e6d1894901a1c88db870fc1fc005be219dce3f708868ba532c657cf98b8d154d569d6f3de7639cdf72cc43af330ddbac0b910a839416e38a8b305a7eb1b069d274c8c31868363615adb08bfe99a4353f34927785acdb8c1619e1d4f8574491a3e77a46e6c5b47bdd722adfcb00937be7f9ba8c53a8188d42795439a435e6f6a26288c9278981dcac442d480ee40397e2a808d4ae55139562111120bd69411ef301d1b6caf3a4793d143c57092d4944ca93e848f553a19145dc6c02a0b68a67ea83b66afd10988737a753ea8d1f49ca534d12590bf7c3fddd0d7d00baf0121c883a743fcd289dab3d2a8e5131bd987 + [1660951953700] [17233:5262446] CHIP: [DMG] buffer_ptr = 140355398986080 + [1660951953700] [17233:5262446] CHIP: [DMG] } + [1660951953700] [17233:5262446] CHIP: [DMG] + [1660951953700] [17233:5262446] CHIP: [DMG] DAC/PAI (491) = + [1660951953700] [17233:5262446] CHIP: [DMG] { -----BEGIN CERTIFICATE----- - MIIByzCCAXGgAwIBAgIIVq2CIq2UW2QwCgYIKoZIzj0EAwIwMDEYMBYGA1UEAwwP - TWF0dGVyIFRlc3QgUEFBMRQwEgYKKwYBBAGConwCAQwERkZGMTAgFw0yMjAyMDUw - MDAwMDBaGA85OTk5MTIzMTIzNTk1OVowPTElMCMGA1UEAwwcTWF0dGVyIERldiBQ - QUkgMHhGRkYxIG5vIFBJRDEUMBIGCisGAQQBgqJ8AgEMBEZGRjEwWTATBgcqhkjO - PQIBBggqhkjOPQMBBwNCAARBmpMVwhc+DIyHbQPM/JRIUmR/f+xeUIL0BZko7KiU - xZQVEwmsYx5MsDOSr2hLC6+35ls7gWLC9Sv5MbjneqqCo2YwZDASBgNVHRMBAf8E - CDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUY1QOR/ZLHDjROISk - YtFsGV2P+zwwHwYDVR0jBBgwFoAUav0idx9RH+y/FkGXZxDc3DGhcX4wCgYIKoZI - zj0EAwIDSAAwRQIhALLvJ/Sa6bUPuR7qyUxNC9u415KcbLiPrOUpNo0SBUwMAiBl - Xckrhr2QmIKmxiF3uCXX0F7b58Ivn+pxIg5+pwP4kQ== + MIIB5zCCAY6gAwIBAgIIac3xDenlTtEwCgYIKoZIzj0EAwIwPTElMCMGA1UEAwwc + TWF0dGVyIERldiBQQUkgMHhGRkYxIG5vIFBJRDEUMBIGCisGAQQBgqJ8AgEMBEZG + RjEwIBcNMjIwMjA1MDAwMDAwWhgPOTk5OTEyMzEyMzU5NTlaMFMxJTAjBgNVBAMM + HE1hdHRlciBEZXYgREFDIDB4RkZGMS8weDgwMDExFDASBgorBgEEAYKifAIBDARG + RkYxMRQwEgYKKwYBBAGConwCAgwEODAwMTBZMBMGByqGSM49AgEGCCqGSM49AwEH + A0IABEY6xpNCkQoOVYj8b/Vrtj5i7M7LFI99TrA+5VJgFBV2fRalxmP3k+SRIyYL + gpenzX58/HsxaznZjpDSk3dzjoKjYDBeMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/ + BAQDAgeAMB0GA1UdDgQWBBSI3eezADgpMs/3NMBGJIEPRBaKbzAfBgNVHSMEGDAW + gBRjVA5H9kscONE4hKRi0WwZXY/7PDAKBggqhkjOPQQDAgNHADBEAiABJ6J7S0Rh + DuL83E0reIVWNmC8D3bxchntagjfsrPBzQIga1ngr0Xz6yqFuRnTVzFSjGAoxBUj + lUXhCOTlTnCXE1M= -----END CERTIFICATE----- - [1659415377.220439][2666:2671] CHIP:DMG: } - [1659415377.220490][2666:2671] CHIP:DMG: - [1659415377.220553][2666:2671] CHIP:DMG: - [1659415377.220635][2666:2671] CHIP:DMG: Additional Fields = - [1659415377.220689][2666:2671] CHIP:DMG: { - [1659415377.220748][2666:2671] CHIP:DMG: peer_address = BLE - [1659415377.220801][2666:2671] CHIP:DMG: } - [1659415377.220850][2666:2671] CHIP:DMG: - [1659415377.220914][2666:2671] CHIP:EM: Received message of type 0x9 with protocolId (0, 1) and MessageCounter:199585160 on exchange 61632i - [1659415377.220977][2666:2671] CHIP:EM: Found matching exchange: 61632i, Delegate: 0xffffa803c898 - [1659415377.221071][2666:2671] CHIP:DMG: ICR moving to [ResponseRe] - [1659415377.221162][2666:2671] CHIP:DMG: InvokeResponseMessage = - [1659415377.221222][2666:2671] CHIP:DMG: { - [1659415377.221279][2666:2671] CHIP:DMG: suppressResponse = false, - [1659415377.221339][2666:2671] CHIP:DMG: InvokeResponseIBs = - [1659415377.221413][2666:2671] CHIP:DMG: [ - [1659415377.221473][2666:2671] CHIP:DMG: InvokeResponseIB = - [1659415377.221551][2666:2671] CHIP:DMG: { - [1659415377.221615][2666:2671] CHIP:DMG: CommandDataIB = - [1659415377.221691][2666:2671] CHIP:DMG: { - [1659415377.221764][2666:2671] CHIP:DMG: CommandPathIB = - [1659415377.221855][2666:2671] CHIP:DMG: { - [1659415377.221949][2666:2671] CHIP:DMG: EndpointId = 0x0, - [1659415377.222037][2666:2671] CHIP:DMG: ClusterId = 0x3e, - [1659415377.222125][2666:2671] CHIP:DMG: CommandId = 0x3, - [1659415377.222216][2666:2671] CHIP:DMG: }, - [1659415377.222303][2666:2671] CHIP:DMG: - [1659415377.222377][2666:2671] CHIP:DMG: CommandFields = - [1659415377.222476][2666:2671] CHIP:DMG: { - [1659415377.222570][2666:2671] CHIP:DMG: 0x0 = [ - [1659415377.222896][2666:2671] CHIP:DMG: 0x30, 0x82, 0x1, 0xcb, 0x30, 0x82, 0x1, 0x71, 0xa0, 0x3, 0x2, 0x1, 0x2, 0x2, 0x8, 0x56, 0xad, 0x82, 0x22, 0xad, 0x94, 0x5b, 0x64, 0x30, 0xa, 0x6, 0x8, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x4, 0x3, 0x2, 0x30, 0x30, 0x31, 0x18, 0x30, 0x16, 0x6, 0x3, 0x55, 0x4, 0x3, 0xc, 0xf, 0x4d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x20, 0x54, 0x65, 0x73, 0x74, 0x20, 0x50, 0x41, 0x41, 0x31, 0x14, 0x30, 0x12, 0x6, 0xa, 0x2b, 0x6, 0x1, 0x4, 0x1, 0x82, 0xa2, 0x7c, 0x2, 0x1, 0xc, 0x4, 0x46, 0x46, 0x46, 0x31, 0x30, 0x20, 0x17, 0xd, 0x32, 0x32, 0x30, 0x32, 0x30, 0x35, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x18, 0xf, 0x39, 0x39, 0x39, 0x39, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x3d, 0x31, 0x25, 0x30, 0x23, 0x6, 0x3, 0x55, 0x4, 0x3, 0xc, 0x1c, 0x4d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x20, 0x44, 0x65, 0x76, 0x20, 0x50, 0x41, 0x49, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x31, 0x20, 0x6e, 0x6f, 0x20, 0x50, 0x49, 0x44, 0x31, 0x14, 0x30, 0x12, 0x6, 0xa, 0x2b, 0x6, 0x1, 0x4, 0x1, 0x82, 0xa2, 0x7c, 0x2, 0x1, 0xc, 0x4, 0x46, 0x46, 0x46, 0x31, 0x30, 0x59, 0x30, 0x13, 0x6, 0x7, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x2, 0x1, 0x6, 0x8, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x3, 0x1, 0x7, 0x3, 0x42, 0x0, 0x4, 0x41, 0x9a, 0x93, 0x15, 0xc2, 0x17, 0x3e, 0xc, 0x8c, 0x87, 0x6d, 0x3, 0xcc, 0xfc, 0x94, 0x48, 0x52, 0x64, 0x7f, 0x7f, 0xec, 0x5e, 0x50, 0x82, 0xf4, 0x5, 0x99, 0x28, 0xec, 0xa8, 0x94, 0xc5, 0x94, 0x15, 0x13, 0x9, 0xac, 0x63, 0x1e, 0x4c, 0xb0, 0x33, 0x92, 0xaf, 0x68, 0x4b, 0xb, 0xaf, 0xb7, 0xe6, 0x5b, 0x3b, 0x81, 0x62, 0xc2, 0xf5, 0x2b, 0xf9, 0x31, 0xb8, 0xe7, 0x7a, 0xaa, 0x82, 0xa3, 0x66, 0x30, 0x64, 0x30, 0x12, 0x6, 0x3, 0x55, 0x1d, 0x13, 0x1, 0x1, 0xff, 0x4, 0x8, 0x30, 0x6, 0x1, 0x1, 0xff, 0x2, 0x1, - [1659415377.223073][2666:2671] CHIP:DMG: ] (463 bytes) - [1659415377.223156][2666:2671] CHIP:DMG: }, - [1659415377.223230][2666:2671] CHIP:DMG: }, - [1659415377.223312][2666:2671] CHIP:DMG: - [1659415377.223374][2666:2671] CHIP:DMG: }, - [1659415377.223448][2666:2671] CHIP:DMG: - [1659415377.223505][2666:2671] CHIP:DMG: ], - [1659415377.223579][2666:2671] CHIP:DMG: - [1659415377.223637][2666:2671] CHIP:DMG: InteractionModelRevision = 1 - [1659415377.223694][2666:2671] CHIP:DMG: }, - [1659415377.223832][2666:2671] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0003 - [1659415377.223908][2666:2671] CHIP:CTL: Received certificate chain from the device - [1659415377.224018][2666:2671] CHIP:CTL: Successfully finished commissioning step "SendPAICertificateRequest" - + [1660951953700] [17233:5262446] CHIP: [DMG] } + disabled: true - 1. Save the PAI value from commissioning log of TH in the file as below - vi pai_6.pem + - label: "TH extracts the Authority Key Identifier from the PAI certificate" + verification: | + 1. Print the PAI value saved in the step above using "openssl x509 -in pai.pem -text" as shown below - 2. Give the below command to extract the Authority key ID - openssl x509 -in pai_6.pem -text + Get the Authority Key Identifier from the console. - Verify that below extracted authority key is not same as the SDK"s test PAA + Verify that below extracted authority key is not the same as the SDK"s test PAA 1. 78:5C:E7:05:B8:6B:8F:4E:6F:C7:93:AA:60:CB:43:EA:69:68:82:D5 2. 6A:FD:22:77:1F:51:1F:EC:BF:16:41:97:67:10:DC:DC:31:A1:71:7E - Below certificate has been extracted using the sample DUT, hence the Authority key ID is same as SDK"s test PAA + On the reference platform implementation, this authority key id matches. But in real DUT it should not match. - grl@grl-ThinkPad-L480:~/jul14_2ndcntrl/connectedhomeip$ openssl x509 -in pai_6.pem -text + Below certificate has been extracted using the sample DUT, hence the Authority key ID is the same as SDK"s test PAA + + Verify the below authority key identifier (AKID) is signed by a PAA. Extract each cert in the TH PAA trust store using the below command and look for AKID is present in those certificates. + + grl@grl-ThinkPad-L480:~/jul14_2ndcntrl/connectedhomeip$ openssl x509 -in pai.pem -text Certificate: Data: Version: 3 (0x2) @@ -278,163 +199,9 @@ tests: verification: | During commissioning we will get DAC certificate, see on TH(chip-tool) log: - [1659509320.714103][3165:3170] CHIP:CTL: Performing next commissioning step "SendDACCertificateRequest" - [1659509320.714155][3165:3170] CHIP:CTL: Sending request for DAC certificate - [1659509320.714225][3165:3170] CHIP:CTL: Sending Certificate Chain request to 0xffff74000b60 device - [1659509320.714397][3165:3170] CHIP:DMG: ICR moving to [AddingComm] - [1659509320.714470][3165:3170] CHIP:DMG: ICR moving to [AddedComma] - [1659509320.715027][3165:3170] CHIP:IN: Prepared secure message 0xffff74001d38 to 0xFFFFFFFB00000000 (0) of type 0x8 and protocolId (0, 1) on exchange 17089i with MessageCounter:86888459. - [1659509320.715128][3165:3170] CHIP:IN: Sending encrypted msg 0xffff74001d38 with MessageCounter:86888459 to 0xFFFFFFFB00000000 (0) at monotonic time: 0000000000ADAD48 msec - [1659509320.715804][3165:3170] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0f:2753%eth0]:5540 | 86888459 | [Interaction Model (1) / InvokeCommandRequest (0x08) / Session = 29587 / Exchange = 17089] - [1659509320.715898][3165:3170] CHIP:DMG: Header Flags = - [1659509320.715952][3165:3170] CHIP:DMG: { - [1659509320.716035][3165:3170] CHIP:DMG: Exchange (0x05) = - [1659509320.716089][3165:3170] CHIP:DMG: { - [1659509320.716158][3165:3170] CHIP:DMG: Initiator = true - [1659509320.716212][3165:3170] CHIP:DMG: NeedsAck = true - [1659509320.716264][3165:3170] CHIP:DMG: } - [1659509320.716353][3165:3170] CHIP:DMG: } - [1659509320.716405][3165:3170] CHIP:DMG: - [1659509320.716491][3165:3170] CHIP:DMG: Encrypted Payload (62 bytes) = - [1659509320.716544][3165:3170] CHIP:DMG: { - [1659509320.716616][3165:3170] CHIP:DMG: data = 009373000bd02d05c296dbc864194390f3d020eb61ee335c0d61263dd0d5f4849a5c6a601f73c80e6775d2b422e816cf8e3ae224d59c01f53783a657bd0d - [1659509320.716672][3165:3170] CHIP:DMG: buffer_ptr = 281472627949680 - [1659509320.716742][3165:3170] CHIP:DMG: } - [1659509320.716793][3165:3170] CHIP:DMG: - [1659509320.716965][3165:3170] CHIP:DMG: InvokeRequestMessage = - [1659509320.717029][3165:3170] CHIP:DMG: { - [1659509320.717084][3165:3170] CHIP:DMG: suppressResponse = false, - [1659509320.717148][3165:3170] CHIP:DMG: timedRequest = false, - [1659509320.717206][3165:3170] CHIP:DMG: InvokeRequests = - [1659509320.717276][3165:3170] CHIP:DMG: [ - [1659509320.717335][3165:3170] CHIP:DMG: CommandDataIB = - [1659509320.717399][3165:3170] CHIP:DMG: { - [1659509320.717461][3165:3170] CHIP:DMG: CommandPathIB = - [1659509320.717535][3165:3170] CHIP:DMG: { - [1659509320.717788][3165:3170] CHIP:DMG: EndpointId = 0x0, - [1659509320.717870][3165:3170] CHIP:DMG: ClusterId = 0x3e, - [1659509320.717947][3165:3170] CHIP:DMG: CommandId = 0x2, - [1659509320.718019][3165:3170] CHIP:DMG: }, - [1659509320.718116][3165:3170] CHIP:DMG: - [1659509320.718181][3165:3170] CHIP:DMG: CommandFields = - [1659509320.718273][3165:3170] CHIP:DMG: { - [1659509320.718436][3165:3170] CHIP:DMG: 0x0 = 1, - [1659509320.718521][3165:3170] CHIP:DMG: }, - [1659509320.718609][3165:3170] CHIP:DMG: }, - [1659509320.718706][3165:3170] CHIP:DMG: - [1659509320.718766][3165:3170] CHIP:DMG: ], - [1659509320.718855][3165:3170] CHIP:DMG: - [1659509320.718915][3165:3170] CHIP:DMG: InteractionModelRevision = 1 - [1659509320.718971][3165:3170] CHIP:DMG: }, - [1659509320.719024][3165:3170] CHIP:DMG: - [1659509320.719407][3165:3170] CHIP:DMG: ICR moving to [CommandSen] - [1659509320.719536][3165:3170] CHIP:DMG: ICR moving to [AwaitingDe] - [1659509320.719608][3165:3170] CHIP:EM: Sending Standalone Ack for MessageCounter:148943591 on exchange 17088i - [1659509320.720332][3165:3170] CHIP:IN: Prepared secure message 0xffff88e5c9e8 to 0xFFFFFFFB00000000 (0) of type 0x10 and protocolId (0, 0) on exchange 17088i with MessageCounter:86888460. - [1659509320.720493][3165:3170] CHIP:IN: Sending encrypted msg 0xffff88e5c9e8 with MessageCounter:86888460 to 0xFFFFFFFB00000000 (0) at monotonic time: 0000000000ADAD4E msec - [1659509320.721152][3165:3170] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0f:2753%eth0]:5540 | 86888460 | [Secure Channel (0) / Standalone Ack (0x10) / Session = 29587 / Exchange = 17088] - [1659509320.721242][3165:3170] CHIP:DMG: Header Flags = - [1659509320.721298][3165:3170] CHIP:DMG: { - [1659509320.721381][3165:3170] CHIP:DMG: Exchange (0x03) = - [1659509320.721434][3165:3170] CHIP:DMG: { - [1659509320.721505][3165:3170] CHIP:DMG: Initiator = true - [1659509320.721562][3165:3170] CHIP:DMG: AckMsg = 148943591 - [1659509320.721634][3165:3170] CHIP:DMG: } - [1659509320.721706][3165:3170] CHIP:DMG: } - [1659509320.721759][3165:3170] CHIP:DMG: - [1659509320.721846][3165:3170] CHIP:DMG: Encrypted Payload (34 bytes) = - [1659509320.721901][3165:3170] CHIP:DMG: { - [1659509320.721972][3165:3170] CHIP:DMG: data = 009373000cd02d05ff4214e467b1c7a3664b8d8c5628c4e291f833b9f2f35d953235 - [1659509320.722027][3165:3170] CHIP:DMG: buffer_ptr = 281472627939824 - [1659509320.722077][3165:3170] CHIP:DMG: } - [1659509320.722125][3165:3170] CHIP:DMG: - [1659509320.722485][3165:3170] CHIP:EM: Flushed pending ack for MessageCounter:148943591 on exchange 17088i - [1659509320.724260][3165:3170] CHIP:DMG: << from UDP:[fe80::e65f:1ff:fe0f:2753%eth0]:5540 | 148943592 | [Interaction Model (1) / InvokeCommandResponse (0x09) / Session = 49327 / Exchange = 17089] - [1659509320.724362][3165:3170] CHIP:DMG: Header Flags = - [1659509320.724417][3165:3170] CHIP:DMG: { - [1659509320.724503][3165:3170] CHIP:DMG: Exchange (0x06) = - [1659509320.724558][3165:3170] CHIP:DMG: { - [1659509320.724647][3165:3170] CHIP:DMG: AckMsg = 86888459 - [1659509320.724704][3165:3170] CHIP:DMG: NeedsAck = true - [1659509320.724756][3165:3170] CHIP:DMG: } - [1659509320.724827][3165:3170] CHIP:DMG: } - [1659509320.724879][3165:3170] CHIP:DMG: - [1659509320.724950][3165:3170] CHIP:DMG: Encrypted Payload (559 bytes) = - [1659509320.725003][3165:3170] CHIP:DMG: { - [1659509320.725056][3165:3170] CHIP:DMG: data = 00afc000e8b2e008b40e7ea031654ba52d0e71f9a877ec233377ef9eef00611412271b31992e30753df53f0bfac6b5f9a30217f67d03a17653c5ee991a0266f3ef286188e3f977d3dd94fbbb60323a74c2b685309d607af14c0b4c7214c7579cf43e9ed90d4256382e5d40bc46796e06fdb6b220bbc5e7b6fc812f2c5bc357fcbda79d6dcb464f42d04ab1708fdfb5ea8b90c3720257e9da78ba877b24b99d7f104c4ee199923c876d8c07903beab5f93a784f226d1e82f8d5f001f23457965c9ddbcc8661d00b7202a9932b1ae92ff36d80b8e5ac2d18d65e8a3957486ef86ca4f056218677958f9be17ab6c54d3dedb7e88a144ef607f692d3131276dbb2803e6e93dc5d330ef13b0e00289e6a9186e1f1c0e5b9615ace2c1d544f4b6bc58f700b47a11fc2278977b2a1595c96532daefe44db899e3f75f473ffbf4ac1e93ba76033dfa562beedf4b9a5fe9b985e6a0227efdcf5ced1b966bd78addb1ad5950c6378dc149a6372888683a8539a4d59958c7460b1968b0d8dcfa2d3660dc07c4e0e44095ef14c4cdd249727caad086e8630f9df296d8fa426f01f58f532ac1a91cb1da874055711edd4f13c722a0e66f850d0f455c09fbc2c049852ec936545b2bf2798f9c614e4488707a1f38fee8c08fe3c886fd89d9e3578fad68077133c7e086d5ba7df2a7323d10f03602d46c1e172e993fd3b6d5d468b7da8dc315711d53ded3ab7f38f7517f23394c7c9438ce5726449cca510956add995f76140fe3bd0a63ea024058898635373e68e9e3 - [1659509320.725163][3165:3170] CHIP:DMG: buffer_ptr = 281472627931376 - [1659509320.725214][3165:3170] CHIP:DMG: } - [1659509320.725263][3165:3170] CHIP:DMG: - [1659509320.725501][3165:3170] CHIP:DMG: DAC/PAI (491) = - [1659509320.725616][3165:3170] CHIP:DMG: { - -----BEGIN CERTIFICATE----- - MIIB5zCCAY6gAwIBAgIIac3xDenlTtEwCgYIKoZIzj0EAwIwPTElMCMGA1UEAwwc - TWF0dGVyIERldiBQQUkgMHhGRkYxIG5vIFBJRDEUMBIGCisGAQQBgqJ8AgEMBEZG - RjEwIBcNMjIwMjA1MDAwMDAwWhgPOTk5OTEyMzEyMzU5NTlaMFMxJTAjBgNVBAMM - HE1hdHRlciBEZXYgREFDIDB4RkZGMS8weDgwMDExFDASBgorBgEEAYKifAIBDARG - RkYxMRQwEgYKKwYBBAGConwCAgwEODAwMTBZMBMGByqGSM49AgEGCCqGSM49AwEH - A0IABEY6xpNCkQoOVYj8b/Vrtj5i7M7LFI99TrA+5VJgFBV2fRalxmP3k+SRIyYL - gpenzX58/HsxaznZjpDSk3dzjoKjYDBeMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/ - BAQDAgeAMB0GA1UdDgQWBBSI3eezADgpMs/3NMBGJIEPRBaKbzAfBgNVHSMEGDAW - gBRjVA5H9kscONE4hKRi0WwZXY/7PDAKBggqhkjOPQQDAgNHADBEAiABJ6J7S0Rh - DuL83E0reIVWNmC8D3bxchntagjfsrPBzQIga1ngr0Xz6yqFuRnTVzFSjGAoxBUj - lUXhCOTlTnCXE1M= - -----END CERTIFICATE----- - [1659509320.725847][3165:3170] CHIP:DMG: } - [1659509320.725898][3165:3170] CHIP:DMG: - [1659509320.725961][3165:3170] CHIP:DMG: - [1659509320.726043][3165:3170] CHIP:DMG: Additional Fields = - [1659509320.726099][3165:3170] CHIP:DMG: { - [1659509320.726158][3165:3170] CHIP:DMG: peer_address = UDP:[fe80::e65f:1ff:fe0f:2753%eth0]:5540 - [1659509320.726215][3165:3170] CHIP:DMG: } - [1659509320.726265][3165:3170] CHIP:DMG: - [1659509320.726334][3165:3170] CHIP:EM: Received message of type 0x9 with protocolId (0, 1) and MessageCounter:148943592 on exchange 17089i - [1659509320.726446][3165:3170] CHIP:EM: Found matching exchange: 17089i, Delegate: 0xffff74009c78 - [1659509320.726534][3165:3170] CHIP:EM: Rxd Ack; Removing MessageCounter:86888459 from Retrans Table on exchange 17089i - [1659509320.726594][3165:3170] CHIP:EM: Removed CHIP MessageCounter:86888459 from RetransTable on exchange 17089i - [1659509320.726669][3165:3170] CHIP:DMG: ICR moving to [ResponseRe] - [1659509320.726761][3165:3170] CHIP:DMG: InvokeResponseMessage = - [1659509320.726818][3165:3170] CHIP:DMG: { - [1659509320.726876][3165:3170] CHIP:DMG: suppressResponse = false, - [1659509320.726934][3165:3170] CHIP:DMG: InvokeResponseIBs = - [1659509320.727010][3165:3170] CHIP:DMG: [ - [1659509320.727068][3165:3170] CHIP:DMG: InvokeResponseIB = - [1659509320.727154][3165:3170] CHIP:DMG: { - [1659509320.727217][3165:3170] CHIP:DMG: CommandDataIB = - [1659509320.727291][3165:3170] CHIP:DMG: { - [1659509320.727362][3165:3170] CHIP:DMG: CommandPathIB = - [1659509320.727442][3165:3170] CHIP:DMG: { - [1659509320.727523][3165:3170] CHIP:DMG: EndpointId = 0x0, - [1659509320.727607][3165:3170] CHIP:DMG: ClusterId = 0x3e, - [1659509320.727698][3165:3170] CHIP:DMG: CommandId = 0x3, - [1659509320.727777][3165:3170] CHIP:DMG: }, - [1659509320.727857][3165:3170] CHIP:DMG: - [1659509320.727928][3165:3170] CHIP:DMG: CommandFields = - [1659509320.728004][3165:3170] CHIP:DMG: { - [1659509320.728081][3165:3170] CHIP:DMG: 0x0 = [ - [1659509320.728404][3165:3170] CHIP:DMG: 0x30, 0x82, 0x1, 0xe7, 0x30, 0x82, 0x1, 0x8e, 0xa0, 0x3, 0x2, 0x1, 0x2, 0x2, 0x8, 0x69, 0xcd, 0xf1, 0xd, 0xe9, 0xe5, 0x4e, 0xd1, 0x30, 0xa, 0x6, 0x8, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x4, 0x3, 0x2, 0x30, 0x3d, 0x31, 0x25, 0x30, 0x23, 0x6, 0x3, 0x55, 0x4, 0x3, 0xc, 0x1c, 0x4d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x20, 0x44, 0x65, 0x76, 0x20, 0x50, 0x41, 0x49, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x31, 0x20, 0x6e, 0x6f, 0x20, 0x50, 0x49, 0x44, 0x31, 0x14, 0x30, 0x12, 0x6, 0xa, 0x2b, 0x6, 0x1, 0x4, 0x1, 0x82, 0xa2, 0x7c, 0x2, 0x1, 0xc, 0x4, 0x46, 0x46, 0x46, 0x31, 0x30, 0x20, 0x17, 0xd, 0x32, 0x32, 0x30, 0x32, 0x30, 0x35, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x18, 0xf, 0x39, 0x39, 0x39, 0x39, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x53, 0x31, 0x25, 0x30, 0x23, 0x6, 0x3, 0x55, 0x4, 0x3, 0xc, 0x1c, 0x4d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x20, 0x44, 0x65, 0x76, 0x20, 0x44, 0x41, 0x43, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x31, 0x2f, 0x30, 0x78, 0x38, 0x30, 0x30, 0x31, 0x31, 0x14, 0x30, 0x12, 0x6, 0xa, 0x2b, 0x6, 0x1, 0x4, 0x1, 0x82, 0xa2, 0x7c, 0x2, 0x1, 0xc, 0x4, 0x46, 0x46, 0x46, 0x31, 0x31, 0x14, 0x30, 0x12, 0x6, 0xa, 0x2b, 0x6, 0x1, 0x4, 0x1, 0x82, 0xa2, 0x7c, 0x2, 0x2, 0xc, 0x4, 0x38, 0x30, 0x30, 0x31, 0x30, 0x59, 0x30, 0x13, 0x6, 0x7, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x2, 0x1, 0x6, 0x8, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x3, 0x1, 0x7, 0x3, 0x42, 0x0, 0x4, 0x46, 0x3a, 0xc6, 0x93, 0x42, 0x91, 0xa, 0xe, 0x55, 0x88, 0xfc, 0x6f, 0xf5, 0x6b, 0xb6, 0x3e, 0x62, 0xec, 0xce, 0xcb, 0x14, 0x8f, 0x7d, 0x4e, 0xb0, 0x3e, 0xe5, 0x52, 0x60, 0x14, 0x15, 0x76, 0x7d, 0x16, 0xa5, 0xc6, 0x63, 0xf7, 0x93, 0xe4, 0x91, 0x23, 0x26, 0xb, 0x82, 0x97, 0xa7, 0xcd, 0x7e, 0x7c, 0xfc, 0x - [1659509320.728579][3165:3170] CHIP:DMG: ] (491 bytes) - [1659509320.728664][3165:3170] CHIP:DMG: }, - [1659509320.728738][3165:3170] CHIP:DMG: }, - [1659509320.728818][3165:3170] CHIP:DMG: - [1659509320.728879][3165:3170] CHIP:DMG: }, - [1659509320.728952][3165:3170] CHIP:DMG: - [1659509320.729010][3165:3170] CHIP:DMG: ], - [1659509320.729082][3165:3170] CHIP:DMG: - [1659509320.729140][3165:3170] CHIP:DMG: InteractionModelRevision = 1 - [1659509320.729197][3165:3170] CHIP:DMG: }, - [1659509320.729335][3165:3170] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0003 - [1659509320.729409][3165:3170] CHIP:CTL: Received certificate chain from the device - [1659509320.729476][3165:3170] CHIP:CTL: Successfully finished commissioning step "SendDACCertificateRequest" - - - - - - "1. Save the DAC value from commissioning log of TH in the file as below - vi dac.pem + 1. From the dac.pem file saved above step, print the contents on the console using "openssl x509 -in dac.pem -text" as shown below. - 2. Give the below command to extract the Authority key ID + 2. extract the Authority key ID and save the public key as pk1 openssl x509 -in dac.pem -text Below certificate has been extracted using the sample DUT, hence the Authority key ID is same as SDK"s test PAA @@ -656,6 +423,7 @@ tests: [1659415377.223908][2666:2671] CHIP:CTL: Received certificate chain from the device [1659415377.224018][2666:2671] CHIP:CTL: Successfully finished commissioning step "SendPAICertificateRequest" + To extract public key follow the below procedure and save the public key as pk2, make sure the pk2 doesn"t match pk1 in step 5 "1. Save the PAI value from commissioning log of TH in the file as below vi pai_6.pem @@ -663,7 +431,11 @@ tests: 2. Give the below command to extract the Authority key ID openssl x509 -in pai_6.pem -text - Below certificate has been extracted using the sample DUT, hence the Authority key ID is same as SDK"s test PAA + Below certificate has been extracted using the sample DUT, hence the Authority key ID is same as in SDK"s test PAA certs + + 3. Extract the public key Public-Key: (256 bit) from the below cert + + 4. Verify that pk_1 does not match with the pk_2 grl@grl-ThinkPad-L480:~/jul14_2ndcntrl/connectedhomeip$ openssl x509 -in pai_6.pem -text Certificate: @@ -715,10 +487,3 @@ tests: i+oDPOUDAiAlVJQ75X1T1sR199I+v8/CA2zSm6Y5PsfvrYcUq3GCGQ== -----END CERTIFICATE----- disabled: true - - - label: - "Repeat Step 1 to 4 with DUT2, saving the PAI, DAC and public key as - pk_2" - verification: | - verification step to be updated. - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_12.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_12.yaml index 78dfc1daa202ef..a71ae7c5d1d491 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_1_12.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_1_12.yaml @@ -28,6 +28,11 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + 1 - 5.1.3 - QR code/ Manual Pairing Code is printed on the device or in additional provided materials (ex: manual) + disabled: true + - label: "Scan the DUTs QR code using the TH." verification: | 1. Run DUT. Example for DUT=all-clusters-app @@ -47,6 +52,9 @@ tests: 2. Parse onboarding payload using TH=chip-tool $ ./chip-tool payload parse-setup-payload MT:-24J0AFN00KA0648G00 + + Verify in TH as commissioner side: + [1657214153060] [29000:16610528] CHIP: [SPL] Parsing base38Representation: MT:-24J0AFN00KA0648G00 [1657214153060] [29000:16610528] CHIP: [SPL] Version: 0 [1657214153060] [29000:16610528] CHIP: [SPL] VendorID: 65521 @@ -57,25 +65,17 @@ tests: [1657214153060] [29000:16610528] CHIP: [SPL] Passcode: 20202021 disabled: true - - label: - "Verify that the TH presents the user with a pairing hint in the - CommissioningModeInitialStepsHint field of the DCL. Verify that the - CommissioningCustomFlow field is set to a value = 0" - verification: | - 1. Verify CommissioningCustomFlow=0 - 2. Verify CommissioningModeInitialStepsHint contains a valid, non-zero integer = 1 for Standard Commissioning flow - disabled: true - - - label: - "If CommissioningCustomFlow field in Step 2 = 0 (Standard - Commissioning Flow), reboot the DUT device" + - label: "Reboot the DUT device." verification: | 1. Verify DUT is advertising in commissioning mode. On DUT, verify through commissioning + Verify in TH as commissioner side: + $ ./chip-tool pairing code 1 MT:-24J0AFN00KA0648G00 ... [1657214364908] [29006:16612760] CHIP: [CTL] Starting commissioning discovery over DNS-SD - [1657214364908] [29006:16612760] CHIP: [DL] Browsing for: _matterc._udp,_L3840 [1657214365080] [29006:16612761] CHIP: [DL] Mdns: OnBrowseAdd name: E5EFE5FB9DC494B9, type: _matterc._udp., domain: local., interface: 7 [1657214365080] [29006:16612761] CHIP: [DL] Resolve type=_matterc._udp name=E5EFE5FB9DC494B9 interface=7 + [1657214364908] [29006:16612760] CHIP: [DL] Browsing for: _matterc._udp,_L3840 + [1657214365080] [29006:16612761] CHIP: [DL] Mdns: OnBrowseAdd name: E5EFE5FB9DC494B9, type: _matterc._udp., domain: local., interface: 7 [1657214365080] [29006:16612761] CHIP: [DL] Resolve type=_matterc._udp name=E5EFE5FB9DC494B9 interface=7 [1657214365080] [29006:16612761] CHIP: [DL] Mdns : OnNewInterface hostname:DCA6328D2B9F0000.local. fullname:E5EFE5FB9DC494B9._matterc._udp.local. interface: 7 [1657214365082] [29006:16612761] CHIP: [DL] Mdns: OnNewAddress interface: 7 ip:fd54:23a1:c6de:4637:4c4:ee82:2a0f:b5e2 [1657214365082] [29006:16612761] CHIP: [DL] Mdns: OnNewAddress interface: 7 ip:fe80::1e81:3e0:3865:2d29 [1657214365082] [29006:16612761] CHIP: [DL] Mdns: OnNewAddress interface: 7 ip:192.168.1.10 diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_13.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_13.yaml index ad93647feb9eb4..f0422326fb99a3 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_1_13.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_1_13.yaml @@ -28,11 +28,17 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + 1 - 5.1.3 - QR code/ Manual Pairing Code is printed on the device or in additional provided materials (ex: manual) + disabled: true + - label: "Power on the DUT device." verification: | 1. Verify DUT is NOT advertising in commissioning mode. On DUT, the DUT should not show up $ ./chip-tool discover commissionables + TH Commissioner should not discover the DUT here disabled: true - label: "Scan the DUTs QR code from the previous step using the TH." @@ -42,6 +48,8 @@ tests: 2. Parse onboarding payload using TH=chip-tool $ ./chip-tool payload parse-setup-payload MT:-24J0AFN00KA0648G00 + + Verify in TH as commissioner side: [1651193251086] [15494:447566] CHIP: [SPL] Parsing base38Representation: MT:-24J0AFN00KA0648G00 [1651193251087] [15494:447566] CHIP: [SPL] CommissioningFlow: 1 [1651193251087] [15494:447566] CHIP: [SPL] VendorID: 65521 @@ -53,23 +61,16 @@ tests: disabled: true - label: - "Verify that the TH presents the user with a pairing hint in the - CommissioningModeInitialStepsHint field of the DCL. Verify that the - CommissioningCustomFlow field is set to a value = 1" - verification: | - 1. Verify CommissioningCustomFlow=1 - 2. Verify CommissioningModeInitialStepsHint contains a valid, non-zero integer - disabled: true - - - label: - "Follow any steps from the resources provided by the pairing hint for - putting the DUT Commissionee into commissioning mode" + "Follow any DUT-specific steps for putting the DUT Commissionee into + commissioning mode" verification: | 1. Follow vendor-specific steps from the pairing hint to put DUT into commissioning mode 2. Verify DUT is advertising in commissioning mode. On DUT, $ ./chip-tool discover commissionables + Verify in TH as commissioner side: + [1651192893436] [15304:442604] CHIP: [DL] Mdns: OnNewAddress interface: 24 ip:fe80::dea6:32ff:fe8d:6e32 [1651192893436] [15304:442604] CHIP: [DIS] Vendor ID: 65521 [1651192893436] [15304:442604] CHIP: [DIS] Product ID: 32769 diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_14.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_14.yaml index 5635299f36e5ac..37dea4cf954852 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_1_14.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_1_14.yaml @@ -28,11 +28,17 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + 1 - 5.1.3 - QR code/ Manual Pairing Code is printed on the device or in additional provided materials (ex: manual) + disabled: true + - label: "Power on the DUT device." verification: | 1. Verify DUT is NOT advertising in commissioning mode. On DUT, the DUT should not show up $ ./chip-tool discover commissionables + TH Commissioner should not discover the DUT here disabled: true - label: "Scan the DUTs QR code from the previous step using the TH." @@ -42,6 +48,8 @@ tests: 2. Parse onboarding payload using TH=chip-tool $ ./chip-tool payload parse-setup-payload MT:-24J0AFN00KA0648G00 + Verify in TH as commissioner side: + [1651193251086] [15494:447566] CHIP: [SPL] Parsing base38Representation: MT:-24J0AFN00KA0648G00 [1651193251087] [15494:447566] CHIP: [SPL] CommissioningFlow: 2 [1651193251087] [15494:447566] CHIP: [SPL] VendorID: 65521 @@ -53,24 +61,17 @@ tests: disabled: true - label: - "Verify that the TH presents User with a URL in the - CommissioningCustomFlowUrl field of the DCL. Verify that the - CommissioningCustomFlow field is set to a value = 2" + "Follow any DUT-specific steps, guided by a service provided by the + DUTs manufacturer for initial device setup, then place the DUT + Commissionee into commissioning mode." verification: | - 1. Verify CommissioningCustomFlow=2 - 2. Verify CommissioningModeInitialStepsHint has bit 0 (Power Cycle) set to 0 and bit 1 (Device Manufacturer URL) set to 1 - 3. Verify CommissioningModeInitialStepsHint contains a valid, non-zero integer - disabled: true - - - label: - "Follow any steps from the URL provided by the pairing hint in the DCL - for putting the DUT Commissionee into commissioning mode" - verification: | - 1. Follow vendor-specific steps from the pairing hint to put DUT into commissioning mode + 1. Follow DUT vendor-specific steps to put DUT into commissioning mode 2. Verify DUT is advertising in commissioning mode. On DUT, $ ./chip-tool discover commissionables + Verify in TH as commissioner side: + [1651192893436] [15304:442604] CHIP: [DL] Mdns: OnNewAddress interface: 24 ip:fe80::dea6:32ff:fe8d:6e32 [1651192893436] [15304:442604] CHIP: [DIS] Vendor ID: 65521 [1651192893436] [15304:442604] CHIP: [DIS] Product ID: 32769 diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_15.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_15.yaml index 7733f987ba9128..35e8f4f6d594e2 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_1_15.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_1_15.yaml @@ -26,6 +26,11 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + 1 - 5.1 - Onboarding payload is printed on the device or in additional provided materials (ex: manual) through a QR Code, a manually entered code or as content in an NFC tag. + disabled: true + - label: "Using the TH Onboarding payload reader, scan or read the Onboarding payload from DUT1" @@ -33,6 +38,8 @@ tests: 1. Parse payload for DUT1 $ ./chip-tool payload parse-setup-payload MT:-24J0AFN00KA0648G00 + Verify in TH as commissioner side: + [1651194471211] [16050:465158] CHIP: [SPL] Parsing base38Representation: MT:-24J0AFN00KA0648G00 [1651194471211] [16050:465158] CHIP: [SPL] CommissioningFlow: 0 [1651194471211] [16050:465158] CHIP: [SPL] VendorID: 65521 @@ -58,6 +65,8 @@ tests: 1. Parse payload for DUT2 $ ./chip-tool payload parse-setup-payload MT:-24J0IRV01WCCN68G00 + Verify in TH as commissioner side: + [1651194577916] [16053:466154] CHIP: [SPL] Parsing base38Representation: MT:-24J0IRV01WCCN68G00 [1651194577916] [16053:466154] CHIP: [SPL] CommissioningFlow: 0 [1651194577916] [16053:466154] CHIP: [SPL] VendorID: 65521 diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_5.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_5.yaml index f2b6606fc1ce17..ef616a60cd51e5 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_1_5.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_1_5.yaml @@ -27,11 +27,23 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + 1 - 5.1.7 - NFC Spec Requirements: NFC tags SHALL use the NFC Data Exchange Format (NDEF) as defined by NFC ForumTM in [NDEF 1.0 NFCForum-TS-NDEF 1.0] + + An NDEF message is defined as a group of individual NDEF records as defined by NFC ForumTM in NFC Record Type Definition (RTD) RTD 1.0 [NFCForum-TS-RTD 1.0] + + Onboarding Payload for NFC tags SHALL use NDEF URI Record Type Definition as defined by NFC ForumTM in URI Record Type Definition RTD-URI 1.0 [NFCForum-TS-RTD URI 1.0]. The URI for defined in section 3.3 Format + disabled: true + - label: "Keep the DUT in packaging and bring in TH NFC scanner close to the DUT packaging." verification: | - Vendor specific field verification + 1. Using an NFC Scanner, physically bring the scanner close to the DUT in it"s packaging. + 2. NFC Scanner should not be able to read the Onboarding Payload from the DUT"s NFC tag. + + Note: chip-tool does not support physically scanning an NFC tag disabled: true - label: @@ -39,7 +51,10 @@ tests: not put the DUT in pairing mode. Bring in TH NFC scanner close to the DUTs NFC tag" verification: | - Vendor specific field verification + 1. Using an NFC Scanner, physically bring the scanner close to the DUT that is out of it"s packaging. + 2. NFC Scanner should not be able to read the Onboarding Payload from the DUT"s NFC tag. + + Note: chip-tool does not support physically scanning an NFC tag disabled: true - label: @@ -47,13 +62,19 @@ tests: scanner close to the DUTs NFC tag" PICS: MCORE.DD.PHYSICAL_TAMPERING verification: | - Vendor specific field verification + 1. Power on the DUT. + 2. Using an NFC Scanner, physically bring the scanner close to the DUT. + 3. NFC Scanner should not be able to read the Onboarding Payload from the DUT"s NFC tag. + + Note: chip-tool does not support physically scanning an NFC tag disabled: true - label: "DUT must have an explicit trigger of the the NFC pairing mode" PICS: MCORE.DD.PHYSICAL_TAMPERING verification: | - Vendor specific field verification + 1. Manually verify that the DUT has an explicit trigger (a physical action that enables the NFC pairing flow). + + Note: chip-tool does not support physically scanning an NFC tag disabled: true - label: @@ -61,40 +82,68 @@ tests: close to NFC tag" PICS: MCORE.DD.PHYSICAL_TAMPERING verification: | - Vendor specific field verification + 1. Power on the DUT. + 2. Put the DUT into pairing mode. + 2. Using an NFC Scanner, physically bring the scanner close to the DUT + 3. NFC Scanner should be able to read the Onboarding Payload from the DUT"s NFC tag. + + Note: chip-tool does not support physically scanning an NFC tag disabled: true - label: "Power on DUT. Bring in NFC scanner close to NFC tag" PICS: MCORE.DD.PHYSICAL_TAMPERING verification: | - Vendor specific field verification + 1. Power on the DUT. + 2. Using an NFC Scanner, physically bring the scanner close to the DUT. + 3. NFC Scanner should be able to read the Onboarding Payload from the DUT"s NFC tag. + + Note: chip-tool does not support physically scanning an NFC tag disabled: true - label: "Wait for the pairing mode to expire on device" verification: | - Vendor specific field verification + 1. After pairing mode expires on the DUT, verify that the NFC Scanner cannot read advertisements from the DUT. + + Note: chip-tool does not support physically scanning an NFC tag disabled: true - label: "For Read only Tags, try to write using NFC tool a payload to DUT" verification: | - Vendor specific field verification + 1. Using an NFC-programmer tool, attempt to write a payload to the DUT"s NFC tag + 2. DUT should reject the attempt and the NFC tag should not have been written to. + + Note: chip-tool does not support physically scanning an NFC tag disabled: true - label: "For Programmable Tag, NFC tag must be read only OTA. Try to write a payload to DUT using NFC tool" verification: | - Vendor specific field verification + 1. Using an NFC-programmer tool, attempt to write a payload to the DUT"s NFC tag + 2. DUT should reject the attempt and the NFC tag should not have been written to. + + Note: chip-tool does not support physically scanning an NFC tag disabled: true - label: "Optional For Programmable Tag, NFC tag may be reconfigured using wired means" verification: | - Vendor specific field verification + 1. This is vendor-specific, attempt to write a payload to the DUT"s NFC tag by way of a physical wired connection. + 2. DUT"s NFC tag should have been written to. + + Note: chip-tool does not support physically scanning an NFC tag disabled: true - label: "Using TH NFC scanner - read NFC tag Reader type" verification: | - Vendor specific field verification + 1. Using an NFC Scanner, physically bring the scanner close to the DUT + 2. DUT"s NFC tag should have a Reader type equal to 2 or greater + + Note: chip-tool does not support physically scanning an NFC tag + disabled: true + + - label: "" + verification: | + verification step to be updated. disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_6.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_6.yaml index b1de25771fb85c..721c334cf07c80 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_1_6.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_1_6.yaml @@ -25,12 +25,26 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + Final label of DUT is ready to be scanned + disabled: true + - label: "Scan the DUTs QR code using the TH QR code reader" verification: | - Vendor specific field testcase + 1. Scan the QR code with a QR Code scanning device. + 2. Vendor specific field testcase that should be manually verified using the requirements in the Expected Outcome. disabled: true - label: "Verify QR code version" verification: | - Vendor specific field verification + 1. Manually verify the QR code version by referring to section 5.1.3.2 "QR Code Format" of the spec document to ensure it follows the ISO/IEC 18004:2015 (https://www.iso.org/standard/62021.html) specifications with accurate: + - Module size + - ECC Level + - Alphanumeric capacity + - Total available payload, excluding prefix (bits) + - Available payload for TLV data (bits) + 2. Vendor specific field test case that should be manually verified using the requirements in the Expected Outcome. + + Note: chip-tool is not used to verify this test step disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_7.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_7.yaml index 6bfb9187288b34..9f2689fe3b10bb 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_1_7.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_1_7.yaml @@ -25,7 +25,12 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + 1 - 5.1.4.2 - Manual Pairing Code is printed on the device or in additional provided materials (ex: manual)" + disabled: true + - label: "Verify using instruments" verification: | - Vendor specific field testcase + Vendor specific field testcase that should be manually verified using the requirements in the Expected Outcome. disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_8.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_8.yaml index 26a0b7563571df..7f8cc8a2de63d2 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_1_8.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_1_8.yaml @@ -27,11 +27,41 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - 5.1.3 - QR code is printed on the device or in additional provided materials (ex: manual). Device also has additional TLV data with a non-zero length appended to the end of the QR code. + + An example onboarding QR code could be "MT:-24J029Q00KA064IJ3P0IXZB0DK5N1K8SQ1RYCU1-A40" (following 5.1.3 "QR Code", Table 34 "Packed Binary Data Structure for Onboarding Payload") which includes: + + - 3-bit Version String=000 + + - 16-bit Vendor ID=0xFFF1 (as defined in section 2.5.2. "Vendor Identifier") + + - 16-bit Product ID=0x8001 (as defined in section 2.5.3. "Product Identifier") + + - 2-bit Custom Flow=10 (Custom Commissioning Flow = 2) + + - 8-bit Discovery Capabilities Bitmask=00000100 (OnNetwork) + + - 12-bit Discriminator=0xF00 + + - 27-bit Passcode=20202021 + + - 4-bit Padding=0000 + + - TLV Data=0x152C000A3132333435363738393018 included (as defined in section 5.1.3.1. "Payload", subsection "TLV Data") + disabled: true + - label: "Scan the TH Devices QR code using DUT" PICS: MCORE.DD.SCAN_QR_CODE verification: | 1. Get the QR code from the TH - ubuntu@matter-7:~/Apr18_dut/connectedhomeip/examples/all-clusters-app/linux/out/all-clusters-app$ sudo ./chip-all-clusters-app --wifi + $ sudo ./chip-all-clusters-app --wifi [13293:13293] CHIP:DL: Device Configuration: [1653306603.740569][13293:13293] CHIP:DL: Serial Number: TEST_SN @@ -67,9 +97,9 @@ tests: 2. Parse the DUT"s QR Code using the TH commissioner: chip-tool - ubuntu@matter-7:~/Apr18_cntrl/connectedhomeip/examples/chip-tool/out/debug$ ./chip-tool payload parse-setup-payload MT:-24J048N01KA0648G00 + $ ./chip-tool payload parse-setup-payload MT:-24J048N01KA0648G00 - Verify in DUT as client side: + Verify in DUT as commissioner side: [1650266365.939678][10146:10146] CHIP:SPL: CommissioningFlow: 2 [1650266365.939704][10146:10146] CHIP:SPL: VendorID: 65521 [1650266365.939724][10146:10146] CHIP:SPL: Version: 0 @@ -84,8 +114,8 @@ tests: the Matter network." verification: | ./chip-tool pairing code 1 MT:-24J042C00KA0648G00 - - Verify in DUT as client side: + No applicable TH logs. + Verify in DUT as commissioner side: CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0005 CHIP:CTL: Received CommissioningComplete response, errorCode=0 CHIP:CTL: Successfully finished commissioning step "SendComplete" @@ -102,14 +132,16 @@ tests: MT:-24J029Q00KA064IJ3P0IXZB0DK5N1K8SQ1RYCU1-A40." PICS: MCORE.DD.SCAN_QR_CODE verification: | - 1. Get QR code from TH as server side: + 1. Launch the TH commissionee app and get QR code from TH side + Verify in TH as commissionee side: + $ ./out/all-clusters-app/chip-all-clusters-app ... [1657211128.302755][365927:365927] CHIP:SVR: SetupQRCode: [MT:-24J029Q00KA0648G00] [1657211128.302783][365927:365927] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: [1657211128.302804][365927:365927] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J029Q00KA0648G00 - 2. Build TLV Data into TH"s QR code + 2. Build TLV Data into TH"s QR code using chip-tool"s generate-qrcode command $ ./chip-tool payload generate-qrcode --existing-payload MT:-24J029Q00KA0648G00 --tlvBytes hex:152C000A3132333435363738393018 [1657211213125] [28612:16578643] CHIP: [TOO] QR Code: MT:-24J029Q00KA064IJ3P0IXZB0DK5N1K8SQ1RYCU1-A40 disabled: true @@ -120,7 +152,7 @@ tests: verification: | ./chip-tool pairing code 1 MT:-24J0AFN00KA064IJ3P0IXZB0DK5N1K8SQ1RYCU1-A40 - Verify in DUT as client side: + Verify in DUT as commissioner side: [1657210956708] [28601:16575811] CHIP: [CTL] Received CommissioningComplete response, errorCode=0 [1657210956708] [28601:16575811] CHIP: [CTL] Successfully finished commissioning step "SendComplete" [1657210956708] [28601:16575811] CHIP: [CTL] Commissioning stage next step: "SendComplete" -> "Cleanup" @@ -139,9 +171,13 @@ tests: tag 0x82, length 0x03e8)" PICS: MCORE.DD.SCAN_QR_CODE verification: | + No applicable TH logs. + + 1. Launch the TH commissionee app and get QR code from TH side $ ./out/all-clusters-app/chip-all-clusters-app - 1. To generate the QR code containing the 1000-byte TLV data, use the following command and piece together the 2 log lines of output. NOTE: The finished QR code is in the Test step already. + 2. Build TLV Data into TH"s QR code using chip-tool"s generate-qrcode command. To generate the QR code containing the 1000-byte TLV data, use the following command and piece together the 2 log lines of output. + NOTE: The finished QR code is in the verification step already. ./chip-tool payload generate-qrcode --existing-payload MT:-24J0AFN00KA0648G00 --tlvBytes hex:152d82e8033132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393018 [1659491902.799305][3965:3965] CHIP:TOO: QR Code: MT:-24J0AFN00KA064IJ3P0JFQB7TZZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1Z @@ -155,10 +191,20 @@ tests: verification: | ./chip-tool pairing code 1 MT:-24J0AFN00KA064IJ3P0JFQB7TZZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T11UXS0 - Verify in TH as server side: + Verify in TH as commissionee side: [1659491845.473705][3953:3953] CHIP:SVR: Commissioning completed successfully - Verify on the DUT as client side: + Verify in DUT as commissioner side: [1659491845308] [14021:5374393] CHIP: [TOO] Device commissioning completed with success disabled: true + + - label: "" + verification: | + verification step to be updated. + disabled: true + + - label: "" + verification: | + verification step to be updated. + disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_2_1.yaml b/src/app/tests/suites/certification/Test_TC_DD_2_1.yaml index be9a358ee1bb8f..389197ac1e2d81 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_2_1.yaml @@ -25,12 +25,18 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + 1 - The DUT is switched on and the DUT is transport-connected (BLE, Wi-Fi or Ethernet) + disabled: true + - label: "If TH knows the DUTs Discovery Capability Bitmask, it starts the commissioning process in any order of priority on all of the networking technologies that are supported by both the TH and the DUT" verification: | TH selects the DUT"s capability bitmask and start the commissiong process accordingly + No applicable TH or DUT logs. disabled: true - label: @@ -42,6 +48,7 @@ tests: verification: | If (PICS_CHIP_DEV) BLE discovery tool should discover the DUT else it should not If !(PICS_CHIP_DEV) instruct DUT to start Advertising and scan again for commissionale devices using the BLE discovery tool + No applicable TH or DUT logs. 1. Discover commissionables over BLE using a BLE discovery tool of choice. Try NRF Connect app (https://www.nordicsemi.com/Products/Development-tools/nrf-connect-for-desktop) @@ -52,12 +59,16 @@ tests: - label: "TH does not respond to DUT and DUT keeps sending ADVs" PICS: MCORE.COM.BLE verification: | + Verify in DUT as commissionee side: + [5855][P][DIS]Advertise commission parameter vendorID=65521 productID=32773 discriminator=3840/15 disabled: true - label: "TH does not respond to DUT and DUT keeps sending ADVs" PICS: MCORE.COM.BLE verification: | + No applicable TH or DUT logs. + This step can be verified using a BLE discovery tool of choice. Try NRF Connect app (https://www.nordicsemi.com/Products/Development-tools/nrf-connect-for-desktop) OR @@ -67,9 +78,10 @@ tests: - label: "TH does not respond to DUT and DUT keeps sending ADVs" PICS: MCORE.COM.BLE verification: | - This step can be verified using BLE discovery tool of choice (Try NRF Connect OR HCIDump) + This BLE advertisements can be verified using BLE discovery tool of choice (Try NRF Connect OR HCIDump) ->For T0 and 30s we have to get advertisement range between 20ms to 60ms ->For 30s and 15mins we have to get advertisement range between 150ms to 1200ms + Verify in DUT as commissionee side: I: 3242 [DL]CHIPoBLE advertising started I: 3279 [DL]NFC Tag emulation started @@ -86,6 +98,7 @@ tests: After 900s (that is 15min) advertisement stops + Verify in DUT as commissionee side: D: 903154 [DIS]Scheduling extended discovery timeout in 900s E: 903160 [DIS]Failed to finalize service update: Error CHIP:0x0000001C @@ -97,6 +110,8 @@ tests: - label: "TH does not respond to DUT. User power cycles the DUT" PICS: MCORE.COM.BLE verification: | + 1. Reboot the DUT commissionee + sudo reboot disabled: true @@ -106,6 +121,7 @@ tests: PICS: MCORE.COM.BLE verification: | Check timestamp, ADV stop after 15 mins + Verify in DUT as commissionee side: D: 903154 [DIS]Scheduling extended discovery timeout in 900s E: 903160 [DIS]Failed to finalize service update: Error CHIP:0x0000001C @@ -140,6 +156,7 @@ tests: mandatory Commissionable Node Discovery service records over DNS-SD." verification: | $ ./chip-tool discover commissionables + Verify in TH as commissioner side: Example output using all-clusters-app"s advertisements: [1651256405894] [18453:593886] CHIP: [DL] Mdns: OnNewAddress interface: 7 ip:192.168.1.2 @@ -166,8 +183,9 @@ tests: MCORE.DD.TXT_KEY_RI && MCORE.DD.TXT_KEY_PH && MCORE.DD.TXT_KEY_PI verification: | $ ./chip-tool discover commissionables + Verify in TH as commissioner side: - Example output using all-clusters-app"s advertisements: + Example output using all-clusters-app"s advertisements found on the TH commissioner: [1657218902314] [29617:16663220] CHIP: [DL] Browsing for: _matterc._udp [1657218902488] [29617:16663220] CHIP: [DL] Mdns: OnBrowseAdd name: 5B4185091B6CAD28, type: _matterc._udp., domain: local., interface: 7 [1657218902488] [29617:16663220] CHIP: [DL] Resolve type=_matterc._udp name=5B4185091B6CAD28 interface=7 [1657218902489] [29617:16663220] CHIP: [DL] Mdns : OnNewInterface hostname:DCA6328D2B9F0000.local. fullname:5B4185091B6CAD28._matterc._udp.local. interface: 7 [1657218902490] [29617:16663220] CHIP: [DL] Mdns: OnNewAddress interface: 7 ip:fd54:23a1:c6de:4637:4c4:ee82:2a0f:b5e2 @@ -217,8 +235,9 @@ tests: Commissionable Node Discovery service record over DNS-SD." verification: | $ ./chip-tool discover commissionables + Verify in TH as commissioner side: - Example output using all-clusters-app"s advertisements: + Example output using all-clusters-app"s advertisements found on the TH commissioner: [1651256405894] [18453:593886] CHIP: [DL] Mdns: OnNewAddress interface: 7 ip:192.168.1.2 [1651256405894] [18453:593886] CHIP: [DIS] Vendor ID: 65521 [1651256405894] [18453:593886] CHIP: [DIS] Product ID: 32769 @@ -258,15 +277,16 @@ tests: verification: | $ dns-sd -B _services._dns-sd._udp - Example output using all-clusters-app"s advertisements: + Example output using all-clusters-app"s advertisements found on the TH commissioner: 11:56:29.770 Add 3 7 . _sub.local. _V65521 disabled: true - label: "Place the DUT device into Commissioning mode" verification: | $ ./chip-tool discover commissionables + Verify in TH as commissioner side: - Example output using all-clusters-app"s advertisements: + Example output using all-clusters-app"s advertisements found on the TH commissioner: [1651256405894] [18453:593886] CHIP: [DL] Mdns: OnNewAddress interface: 7 ip:192.168.1.2 [1651256405894] [18453:593886] CHIP: [DIS] Vendor ID: 65521 [1651256405894] [18453:593886] CHIP: [DIS] Product ID: 32769 @@ -289,6 +309,7 @@ tests: _matterc._udp -r)" verification: | $ ./chip-tool discover commissionables + Verify in TH as commissioner side: [1657220492275] [29906:16679893] CHIP: [DL] Browsing for: _matterc._udp [1657220492275] [29906:16679893] CHIP: [DL] Mdns: OnBrowseAdd name: 74AFA51731B2E373, type: _matterc._udp., domain: local., interface: 7 [1657220492275] [29906:16679893] CHIP: [DL] Resolve type=_matterc._udp name=74AFA51731B2E373 interface=7 diff --git a/src/app/tests/suites/certification/Test_TC_DD_2_2.yaml b/src/app/tests/suites/certification/Test_TC_DD_2_2.yaml index f81a32a10543fd..c02101c86ed49e 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_2_2.yaml @@ -26,10 +26,23 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - 5.4.3. Discovery by Commissioner - DUT supports BLE (central role), Wi-Fi and IP connectivity - Wi-Fi certified n client + + 2 - Test Harness must support all discovery transport technologies as the DUT (i.e. BLE, Wi-Fi and IP connectivity) + disabled: true + - label: "TH starts matter announcement procedure using BLE transport" PICS: MCORE.DD.DISCOVERY_BLE verification: | $ ./out/ble/chip-all-clusters-app --ble-device 1 --discriminator 3841 + Verify in TH as commissionee side: [1657221603.350406][368108:368108] CHIP:DL: Device Configuration: [1657221603.350445][368108:368108] CHIP:DL: Serial Number: TEST_SN @@ -56,14 +69,14 @@ tests: verification: | 1. Discover commissionables over BLE using DUT=chip-tool pairing - Verify in TH as server side + Verify in TH as commissionee side: $ ./chip-tool pairing ble-wifi 1 zigbeehome matter123 20202021 3841 [1651743342.299897][3461:3464] CHIP:BLE: New device scanned: E4:5F:01:0F:1A:02 [1651743342.299951][3461:3464] CHIP:BLE: Device discriminator match. Attempting to connect. [1651743342.303783][3461:3464] CHIP:BLE: Scan complete notification without an active scan. [1651743346.244175][3461:3464] CHIP:DL: ConnectDevice complete - Verify in DUT as client side + Verify in DUT as commissioner side: [1651743346.152716][5072:5075] CHIP:DL: Device E4:5F:01:0F:3B:B1 (Path: /org/bluez/hci0/dev_E4_5F_01_0F_3B_B1) Connected [1651743347.908807][5072:5075] CHIP:DL: BluezCharacteristicAcquireWrite is called, conn: 0xffffa0043700 [1651743347.911151][5072:5075] CHIP:DL: c1 BluezCharacteristicWriteFD mtu, 517 @@ -114,14 +127,14 @@ tests: verification: | 1. Discover commissionables over BLE using DUT=chip-tool pairing command - Verify in TH as server side + Verify in TH as commissionee side: $ ./chip-tool pairing ble-wifi 1 zigbeehome matter123 20202021 3841 [1651743342.299897][3461:3464] CHIP:BLE: New device scanned: E4:5F:01:0F:1A:02 [1651743342.299951][3461:3464] CHIP:BLE: Device discriminator match. Attempting to connect. [1651743342.303783][3461:3464] CHIP:BLE: Scan complete notification without an active scan. [1651743346.244175][3461:3464] CHIP:DL: ConnectDevice complete - Verify in DUT as client side + Verify in DUT as commissioner side: [1651743346.152716][5072:5075] CHIP:DL: Device E4:5F:01:0F:3B:B1 (Path: /org/bluez/hci0/dev_E4_5F_01_0F_3B_B1) Connected [1651743347.908807][5072:5075] CHIP:DL: BluezCharacteristicAcquireWrite is called, conn: 0xffffa0043700 [1651743347.911151][5072:5075] CHIP:DL: c1 BluezCharacteristicWriteFD mtu, 517 @@ -172,7 +185,7 @@ tests: verification: | $ ./out/all-clusters-app/chip-all-clusters-app --wifi --discriminator 3841 - Verify in TH as server side + Verify in TH as commissionee side [1653087913.247229][8083:8083] CHIP:SVR: Server Listening... [1653087913.247636][8083:8083] CHIP:DL: Device Configuration: [1653087913.248094][8083:8083] CHIP:DL: Serial Number: TEST_SN @@ -190,19 +203,19 @@ tests: [1653087913.254268][8083:8083] CHIP:DMG: Endpoint 0, Cluster 0x0000_001D update version to 29f72814 disabled: true - - label: "DUT must find TH and provide onboarding data for validation." + - label: "" PICS: MCORE.DD.DISCOVERY_BLE verification: | 1. Discover commissionables over BLE using DUT=chip-tool pairing command - Verify in TH as server side + Verify in TH as commissionee side: $ ./chip-tool pairing ble-wifi 1 zigbeehome matter123 20202021 3841 [1651743342.299897][3461:3464] CHIP:BLE: New device scanned: E4:5F:01:0F:1A:02 [1651743342.299951][3461:3464] CHIP:BLE: Device discriminator match. Attempting to connect. [1651743342.303783][3461:3464] CHIP:BLE: Scan complete notification without an active scan. [1651743346.244175][3461:3464] CHIP:DL: ConnectDevice complete - Verify in DUT as client side + Verify in DUT as commissioner side: [1651743346.152716][5072:5075] CHIP:DL: Device E4:5F:01:0F:3B:B1 (Path: /org/bluez/hci0/dev_E4_5F_01_0F_3B_B1) Connected [1651743347.908807][5072:5075] CHIP:DL: BluezCharacteristicAcquireWrite is called, conn: 0xffffa0043700 [1651743347.911151][5072:5075] CHIP:DL: c1 BluezCharacteristicWriteFD mtu, 517 @@ -291,22 +304,40 @@ tests: "With DUT and TH connected to the same network over IP, DUT performs service discovery using DNS-SD" verification: | - 1. TH is in commissioning mode and discoverable by DUT over IP through DNS-SD advertisements + 1. TH is in commissioning mode and discoverable by DUT over IP through DNS-SD advertisements. This can also be verified using through the DUT"s pairing command over IP. + + Verify in TH as commissionee side: + $ ./out/all-clusters-app/chip-all-clusters-app + [1660154789.496930][7968:7968] CHIP:DIS: CHIP minimal mDNS started advertising. + [1660154789.499623][7968:7968] CHIP:DL: Using wifi MAC for hostname + [1660154789.499743][7968:7968] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32769 discriminator=3840/15 cm=1 + [1660154789.501718][7968:7968] CHIP:DIS: Responding with _matterc._udp.local + [1660154789.501757][7968:7968] CHIP:DIS: Responding with 092C5C8AE5285458._matterc._udp.local + [1660154789.501780][7968:7968] CHIP:DIS: Responding with DCA632A849EA0000.local + [1660154789.501802][7968:7968] CHIP:DIS: Responding with DCA632A849EA0000.local + [1660154789.501830][7968:7968] CHIP:DIS: Responding with _V65521._sub._matterc._udp.local + [1660154789.501858][7968:7968] CHIP:DIS: Responding with _S15._sub._matterc._udp.local + [1660154789.501882][7968:7968] CHIP:DIS: Responding with _L3840._sub._matterc._udp.local + [1660154789.501907][7968:7968] CHIP:DIS: Responding with _CM._sub._matterc._udp.local + [1660154789.501945][7968:7968] CHIP:DIS: Responding with 092C5C8AE5285458._matterc._udp.local + [1660154789.501966][7968:7968] CHIP:DIS: CHIP minimal mDNS configured as "Commissionable node device". + - Verify in DUT as client side + Verify in DUT as commissioner side: $ ./chip-tool discover commissionables - [1651256405894] [18453:593886] CHIP: [DL] Mdns: OnNewAddress interface: 7 ip:192.168.1.2 - [1651256405894] [18453:593886] CHIP: [DIS] Vendor ID: 65521 - [1651256405894] [18453:593886] CHIP: [DIS] Product ID: 32769 - [1651256405894] [18453:593886] CHIP: [DIS] Long Discriminator: 3840 - [1651256405894] [18453:593886] CHIP: [DIS] Pairing Hint: 33 - [1651256405894] [18453:593886] CHIP: [DIS] Hostname: DCA6328D2B9F0000 [1651256405894] [18453:593886] CHIP: [DIS] Instance Name: 8FFEE04E82830E26 - [1651256405894] [18453:593886] CHIP: [DIS] IP Address #1: fd54:23a1:c6de:4637:dea6:32ff:fe8d:2b9f - [1651256405894] [18453:593886] CHIP: [DIS] IP Address #2: fe80::dea6:32ff:fe8d:2b9f - [1651256405894] [18453:593886] CHIP: [DIS] IP Address #3: fe80::dea6:32ff:fe8d:2ba0 - [1651256405894] [18453:593886] CHIP: [DIS] IP Address #4: 192.168.1.2 - [1651256405894] [18453:593886] CHIP: [DIS] Port: 5540 - [1651256405894] [18453:593886] CHIP: [DIS] Commissioning Mode: 1 - [1651256405894] [18453:593886] CHIP: [DIS] Mrp Interval idle: 5000 ms - [1651256405894] [18453:593886] CHIP: [DIS] Mrp Interval active: 300 ms + OR + $ ./chip-tool pairing code 1 MT:-24J029Q00KA0648G00 + [1660155158954] [99591:10441026] CHIP: [DL] Mdns: OnNewAddress interface: 7 ip:fe80::e5d0:7f0d:7aad:d736 + [1660155158954] [99591:10441026] CHIP: [DIS] Hostname: DCA632A849EA0000 [1660155158954] [99591:10441026] CHIP: [DIS] IP Address #1: fd54:23a1:c6de:4637:1fac:42fd:dd74:dcc5 + [1660155158954] [99591:10441026] CHIP: [DIS] IP Address #2: 2603:8001:7e00:e001:d669:2a30:7e9e:7121 + [1660155158954] [99591:10441026] CHIP: [DIS] IP Address #3: fe80::e5d0:7f0d:7aad:d736 + [1660155158954] [99591:10441026] CHIP: [DIS] Port: 5540 + [1660155158954] [99591:10441026] CHIP: [DIS] Mrp Interval idle: 5000 ms + [1660155158954] [99591:10441026] CHIP: [DIS] Mrp Interval active: 300 ms + [1660155158954] [99591:10441026] CHIP: [DIS] Vendor ID: 65521 + [1660155158954] [99591:10441026] CHIP: [DIS] Product ID: 32769 + [1660155158954] [99591:10441026] CHIP: [DIS] Long Discriminator: 3840 + [1660155158954] [99591:10441026] CHIP: [DIS] Pairing Hint: 33 + [1660155158954] [99591:10441026] CHIP: [DIS] Instance Name: 8BA2031BFBF2BCDE + [1660155158954] [99591:10441026] CHIP: [DIS] Commissioning Mode: 1 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_1.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_1.yaml index 7d21c8276e1f1e..a745aae5ad4ba0 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_1.yaml @@ -24,11 +24,16 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + 1 - 5.5 - Commissioner is on a network. - The network can either be IP-based(Ethernet or WiFi) or Thread. Commissioner can either be a Matter device which is already on a network or the test harness connected to the network. + disabled: true + - label: "Commissioner and Commissionee discover each other and connect via the discovery mode applicable for the DUT." verification: | - Verify in TH as server side: sudo ./chip-all-clusters-app --wifi --discriminator 3841 + Verify in DUT as commissionee side: sudo ./chip-all-clusters-app --wifi --discriminator 3841 [1653471956.966855][10713:10713] CHIP:SPT: PASE PBKDF iterations set to 1000 [1653471956.966887][10713:10713] CHIP:SPT: LinuxCommissionableDataProvider didn"t get a PASE salt, generating one. @@ -52,7 +57,7 @@ tests: [1653471956.972769][10713:10713] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J048N01KA0648G00 [1653471956.972803][10713:10713] CHIP:SVR: Manual pairing code: [749701123365521327694] - + Verify on TH as commissioner side: connectedhomeip/examples/chip-tool/out/debug$ ./chip-tool discover commissionables Waiting for device responses... CHIP:CTL: Generating ICAC @@ -202,7 +207,7 @@ tests: verification: | Verify that the responder receives the PBKDFParamRequest message - Verify in TH as server side + Verify in DUT as commissionee side CHIP:SC: Received PBKDF param request CHIP:SC: Peer assigned session ID 18450 CHIP:SC: Found MRP parameters in the message @@ -212,7 +217,7 @@ tests: CHIP:IN: Sending unauthenticated msg 0xaaaaad340560 with MessageCounter:1341084110 to 0x0000000000000000 at monotonic time: 0000000000FBA380 msec CHIP:SC: Sent PBKDF param response - Verify in DUT as client side + Verify in TH as commissioner side Sent PBKDF param request [1653471961.364996][30157:30162] CHIP:CTL: Setting wifi credentials from parameters [1653471961.365051][30157:30162] CHIP:CTL: Setting attestation nonce to random value @@ -230,11 +235,11 @@ tests: "Commissioner SHALL re-arm Fail-safe timer on Commissionee within 60s (the autonomously Fail-safe timer length set by Commissionee)" verification: | - Verify in TH as server side + Verify in DUT as commissionee side CHIP:DL: NVS set: chip-config/fail-safe-armed = true - Verify in DUT as client side + Verify in TH as commissioner side : Performing next commissioning step "ArmFailSafe" [1653471968.064493][30157:30162] CHIP:CTL: Arming failsafe (60 seconds) @@ -245,13 +250,13 @@ tests: Commissionee." PICS: MCORE.COM.WIRELESS verification: | - Verify in DUT as client side + Verify in TH as commissioner side Performing next commissioning step "ConfigRegulatory" [1653471968.202645][30157:30162] CHIP:CTL: Setting Regulatory Config [1653471968.202666][30157:30162] CHIP:CTL: No regulatory config supplied by controller, leaving as device default (0) - Verify in TH as server side + Verify in DUT as commissionee side NVS set: chip-config/regulatory-location = 0 (0x0) disabled: true @@ -259,13 +264,13 @@ tests: "Commissioner requests operational CSR from Commissionee with OperationalCSRRequest command" verification: | - Verify in DUT as client side after commissioning + Verify in TH as commissioner side after commissioning [1646909537.102263][3145:3150] CHIP:CTL: Received Attestation Information from the device [1646909537.102418][3145:3150] CHIP:CTL: Verifying attestation [1646909537.115081][3145:3150] CHIP:CTL: Successfully validated "Attestation Information" command received from the device. - Verify in TH as server side + Verify in DUT as commissionee side OpCreds: Received a CSRRequest command CHIP:ZCL: OpCreds: NewCertificateSigningRequest succeeded disabled: true @@ -274,11 +279,11 @@ tests: "Commissioner configures operational credentials on DUT if not previously installed" verification: | - Verify in TH as server side + Verify in DUT as commissionee side OpCreds: Received an AddTrustedRootCertificate command - Verify in DUT as client side + Verify in TH as commissioner side Sending root certificate to the device CHIP:DMG: ICR moving to [AddingComm] @@ -293,7 +298,7 @@ tests: "Commissioner configures itself as administrator in ACL on DUT if needed" verification: | - Verify in DUT as client side after commissioning + Verify in TH as commissioner side after commissioning CHIP:CTL: Commissioning stage next step: "SendTrustedRootCert" -> "SendNOC" [1653471969.812357][30157:30162] CHIP:CTL: Performing next commissioning step "SendNOC" @@ -347,7 +352,7 @@ tests: [1653471970.347439][30157:30162] CHIP:TOO: Secure Pairing Success [1653471970.347485][30157:30162] CHIP:CTL: Successfully finished commissioning step "SendNOC" - Verify in TH as server side + Verify in DUT as commissionee side OpCreds: Received an AddNOC command disabled: true @@ -356,7 +361,7 @@ tests: "Commissioner configures operational network on DUT if DUT both supports and requires" verification: | - Verify in DUT as client side after commissioning + Verify in TH as commissioner side after commissioning [1646909537.345068][3145:3150] CHIP:CTL: Received certificate signing request from the device disabled: true @@ -365,7 +370,7 @@ tests: "Commissioner instructs Commissionee to connect to operational network if not already connected" verification: | - Verify in DUT as client side after commissioning + Verify in TH as commissioner side after commissioning [1646909537.976592][3145:3150] CHIP:CTL: Operational credentials provisioned on device 0xffffac001730 [1646909537.976664][3145:3150] CHIP:TOO: Secure Pairing Success @@ -373,7 +378,7 @@ tests: - label: "Commissioner starts discovery of DUT using Operational Discovery" verification: | - Verify in DUT as client side + Verify in TH as commissioner side CHIP:CTL: Commissioning stage next step: "SendNOC" -> "FindOperational" [1653471976.344532][30157:30162] CHIP:CTL: Performing next commissioning step "FindOperational" @@ -395,18 +400,22 @@ tests: - label: "Commissioner opens a CASE session with DUT over operational network" verification: | - Verify in TH as server side + Verify in DUT as commissionee side + + [1660154789.690124][7968:7968] CHIP:IN: CASE Server enabling CASE session setups + [1660154789.690208][7968:7968] CHIP:IN: SecureSession[0xaaaab75fae10]: Allocated Type:2 LSID:55651 + [1660154789.690248][7968:7968] CHIP:SC: Allocated SecureSession (0xaaaab75fae10) - waiting for Sigma1 msg + [1660154789.690276][7968:7968] CHIP:SVR: Joining Multicast groups + [1660154789.690304][7968:7968] CHIP:ZCL: Emitting StartUp event + [1660154789.690395][7968:7968] CHIP:EVL: LogEvent event number: 0x0000000000000002 priority: 2, endpoint id: 0x0 cluster id: 0x0000_0028 event id: 0x0 Sys timestamp: 0x00000000001D1D86 - CASE Server enabling CASE session setups - [1653471957.713139][10713:10713] CHIP:SVR: Joining Multicast groups - [1653471957.713654][10713:10713] CHIP:ZCL: Emitting StartUp event - [1653471957.714762][10713:10713] CHIP:EVL: LogEvent event number: 0x0000000000000000 priority: 2, endpoint id: 0x0 cluster id: 0x0000_0028 event id: 0x0 Sys timestamp: 0x000000000059AC88 - [1653471957.715456][10713:10713] CHIP:ZCL: GeneralDiagnosticsDelegate: OnDeviceRebooted + Verify in TH as commissioner side + [1660154794132] [99576:10438621] CHIP: [TOO] CASE establishment successful disabled: true - label: "Commissioner sends CommissioningComplete command" verification: | - Verify in DUT as client side + Verify in TH as commissioner side CHIP:CTL: Received CommissioningComplete response disabled: true @@ -415,7 +424,7 @@ tests: "Commissioning channel between the Commissioner and Commissionee is terminated." verification: | - Verify in DUT as client side + Verify in TH as commissioner side CHIP:CTL: Successfully finished commissioning step "SendComplete" CHIP:CTL: Commissioning stage next step: "SendComplete" -> "Cleanup" diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_10.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_10.yaml index fd3cd615e01ac3..b81143cb4ce851 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_10.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_10.yaml @@ -27,6 +27,16 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 -DUT is on an operational network and has accurate date, time, timezone, regulatory, and fabric information available. + disabled: true + - label: "DUT receives Onboarding Payload from the TH with Custom Flow field set to value 2" @@ -48,26 +58,25 @@ tests: disabled: true - label: - "DUT fetches commissioning data from DCL using VID and PID from - Onboarding Payload" - PICS: MCORE.DD.FETCH_DCL + "User follows any TH-specific steps to place the TH Commissionee into + commissioning mode." verification: | - 1. Observe the TH"s DCL on the DUT - disabled: true - - - label: - "Using the instructions located at the CommissioningCustomFlowURL from - the DCL, DUT guides the user in next steps to prepare the commissionee - (TH) for commissioning" - PICS: MCORE.DD.FETCH_DCL - verification: | - 1. Follow instructions for commissioning using the URL contained in the DCL + 1. Launch the TH commissionee all-clusters-app: + $ ./chip-all-clusters-app + Verifiy on TH as commissionee side: + [1660152729.426029][648909:648909] CHIP:-: ==== Onboarding payload for Custom Commissioning Flows ==== + [1660152729.426076][648909:648909] CHIP:SVR: SetupQRCode: [MT:-24J029Q00KA0648G00] + [1660152729.426103][648909:648909] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: + [1660152729.426123][648909:648909] CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J029Q00KA0648G00 disabled: true - label: "DUT commissions TH" verification: | $ ./chip-tool pairing code 1 MT:-24J029Q00KA0648G00 - [1657578523795] [9610:351965] CHIP: [CTL] Successfully finished commissioning step "Cleanup" - [1657578523795] [9610:351965] CHIP: [TOO] Device commissioning completed with success + Verify in DUT as commissioner side: + CHIP:CTL: Received CommissioningComplete response + + Verifiy on TH as commissionee side: + [1660154248.898113][7143:7143] CHIP:SVR: Commissioning completed successfully disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_11.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_11.yaml index a2f62b1675d2bf..82ab752313d6d3 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_11.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_11.yaml @@ -28,6 +28,38 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - DUT is on an operational network and has accurate date, time, timezone, regulatory, and fabric information available. + + 2 - 5.1.3 - QR code is printed on the device or in additional provided materials (ex: manual). + + An example onboarding QR code could be "MT:-24J029Q00KA0648G00" (following 5.1.3 "QR Code", Table 34 "Packed Binary Data Structure for Onboarding Payload") which includes: + + - 3-bit Version String=000 + + - 16-bit Vendor ID=0xFFF1 (as defined in section 2.5.2. "Vendor Identifier") + + - 16-bit Product ID=0x8001 (as defined in section 2.5.3. "Product Identifier") + + - 2-bit Custom Flow=10 (Custom Commissioning Flow = 2) + + - 8-bit Discovery Capabilities Bitmask=00000100 (OnNetwork) + + - 12-bit Discriminator=0xF00 + + - 27-bit Passcode=20202021 + + - 4-bit Padding=0000 + + - no variable-length TLV Data included (as defined in section 5.1.3.1. "Payload", subsection "TLV Data") + disabled: true + - label: "Standard Commissioning Flow: Use a Commissionee with a QR code that has the Custom Flow field set to 0 and supports BLE for its Discovery @@ -35,6 +67,8 @@ tests: spec. documentation." PICS: MCORE.DD.DISCOVERY_BLE verification: | + Verify on the TH as commissionee side: + $ ./out/ble/all-clusters-app/chip-all-clusters-app --capabilities 2 --ble-device 1 ... [1657232267.387816][370320:370320] CHIP:DL: Device Configuration: @@ -65,13 +99,13 @@ tests: using BLE" PICS: MCORE.DD.DISCOVERY_BLE verification: | - TH Commissionee: + Verify on the TH as commissionee side: [1657232374.956508][370357:370357] CHIP:DL: HandlePlatformSpecificBLEEvent 32784 [1657232374.956534][370357:370357] CHIP:SVR: Commissioning completed successfully [1657232374.956577][370357:370357] CHIP:DIS: Updating services using commissioning mode 0 - DUT Commissioner: + Verify on the DUT Commissioner side: $ ./chip-tool pairing code 1 MT:-24J0YXE00KA0648G00 [1657232374820] [31379:16804218] CHIP: [CTL] Received CommissioningComplete response, errorCode=0 @@ -92,6 +126,7 @@ tests: verification: | $ ./out/all-clusters-app/chip-all-clusters-app --custom-flow 0 --capabilities 4 + Verify on the TH as commissionee side: [1651105420.610637][27312:27312] CHIP:DL: Device Configuration: [1651105420.610695][27312:27312] CHIP:DL: Serial Number: TEST_SN [1651105420.610727][27312:27312] CHIP:DL: Vendor Id: 65521 (0xFFF1) @@ -108,7 +143,9 @@ tests: - label: "Scan the QR code from the previous step using the DUT." PICS: MCORE.DD.SCAN_QR_CODE verification: | - 1. Verify the QR code is scanned by DUT, chip-tool does not support physically scanning QR codes + 1. Verify the QR code is scanned by DUT + + Note: chip-tool does not support physically scanning QR codes disabled: true - label: @@ -117,12 +154,12 @@ tests: using IP Network" PICS: MCORE.DD.DISCOVERY_IP verification: | - TH Commissionee: + Verify on the TH Commissionee side: [1651105530.973166][27371:27371] CHIP:SVR: Commissioning completed successfully [1651105530.973215][27371:27371] CHIP:DIS: Updating services using commissioning mode 0 - DUT Commissioner: + Verify on the DUT Commissioner: $ ./chip-tool pairing code 1 MT:-24J0AFN00KA0648G00 [1651105530854] [95067:65607294] CHIP: [CTL] Received CommissioningComplete response diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_12.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_12.yaml index c4d4b2ed7e5fed..9adbd5d30f2adf 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_12.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_12.yaml @@ -28,6 +28,38 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - DUT is on an operational network and has accurate date, time, timezone, regulatory, and fabric information available. + + 2 - 5.1.3 - QR code is printed on the device or in additional provided materials (ex: manual). + + An example onboarding QR code could be "MT:-24J029Q00KA0648G00" (following 5.1.3 "QR Code", Table 34 "Packed Binary Data Structure for Onboarding Payload") which includes: + + - 3-bit Version String=000 + + - 16-bit Vendor ID=0xFFF1 (as defined in section 2.5.2. "Vendor Identifier") + + - 16-bit Product ID=0x8001 (as defined in section 2.5.3. "Product Identifier") + + - 2-bit Custom Flow=10 (Custom Commissioning Flow = 2) + + - 8-bit Discovery Capabilities Bitmask=00000100 (OnNetwork) + + - 12-bit Discriminator=0xF00 + + - 27-bit Passcode=20202021 + + - 4-bit Padding=0000 + + - no variable-length TLV Data included (as defined in section 5.1.3.1. "Payload", subsection "TLV Data") + disabled: true + - label: "User-Intent Commissioning Flow: Use a Commissionee with a QR code that has the Custom Flow field set to 1 and supports BLE for its @@ -36,9 +68,10 @@ tests: documentation." PICS: MCORE.DD.DISCOVERY_BLE verification: | + Verify on the TH as commissionee side: + $ ./out/ble/all-clusters-app/chip-all-clusters-app --capabilities 2 --custom-flow 1 --ble-device 1 ... - [1657234110.765139][370717:370717] CHIP:-: ==== Onboarding payload for Custom Commissioning Flows ==== [1657234110.765249][370717:370717] CHIP:SVR: SetupQRCode: [MT:-24J0YXE00KA0648G00] [1657234110.765314][370717:370717] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: [1657234110.765364][370717:370717] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0YXE00KA0648G00 @@ -48,36 +81,32 @@ tests: PICS: MCORE.DD.SCAN_QR_CODE verification: | 1. Verify the QR code is scanned by DUT + Note: chip-tool does not support physically scanning QR codes disabled: true - label: "DUT parses QR code." PICS: MCORE.DD.DISCOVERY_BLE verification: | - 1. Follow the steps given in the TH"s pairing hint to allow for commissioning to happen. TH should not be commissioned until these steps were followed and indicate DUT can proceed with commissioning the TH to the Matter network + 1. Parse the payload of the TH commissionee - On DUT=chip-tool: - ./chip-tool pairing code 1 MT:-24J0YXE00KA0648G00 - [1657234147237] [31454:16822562] CHIP: [CTL] Successfully finished commissioning step "SendComplete" - [1657234147237] [31454:16822562] CHIP: [CTL] Commissioning stage next step: "SendComplete" -> "Cleanup" - [1657234147237] [31454:16822562] CHIP: [CTL] Performing next commissioning step "Cleanup" - [1657234147237] [31454:16822562] CHIP: [CTL] Successfully finished commissioning step "Cleanup" - [1657234147237] [31454:16822562] CHIP: [TOO] Device commissioning completed with success + Verify on the DUT Commissioner side: + $ ./chip-tool payload parse-setup-payload MT:-24J0YXE00KA0648G00 + + 2. Verify that TH logs do not show the commissionee being commissioned by the DUT. disabled: true - label: - "Follow any steps from the resources provided by the pairing hint or - by the THs manufacturer for putting the TH Commissionee device into - commissioning mode and to complete the commissioning process using - BLE." + "User should follow any TH-specific steps for putting the TH + Commissionee device into commissioning mode and to complete the + commissioning process using BLE." PICS: MCORE.DD.DISCOVERY_BLE verification: | - TH Commissionee: + Verify on the TH Commissionee side: [1651101988.943015][23212:23212] CHIP:SVR: Commissioning completed successfully [1651101988.943058][23212:23212] CHIP:DIS: Updating services using commissioning mode 0 - - On DUT Commissioner=chip-tool: + Verify on the DUT Commissioner side: ./chip-tool pairing code 1 MT:-24J0YXE00KA0648G00 [1657234147237] [31454:16822562] CHIP: [CTL] Successfully finished commissioning step "SendComplete" [1657234147237] [31454:16822562] CHIP: [CTL] Commissioning stage next step: "SendComplete" -> "Cleanup" @@ -94,47 +123,43 @@ tests: documentation." PICS: MCORE.DD.DISCOVERY_IP verification: | + Verify on the TH Commissionee side: $ ./out/all-clusters-app/chip-all-clusters-app --custom-flow 1 --capabilities 4 - [1657234233.898170][370755:370755] CHIP:-: ==== Onboarding payload for Custom Commissioning Flows ==== - [1657234233.898195][370755:370755] CHIP:SVR: SetupQRCode: [MT:-24J029Q00KA0648G00] - [1657234233.898227][370755:370755] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: - [1657234233.898248][370755:370755] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J029Q00KA0648G00 + [1660353382.200125][249074:249074] CHIP:SVR: SetupQRCode: [MT:-24J029Q00KA0648G00] + [1660353382.200152][249074:249074] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: + [1660353382.200173][249074:249074] CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J029Q00KA0648G00 disabled: true - label: "Scan the QR code from the previous step using the DUT." PICS: MCORE.DD.SCAN_QR_CODE verification: | 1. Verify the QR code is scanned by DUT + Note: chip-tool does not support physically scanning QR codes disabled: true - label: "DUT parses QR code." PICS: MCORE.DD.DISCOVERY_IP verification: | - 1. Follow the steps given in the TH"s pairing hint to allow for commissioning to happen. TH should not be commissioned until these steps were followed and indicate DUT can proceed with commissioning the TH to the Matter network + 1. Parse the payload of the TH commissionee + Verify on the DUT Commissioner side: + $ ./chip-tool payload parse-setup-payload MT:-24J029Q00KA0648G00 - On DUT=chip-tool: - ./chip-tool pairing code 1 MT:-24J029Q00KA0648G00 - [1657234324847] [31475:16824564] CHIP: [CTL] Successfully finished commissioning step "SendComplete" - [1657234324847] [31475:16824564] CHIP: [CTL] Commissioning stage next step: "SendComplete" -> "Cleanup" - [1657234324847] [31475:16824564] CHIP: [CTL] Performing next commissioning step "Cleanup" - [1657234324847] [31475:16824564] CHIP: [CTL] Successfully finished commissioning step "Cleanup" - [1657234324847] [31475:16824564] CHIP: [TOO] Device commissioning completed with success + 2. Verify that TH logs do not show the commissionee being commissioned by the DUT. disabled: true - label: - "Follow any steps from the resources provided by the pairing hint or - by the THs manufacturer for putting the TH Commissionee device into - commissioning mode and to complete the commissioning process using IP - Network." + "User should follow any TH-specific steps for putting the TH + Commissionee device into commissioning mode and to complete the + commissioning process using IP Network." PICS: MCORE.DD.DISCOVERY_IP verification: | - TH all-clusters-app: + Verify on the TH Commissionee side: [1657234324.992098][370755:370755] CHIP:SVR: Commissioning completed successfully [1657234324.992146][370755:370755] CHIP:DIS: Updating services using commissioning mode 0 - On DUT=chip-tool: + Verify on the DUT Commissioner side: ./chip-tool pairing code 1 MT:-24J029Q00KA0648G00 [1657234324847] [31475:16824564] CHIP: [CTL] Successfully finished commissioning step "SendComplete" [1657234324847] [31475:16824564] CHIP: [CTL] Commissioning stage next step: "SendComplete" -> "Cleanup" @@ -170,10 +195,9 @@ tests: disabled: true - label: - "Follow any steps from the resources provided by the pairing hint or - by the THs manufacturer for putting the TH Commissionee device into - commissioning mode and to complete the commissioning process using - SoftAP." + "User should follow any TH-specific steps for putting the TH + Commissionee device into commissioning mode and to complete the + commissioning process using SoftAP." PICS: MCORE.DD.DISCOVERY_SOFTAP verification: | Out of Scope for V1.0 diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_13.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_13.yaml index ce576dad278dd9..462dce0ec17513 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_13.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_13.yaml @@ -28,6 +28,38 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - DUT is on an operational network and has accurate date, time, timezone, regulatory, and fabric information available. + + 2 - 5.1.3 - QR code is printed on the device or in additional provided materials (ex: manual). + + An example onboarding QR code could be "MT:-24J029Q00KA0648G00" (following 5.1.3 "QR Code", Table 34 "Packed Binary Data Structure for Onboarding Payload") which includes: + + - 3-bit Version String=000 + + - 16-bit Vendor ID=0xFFF1 (as defined in section 2.5.2. "Vendor Identifier") + + - 16-bit Product ID=0x8001 (as defined in section 2.5.3. "Product Identifier") + + - 2-bit Custom Flow=10 (Custom Commissioning Flow = 2) + + - 8-bit Discovery Capabilities Bitmask=00000100 (OnNetwork) + + - 12-bit Discriminator=0xF00 + + - 27-bit Passcode=20202021 + + - 4-bit Padding=0000 + + - no variable-length TLV Data included (as defined in section 5.1.3.1. "Payload", subsection "TLV Data") + disabled: true + - label: "Custom Commissioning Flow: Use a Commissionee with a QR code that has the Custom Flow field set to 2 and supports BLE for its Discovery @@ -35,6 +67,7 @@ tests: Version bit string follows the current Matter spec. documentation." PICS: MCORE.DD.DISCOVERY_BLE verification: | + Verify on the TH Commissionee side: $ ./out/ble/all-clusters-app/chip-all-clusters-app --custom-flow 2 --capabilities 2 [1657235055.253604][370941:370941] CHIP:-: ==== Onboarding payload for Custom Commissioning Flows ==== @@ -53,27 +86,36 @@ tests: - label: "DUT parses QR code." PICS: MCORE.DD.DISCOVERY_BLE verification: | - 1. Follow the steps given in the TH"s URL to allow for commissioning to happen. TH should not be commissioned until these steps were followed and indicate DUT can proceed with commissioning the TH to the Matter network - - On DUT=chip-tool: - ./chip-tool pairing code 1 MT:-24J0YXE00KA0648G00 - [1657235087918] [31502:16832693] CHIP: [CTL] Successfully finished commissioning step "Cleanup" - [1657235087918] [31502:16832693] CHIP: [TOO] Device commissioning completed with success + 1. Parse the payload of the TH commissionee + + Verify on the DUT Commissioner side: + $ ./chip-tool payload parse-setup-payload MT:-24J0YXE00KA0648G00 + [1660352364702] [20244:11810896] CHIP: [SPL] Parsing base38Representation: MT:-24J0YXE00KA0648G00 + [1660352364702] [20244:11810896] CHIP: [SPL] Version: 0 + [1660352364702] [20244:11810896] CHIP: [SPL] VendorID: 65521 + [1660352364702] [20244:11810896] CHIP: [SPL] ProductID: 32769 + [1660352364702] [20244:11810896] CHIP: [SPL] Custom flow: 2 (CUSTOM) + [1660352364702] [20244:11810896] CHIP: [SPL] Capabilities: 0x02 (BLE) + [1660352364702] [20244:11810896] CHIP: [SPL] Discriminator: 3840 + [1660352364702] [20244:11810896] CHIP: [SPL] Passcode: 20202021 + + 2. Verify that TH logs do not show the commissionee being commissioned by the DUT. disabled: true - label: - "User should follow any steps from the CommissioningCustomFlowUrl - within the THs DCL, unless the DUT has alternative means to guide the - user to successful commissioning, for putting the TH Commissionee into - commissioning mode, for triggering the DUT Commissioner for - commissioning, and for completing the commissioning process using BLE." + "User should follow any TH-specific steps, unless the DUT has + alternative means to guide the user to successful commissioning, for + putting the TH Commissionee into commissioning mode, for triggering + the DUT Commissioner for commissioning, and for completing the + commissioning process using BLE." PICS: MCORE.DD.DISCOVERY_BLE verification: | - TH all-clusters-app: + Verify on the TH Commissionee side: [1657235088.040328][370941:370941] CHIP:SVR: Commissioning completed successfully [1657235088.040371][370941:370941] CHIP:DIS: Updating services using commissioning mode 0 - DUT chip-tool: $ ./chip-tool pairing code 1 MT:-24J0YXE00KA0648G00 + Verify on the DUT Commissioner side: + $ ./chip-tool pairing code 1 MT:-24J0YXE00KA0648G00 [1657235087918] [31502:16832693] CHIP: [CTL] Successfully finished commissioning step "Cleanup" [1657235087918] [31502:16832693] CHIP: [TOO] Device commissioning completed with success disabled: true @@ -86,6 +128,7 @@ tests: documentation." PICS: MCORE.DD.DISCOVERY_IP verification: | + Verify on the TH Commissionee side: $ ./out/all-clusters-app/chip-all-clusters-app --custom-flow 2 --capabilities 4 [1657235141.663008][370963:370963] CHIP:-: ==== Onboarding payload for Custom Commissioning Flows ==== @@ -104,28 +147,35 @@ tests: - label: "DUT parses QR code." PICS: MCORE.DD.DISCOVERY_IP verification: | - 1. Follow the steps given in the TH"s URL to allow for commissioning to happen. TH should not be commissioned until these steps were followed and indicate DUT can proceed with commissioning the TH to the Matter network - - On DUT=chip-tool: - ./chip-tool pairing code 1 MT:-24J029Q00KA0648G00 - [1657235198856] [31506:16834043] CHIP: [CTL] Successfully finished commissioning step "Cleanup" - [1657235198856] [31506:16834043] CHIP: [TOO] Device commissioning completed with success + 1. Parse the payload of the TH commissionee + + Verify on the DUT Commissioner side: + $ ./chip-tool payload parse-setup-payload MT:-24J029Q00KA0648G00 + [1660352541112] [20246:11812333] CHIP: [SPL] Parsing base38Representation: MT:-24J029Q00KA0648G00 + [1660352541113] [20246:11812333] CHIP: [SPL] Version: 0 + [1660352541113] [20246:11812333] CHIP: [SPL] VendorID: 65521 + [1660352541113] [20246:11812333] CHIP: [SPL] ProductID: 32769 + [1660352541114] [20246:11812333] CHIP: [SPL] Custom flow: 2 (CUSTOM) + [1660352541114] [20246:11812333] CHIP: [SPL] Capabilities: 0x04 (On IP network) + [1660352541114] [20246:11812333] CHIP: [SPL] Discriminator: 3840 + [1660352541114] [20246:11812333] CHIP: [SPL] Passcode: 20202021 + + 2. Verify that TH logs do not show the commissionee being commissioned by the DUT. disabled: true - label: - "User should follow any steps from the CommissioningCustomFlowUrl - within the THs DCL, unless the DUT has alternative means to guide the - user to successful commissioning, for putting the TH Commissionee into - commissioning mode, for triggering the DUT Commissioner for - commissioning, and for completing the commissioning process using IP - Network." + "User should follow any TH-specific steps, unless the DUT has + alternative means to guide the user to successful commissioning, for + putting the TH Commissionee into commissioning mode, for triggering + the DUT Commissioner for commissioning, and for completing the + commissioning process using IP Network." PICS: MCORE.DD.DISCOVERY_IP verification: | - TH all-clusters-app: + Verify on the TH Commissionee side: [1657235198.977848][370963:370963] CHIP:SVR: Commissioning completed successfully [1657235198.977943][370963:370963] CHIP:DIS: Updating services using commissioning mode 0 - DUT chip-tool: + Verify on the DUT Commissioner side: $ ./chip-tool pairing code 1 MT:-24J029Q00KA0648G00 [1657235198856] [31506:16834043] CHIP: [CTL] Successfully finished commissioning step "Cleanup" [1657235198856] [31506:16834043] CHIP: [TOO] Device commissioning completed with success @@ -157,12 +207,11 @@ tests: disabled: true - label: - "User should follow any steps from the CommissioningCustomFlowUrl - within the THs DCL, unless the DUT has alternative means to guide the - user to successful commissioning, for putting the TH Commissionee into - commissioning mode, for triggering the DUT Commissioner for - commissioning, and for completing the commissioning process using - SoftAP." + "User should follow any TH-specific steps, unless the DUT has + alternative means to guide the user to successful commissioning, for + putting the TH Commissionee into commissioning mode, for triggering + the DUT Commissioner for commissioning, and for completing the + commissioning process using SoftAP." PICS: MCORE.DD.DISCOVERY_SOFTAP verification: | Out of Scope for V1.0 diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_14.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_14.yaml index 42fa580bc34c8a..e09184f8560eeb 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_14.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_14.yaml @@ -27,8 +27,41 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - DUT is on an operational network and has accurate date, time, timezone, regulatory, and fabric information available. + + 2 - 5.1.3 - QR code is printed on the device or in additional provided materials (ex: manual). + + An example onboarding QR code could be "MT:-24J029Q00KA0648G00" (following 5.1.3 "QR Code", Table 34 "Packed Binary Data Structure for Onboarding Payload") which includes: + + - 3-bit Version String=000 + + - 16-bit Vendor ID=0xFFF1 (as defined in section 2.5.2. "Vendor Identifier") + + - 16-bit Product ID=0x8001 (as defined in section 2.5.3. "Product Identifier") + + - 2-bit Custom Flow=10 (Custom Commissioning Flow = 2) + + - 8-bit Discovery Capabilities Bitmask=00000100 (OnNetwork) + + - 12-bit Discriminator=0xF00 + + - 27-bit Passcode=20202021 + + - 4-bit Padding=0000 + + - no variable-length TLV Data included (as defined in section 5.1.3.1. "Payload", subsection "TLV Data") + disabled: true + - label: "Locate and scan/read the Commissionees QR code using DUT" verification: | + Verify on the TH Commissionee side: $ ./out/all-clusters-app/chip-all-clusters-app --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --custom-flow 2 --capabilities 4 --discriminator 3840 --passcode 20202021 [1657235470.970680][371041:371041] CHIP:DL: Device Configuration: @@ -52,6 +85,7 @@ tests: Version String (i.e. 010 or any non-zero 3-bit value)" verification: | 1. Use chip-tool"s "payload generate-qrcode" command to help generate the new, invalid QR code + Verify on the TH Commissionee side: $ ./chip-tool payload generate-qrcode --existing-payload MT:-24J029Q00KA0648G00 --allow-invalid-payload 1 --version 2 [1657235626568] [31698:16839018] CHIP: [TOO] QR Code: MT:034J029Q00KA0648G00 disabled: true @@ -59,8 +93,10 @@ tests: - label: "Scan/read the QR code, generated in the previous step, using the DUT" verification: | - TH all-clusters-app: + Verify on the DUT Commissioner side: Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:50: CHIP Error 0x0000002F: Invalid argument + + No applicable TH Logs disabled: true - label: @@ -70,13 +106,18 @@ tests: PICS: MCORE.DD.DISCOVERY_BLE verification: | 1. Use chip-tool"s "payload generate-qrcode" command to help generate the new, invalid QR code + Verify on the TH Commissionee side: $ ./chip-tool payload generate-qrcode --existing-payload MT:-24J029Q00KA0648G00 --allow-invalid-payload 1 --rendezvous 4 [1657235754393] [31702:16840391] CHIP: [TOO] QR Code: MT:-24J029Q00KA0648G00 + + Verify on the DUT Commissioner side: + No applicable logs on the DUT side disabled: true - label: "Scan/read the QR code of the TH device using the DUT" PICS: MCORE.DD.DISCOVERY_BLE verification: | + Verify on the DUT Commissioner side: ./chip-tool pairing code 1 MT:-24J029Q00KA0648G00 [1657235905214] [31706:16841970] CHIP: [CTL] Discovered device to be commissioned over DNS-SD ... @@ -92,6 +133,7 @@ tests: 00000000, 11111111, 22222222, 33333333, 44444444, 55555555, 66666666, 77777777, 88888888, 99999999, 12345678, 87654321" verification: | + No applicable TH or DUT Logs "MT:-24J029Q00OC0000000" (00000000), "MT:-24J029Q00KMSP0Z800" (11111111), "MT:-24J029Q00GWID1WH00" (22222222), @@ -109,7 +151,8 @@ tests: - label: "Scan each of the generated QR codes from the previous step using DUT" verification: | - TH chip-all-clusters-app Commissionee: + Verify on the DUT Commissioner side: + No applicable TH Logs ./chip-tool pairing code 1 MT:-24J029Q00OC0000000 @@ -170,11 +213,17 @@ tests: MT: (i.e. Prefix=AB:)" verification: | AB:-24J029Q00KA0648G00 + + No applicable TH or DUT Logs disabled: true - label: "Scan/read the QR code, generated in the previous step, using the DUT" verification: | + Verify on the DUT Commissioner side: + $ ./chip-tool pairing code 1 AB:-24J029Q00KA0648G00 [1657236169984] [31732:16844455] CHIP: [TOO] Run command failure: ../../examples/chip-tool/third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:50: CHIP Error 0x00000013: Integrity check failed + + No applicable TH Logs disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_15.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_15.yaml index 039487b9d39579..30475e9ee7f05e 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_15.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_15.yaml @@ -27,13 +27,42 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + Preconditions + 1 - DUT is on an operational network and has accurate date, time, timezone, regulatory, and fabric information available. + + 2 - 5.1.4.2 - Manual Pairing Code is printed on the Commissionee device or in additional provided materials (ex: manual). + + An example onboarding payload could be "34970112332" (11-digit) or could be "749701123365521327694" (21-digit) (following 5.1.4. Table 37. "Manual Pairing Code Elements") which each include: + + - 1-bit VID_PID_PRESENT = 0 (11-digit) or = 1 (21-digit) + + - 1-bit VERSION=0 + + - 4-bit SHORT DISCRIMINATOR=0xF00 (4 Most-significant bits of the 12-bits Discriminator value) + + - 27-bit PASSCODE=20202021 (see section 5.1.6. Generation of the Passcode) + + - 16-bit VENDOR_ID=0xFFF1 (as defined in section 2.5.2. "Vendor Identifier", for 21-digit Manual Pairing Code only) + + - 16-bit PRODUCT_ID=0x8001 (as defined in section 2.5.3. "Product Identifier", present if and only if VID is present) + + - A generated CHECK_DIGIT (see section 5.1.4. Manual Pairing Code, subsection "Check Digit") + disabled: true + - label: "Verify the THs 11-digit Manual Pairing Code meets the following criteria: - VERSION bit string string up to date with the current Matter spec. documentation - VID_PID_PRESENT bit string set to 0" PICS: MCORE.DD.11_MANUAL_PC verification: | - On TH Commissionee: + Verify on the TH Commissionee side: $ ./out/ble/all-clusters-app/chip-all-clusters-app [1651108891.390266][30833:30833] CHIP:DL: Device Configuration: [1651108891.390455][30833:30833] CHIP:DL: Serial Number: TEST_SN @@ -58,11 +87,11 @@ tests: process." PICS: MCORE.DD.11_MANUAL_PC verification: | - On TH Commissionee: + Verify on the TH Commissionee side: [1651109112.909458][30833:30833] CHIP:SVR: Commissioning completed successfully [1651109112.909503][30833:30833] CHIP:DIS: Updating services using commissioning mode 0 - On DUT Commissioner: + Verify on the DUT Commissioner side: $ ./chip-tool pairing code 1 34970112332 [1651109112823] [95528:65650355] CHIP: [CTL] Received CommissioningComplete response @@ -81,7 +110,7 @@ tests: PRODUCT_ID present (as defined in section 2.5.3. Product Identifier)" PICS: MCORE.DD.21_MANUAL_PC verification: | - On TH Commissionee: + Verify on the TH Commissionee side: $ ./out/ble/all-clusters-app/chip-all-clusters-app [1651109167.022364][30980:30980] CHIP:DL: Device Configuration: @@ -116,7 +145,7 @@ tests: [1651109219.100167][30980:30980] CHIP:SVR: Commissioning completed successfully [1651109219.100213][30980:30980] CHIP:DIS: Updating services using commissioning mode 0 - On DUT Commissioner: + Verify on the DUT Commissioner side: $ ./chip-tool pairing code 1 749701123365521327694 [1651109219028] [95536:65652322] CHIP: [CTL] Received CommissioningComplete response diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_16.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_16.yaml index 3b34bd354eea56..6e9dd0f317e56b 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_16.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_16.yaml @@ -27,11 +27,39 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - DUT is on an operational network and has accurate date, time, timezone, regulatory, and fabric information available. + + 2 - 5.1.4.2 - 11-digit Manual Pairing Code is printed on the Commissionee device or in additional provided materials (ex: manual). + + An example onboarding payload could be "34970112332" (following 5.1.4. Table 37. "Manual Pairing Code Elements") which each include: + + - 1-bit VID_PID_PRESENT = 0 (11-digit only) + + - 1-bit VERSION=0 + + - 4-bit SHORT DISCRIMINATOR=0xF00 (4 Most-significant bits of the 12-bits Discriminator value) + + - 27-bit PASSCODE=20202021 (see section 5.1.6. Generation of the Passcode) + + - 16-bit VENDOR_ID=0xFFF1 (as defined in section 2.5.2. "Vendor Identifier", for 21-digit Manual Pairing Code only) + + - 16-bit PRODUCT_ID=0x8001 (as defined in section 2.5.3. "Product Identifier", present if and only if VID is present) + + - A generated CHECK_DIGIT (see section 5.1.4. Manual Pairing Code, subsection "Check Digit") + disabled: true + - label: "Provide the 11-digit Manual Pairing Code from the Commissionee to the DUT in any format supported by DUT" verification: | - Verify in TH as server side + Verify on the TH Commissionee side: $ ./out/all-clusters-app/chip-all-clusters-app --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --custom-flow 0 --capabilities 4 --discriminator 3840 --passcode 20202021 [1651180718.960383][13218:13218] CHIP:DL: Device Configuration: @@ -56,10 +84,10 @@ tests: 2" verification: | 1. Use chip-tool"s "payload verhoeff-generate" command to help generate the new, invalid Manual code + No applicable DUT or TH logs $ ./chip-tool payload verhoeff-generate 8497011233 - Verify in DUT as client side [1651186243492] [13415:349553] CHIP: [SPL] Generating Character for: 84970112331 [1651186243492] [13415:349553] CHIP: [SPL] Generated Char: 1 Manual Code: 84970112331 @@ -71,7 +99,7 @@ tests: verification: | $ ./chip-tool pairing code 1 84970112331 - Verify in DUT as client side + Verify in DUT Commissioner side Run command failure: ../../third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:137: CHIP Error 0x0000002F: Invalid argument disabled: true @@ -81,9 +109,11 @@ tests: manual code but substituting out the current VID_PID_PRESENT with an invalid VID_PID_PRESENT set to 1" verification: | + 1. Use chip-tool"s "payload generate-manualcode" command to help generate the new, invalid Manual code + No applicable DUT or TH logs + $ ./chip-tool payload generate-manualcode --discriminator 0xF00 --setup-pin-code 20202021 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 2 --force-short-code 1 - Verify in DUT as client side [1651181048462] [11611:269469] CHIP: [TOO] Manual Code: 74970112334 disabled: true @@ -93,7 +123,7 @@ tests: verification: | $ ./chip-tool pairing code 1 74970112334 - Verify in DUT as client side + Verify on the DUT Commissioner side: [1651184274318] [12512:321250] CHIP: [SPL] Failed decoding base10. Input length 10 was not expected length 20 ... [1651184274321] [12512:321244] CHIP: [TOO] Run command failure: ../../examples/chip-tool/third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:63: CHIP Error 0x0000001E: Invalid string length @@ -109,11 +139,11 @@ tests: Discriminator value)" verification: | 1. Use chip-tool"s "payload generate-manualcode" command to help generate the new, invalid Manual code + No applicable DUT or TH logs $ ./chip-tool payload generate-manualcode --existing-payload 34970112332 --discriminator 0xE00 [1657236763262] [31784:16850989] CHIP: [TOO] Manual Code: 33331712336 - Verify in DUT as client side Manual Code: 33331712336 disabled: true @@ -121,7 +151,7 @@ tests: "Provide the Manual Pairing Code, generated in the previous step, to the DUT in any format supported by the DUT" verification: | - On DUT=chip-tool: + Verify on the DUT Commissioner side: $ ./chip-tool pairing code 1 33331712336 [1654001605.517505][3200:3205] CHIP:-: ../../third_party/connectedhomeip/src/platform/Linux/BLEManagerImpl.cpp:748: CHIP Error 0x0000002D: Not Implemented at ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:450 @@ -139,8 +169,7 @@ tests: 55555555, 66666666, 77777777, 88888888, 99999999, 12345678, 87654321" verification: | 1. Use these as examples of how to generate manual codes with invalid passcodes - - Verify in DUT as client side + No applicable DUT or TH logs "34915200008" (00000000), $ ./chip-tool payload generate-manualcode --discriminator 3840 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 0 --allow-invalid-payload 1 --setup-pin-code 00000000 @@ -195,7 +224,8 @@ tests: "Provide each of the Manual Pairing Codes, generated in the previous step, to the DUT in any format supported by the DUT" verification: | - Verify in DUT as client side + Verify on the DUT Commissioner side: + No applicable TH logs (00000000) $ ./chip-tool pairing code 1 34915200008 @@ -253,7 +283,8 @@ tests: CHECK_DIGIT while following Table 38. Encoding Method without Vendor and Product IDs (VID_PID_Present == 0))" verification: | - 1. Change the last digit of the manual pairing code to a different digit + 1. Manually change the last digit of the manual pairing code to a different digit + No applicable DUT or TH logs Manual Code: 34970112331 disabled: true @@ -262,7 +293,7 @@ tests: "Provide the Manual Pairing Code, generated in the previous step, to the DUT in any format supported by the DUT" verification: | - On DUT=chip-tool: + Verify on the DUT Commissioner side: $ ./chip-tool pairing code 1 34970112331 [1657586218401] [10710:465838] CHIP: [TOO] Run command failure: ../../third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:50: CHIP Error 0x00000013: Integrity check failed disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_17.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_17.yaml index 36730301d3760f..5f5987a38855cf 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_17.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_17.yaml @@ -27,11 +27,40 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + Preconditions + 1 - DUT is on an operational network and has accurate date, time, timezone, regulatory, and fabric information available. + + 2 - 5.1.4.2 - 21-digit Manual Pairing Code is printed on the Commissionee device or in additional provided materials (ex: manual). + + An example onboarding payload could be "749701123365521327694" (21-digit) (following 5.1.4. Table 37. "Manual Pairing Code Elements") which each include: + + - 1-bit VID_PID_PRESENT = 1 (21-digit only) + + - 1-bit VERSION=0 + + - 4-bit SHORT DISCRIMINATOR=0xF00 (4 Most-significant bits of the 12-bits Discriminator value) + + - 27-bit PASSCODE=20202021 (see section 5.1.6. Generation of the Passcode) + + - 16-bit VENDOR_ID=0xFFF1 (as defined in section 2.5.2. "Vendor Identifier", for 21-digit Manual Pairing Code only) + + - 16-bit PRODUCT_ID=0x8001 (as defined in section 2.5.3. "Product Identifier", present if and only if VID is present) + + - A generated CHECK_DIGIT (see section 5.1.4. Manual Pairing Code, subsection "Check Digit") + disabled: true + - label: "Provide the 21-digit Manual Pairing Code from the Commissionee to the DUT in any format supported by DUT" verification: | - Verify in TH as server side + Verify in TH Commissionee side: $ ./out/all-clusters-app/chip-all-clusters-app [1657203632.334400][13827:13827] CHIP:DL: Device Configuration: @@ -61,10 +90,10 @@ tests: 2" verification: | 1. Use chip-tool"s "payload verhoeff-generate" command to help generate the new, invalid Manual code + No applicable TH or DUT logs. $ ./chip-tool payload verhoeff-generate 84970112336552132769 - Verify in DUT as client side [1657238290868] [31968:16868160] CHIP: [SPL] Generating Character for: 84970112336552132769 [1657238290868] [31968:16868160] CHIP: [SPL] Generated Char: 3 @@ -77,7 +106,7 @@ tests: verification: | $ ./chip-tool pairing code 1 849701123365521327693 - Verify in DUT as client side + Verify in DUT Commissioner side: [1657238348848] [31971:16868925] CHIP: [TOO] Run command failure: ../../examples/chip-tool/third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:137: CHIP Error 0x0000002F: Invalid argument disabled: true @@ -87,9 +116,10 @@ tests: invalid VID_PID_PRESENT set to 0" verification: | 1. Use chip-tool"s "payload verhoeff-generate" command to help generate the new, invalid Manual code + No applicable TH or DUT logs. + $ ./chip-tool payload verhoeff-generate 34970112336552132769 - Verify in DUT as client side [1651186492744] [13434:353094] CHIP: [SPL] Generating Character for: 34970112336552132769 [1651186492744] [13434:353094] CHIP: [SPL] Generated Char: 6 @@ -102,7 +132,7 @@ tests: verification: | $ ./chip-tool pairing code 1 349701123365521327696 - Verify in DUT as client side + Verify in DUT Commissioner side: [1657238541643] [31975:16871084] CHIP: [SPL] Failed decoding base10. Input length 20 was not expected length 10 ... [1657238541644] [31975:16871079] CHIP: [TOO] Run command failure: ../../examples/chip-tool/third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:63: CHIP Error 0x0000001E: Invalid string length @@ -118,8 +148,8 @@ tests: Discriminator value)" verification: | 1. Use chip-tool"s "payload generate-manualcode" command to help generate the new, invalid Manual code + No applicable TH or DUT logs. - Verify in DUT as client side $ ./chip-tool payload generate-manualcode --existing-payload 749701123365521327694 --allow-invalid-payload 1 --discriminator 3584 [1657238783501] [31989:16873588] CHIP: [TOO] Manual Code: 733317123365521327692 disabled: true @@ -130,7 +160,7 @@ tests: verification: | $ ./chip-tool pairing code 1 733317123365521327692 - Verify in DUT as client side + Verify in DUT Commissioner side: [1655814152.716988][3723:3726] CHIP:CTL: Commissioning discovery over BLE failed: ../../third_party/connectedhomeip/src/platform/Linux/BLEManagerImpl.cpp:829: CHIP Error 0x00000032: Timeout [1655814152.717099][3723:3726] CHIP:-: ../../third_party/connectedhomeip/src/platform/Linux/BLEManagerImpl.cpp:829: CHIP Error 0x00000032: Timeout at ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:270 [1655814172.703455][3723:3728] CHIP:CTL: Discovery timed out @@ -148,10 +178,10 @@ tests: 55555555, 66666666, 77777777, 88888888, 99999999, 12345678, 87654321" verification: | 1. Use this as an example of how to generate a manual code with an invalid passcode. In this example the invalid passcode=00000000 + No applicable TH or DUT logs. Use chip-tool"s "payload generate-manualcode" command to help generate the new, invalid Manual code - Verify in DUT as client side $ ./chip-tool payload generate-manualcode --existing-payload 749701123365521327694 --allow-invalid-payload 1 --setup-pin-code 00000000 [1657239062245] [32164:16876812] CHIP: [TOO] Manual Code: 749152000065521327698 disabled: true @@ -160,7 +190,8 @@ tests: "Provide each of the Manual Pairing Codes, generated in the previous step, to the DUT in any format supported by the DUT" verification: | - Verify in DUT as client side + Verify in DUT Commissioner side: + No applicable TH logs. (00000000) $ ./chip-tool pairing code 1 749152000065521327698 @@ -230,8 +261,8 @@ tests: Test VENDOR_ID from the list: 0xFFF1, 0xFFF2, 0xFFF3, 0xFFF4" verification: | 1. Use this as an example of how to generate a manual code with an invalid vendor IDs + No applicable TH or DUT logs. - Verify in DUT as client side $ ./chip-tool payload generate-manualcode --discriminator 3840 --setup-pin-code 20202021 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 1 [1651189120686] [14218:398626] CHIP: [TOO] Manual Code: 749701123365521327694 disabled: true @@ -241,7 +272,7 @@ tests: step, to the DUT in any format supported by the DUT" verification: | 1. Run each of the following DUT commands below containing invalid Vendor IDs. - 2. Verify that the TH commissionee=all-cluserters-app does not get commissioned -or- the DUT make the user fully aware of the security risks of providing an uncertified device with operational and networking credentials + 2. Verify that the TH commissionee=all-cluserters-app does not get commissioned -OR- the DUT Commissioner make the user fully aware of the security risks of providing an uncertified device with operational and networking credentials (0xFFF1) $ ./chip-tool pairing code 1 749701123365521327694 @@ -249,11 +280,9 @@ tests: (0xFFF2) $ ./chip-tool pairing code 1 749701123365522327692 - (0xFFF3) $ ./chip-tool pairing code 1 749701123365523327697 - (0xFFF4) $ ./chip-tool pairing code 1 749701123365524327693 disabled: true @@ -265,8 +294,8 @@ tests: Identifier)" verification: | 1. Use chip-tool"s "payload generate-manualcode" command to help generate the new, invalid Manual code + No applicable TH or DUT logs. - Verify in DUT as client side $ ./chip-tool payload generate-manualcode --existing-payload 749701123365521327694 --allow-invalid-payload 1 --product-id 0x0000 [1657239418656] [32180:16880488] CHIP: [TOO] Manual Code: 749701123365521000006 disabled: true @@ -275,7 +304,7 @@ tests: "Provide the Manual Pairing Code, generated in the previous step, to the DUT in any format supported by the DUT" verification: | - Verify in DUT as client side + Verify in DUT Commissioner side: $ ./chip-tool pairing code 1 749701123365521000006 [1657239565895] [32193:16881922] CHIP: [TOO] Run command failure: ../../examples/chip-tool/third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:55: CHIP Error 0x0000002F: Invalid argument @@ -289,10 +318,10 @@ tests: Product IDs included (VID_PID_Present == 1))" verification: | 1. Use chip-tool"s "payload verhoeff-verify" command to help verify that the check-digit is invalid + No applicable TH or DUT logs. $ ./chip-tool payload verhoeff-verify 749701123365521327693 20 - Verify in DUT as client side [1651187504088] [13629:367627] CHIP: [SPL] Verifying Manual Code: 74970112336552132769 [1651187504088] [13629:367627] CHIP: [SPL] 749701123365521327693 is INVALID at position 20 disabled: true @@ -303,6 +332,16 @@ tests: verification: | $ ./chip-tool pairing code 1 749701123365521327693 - Verify in DUT as client side + Verify in DUT Commissioner side: [1651187528666] [13631:367920] CHIP: [TOO] Run command failure: ../../examples/chip-tool/third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:50: CHIP Error 0x00000013: Integrity check failed disabled: true + + - label: "" + verification: | + verification step to be updated. + disabled: true + + - label: "" + verification: | + verification step to be updated. + disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_18.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_18.yaml index aeee0bd664f89b..2531691ed693f2 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_18.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_18.yaml @@ -27,12 +27,24 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - DUT is on an operational network and has accurate date, time, timezone, regulatory, and fabric information available. + 2 - 5.1.3 - QR code is printed on the Commissionee devices or in additional provided materials (ex: manual). + disabled: true + - label: "Place TH1 into commissioning mode using the TH manufacturers means to be discovered by a commissioner" verification: | 1. After launching all-clusters-app using discriminator 3841 using below command $ ./out/all-clusters-app/chip-all-clusters-app --wifi --discriminator 3841 + No applicable TH or DUT logs. $ dns-sd -B _matterc._udp,_L3841 Browsing for _matterc._udp,_L3841 @@ -48,6 +60,7 @@ tests: verification: | 1. After launching all-clusters-app using discriminator 3844 using below command sudo ./chip-all-clusters-app --wifi --discriminator 3844 + No applicable TH or DUT logs. $ dns-sd -B _matterc._udp,_L3844 Browsing for _matterc._udp,_L3844 @@ -69,11 +82,11 @@ tests: Commissioner/Commissionee to complete the commissioning process over the TH Commissionees method of device discovery" verification: | - TH1 Commissionee: + Verify on the TH1 Commissionee: [1657240914.891250][372173:372173] CHIP:SVR: Commissioning completed successfully [1657240914.891297][372173:372173] CHIP:DIS: Updating services using commissioning mode 0 - DUT Commissioner: + Verify on the DUT Commissioner: $ ./chip-tool pairing code 1 MT:-24J0IRV01KA0648G00 [1657240914764] [32262:16895870] CHIP: [CTL] Successfully finished commissioning step "Cleanup" @@ -92,11 +105,11 @@ tests: Commissioner/Commissionee to complete the commissioning process over the TH Commissionees method of device discovery" verification: | - TH2 Commissionee: + Verify on the TH2 Commissionee: [1657240985.801360][112581:112581] CHIP:SVR: Commissioning completed successfully [1657240985.801406][112581:112581] CHIP:DIS: Updating services using commissioning mode 0 - DUT Commissioner: + Verify on the DUT Commissioner: $ ./chip-tool pairing code 2 MT:-24J04QI14KA0648G00 [1657240985682] [32264:16896797] CHIP: [CTL] Successfully finished commissioning step "Cleanup" @@ -109,7 +122,7 @@ tests: verification: | $ ./chip-tool basic read reachable 1 0 - Verify in DUT as client side + Verify in DUT Commissioner side: [1657241043430] [32266:16897416] CHIP: [TOO] Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0011 DataVersion: 131004400 [1657241043432] [32266:16897416] CHIP: [TOO] Reachable: TRUE @@ -121,7 +134,7 @@ tests: verification: | $ ./chip-tool basic read reachable 2 0 - Verify in DUT as client side + Verify in DUT Commissioner side: [1657241066927] [32267:16897671] CHIP: [TOO] Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0011 DataVersion: 2450774961 [1657241066927] [32267:16897671] CHIP: [TOO] Reachable: TRUE diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_19.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_19.yaml index 4920069bae4662..d7dc97a42dd086 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_19.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_19.yaml @@ -27,11 +27,17 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + 1 - Commissioner is on an operational network and has accurate date, time, timezone, regulatory, and fabric information available. + 2 - 5.1.3 - QR code is printed on the Commissionee device or in additional provided materials (ex: manual). + disabled: true + - label: "Place DUT into commissioning mode using the DUTs manufacturers means to be discovered by the TH Commissioner" verification: | - DUT Commissionee: + Verify on DUT Commissionee side: $ ./out/all-clusters-app/chip-all-clusters-app --discriminator 3841 [1651111142.369356][32024:32024] CHIP:DL: Device Configuration: @@ -45,7 +51,7 @@ tests: [1651111142.369573][32024:32024] CHIP:DL: Device Type: 65535 (0xFFFF) [1651111142.370760][32024:32024] CHIP:SVR: SetupQRCode: [MT:-24J0ALY01KA0648G00] - TH Commissioner: + Verify on TH Commissioner side: $ ./chip-tool discover commissionables [1651111150395] [95835:65674062] CHIP: [DL] Mdns: OnNewAddress interface: 7 ip:192.168.1.2 @@ -68,11 +74,11 @@ tests: for the Commissioner/Commissionee to complete the commissioning process over the DUT Commissionees method of device discovery" verification: | - DUT Commissionee: + Verify on DUT Commissionee side: [1651111335.475159][32130:32130] CHIP:SVR: Commissioning completed successfully [1651111335.475204][32130:32130] CHIP:DIS: Updating services using commissioning mode 0 - TH Commissioner: + Verify on TH Commissioner side: $ ./chip-tool pairing code 1 MT:-24J0ALY01KA0648G00 [1651111335378] [95843:65675989] CHIP: [CTL] Received CommissioningComplete response @@ -106,7 +112,7 @@ tests: 1. On RasPi DUT $ rm -rf /tmp/chip* 2. On RasPi DUT $ ./out/all-clusters-app/chip-all-clusters-app --discriminator 3841 - On TH chip-tool: + Verify on TH Commissioner side: $ ./chip-tool discover commissionables [1651111576350] [95850:65678872] CHIP: [DL] Mdns: OnNewAddress interface: 7 ip:192.168.1.2 [1651111576350] [95850:65678872] CHIP: [DIS] Vendor ID: 65521 @@ -128,11 +134,11 @@ tests: for the Commissioner/Commissionee to complete the commissioning process over the DUT Commissionees method of device discovery" verification: | - DUT Commissionee: + Verify on DUT Commissionee side: [1651111614.006849][32259:32259] CHIP:SVR: Commissioning completed successfully [1651111614.006893][32259:32259] CHIP:DIS: Updating services using commissioning mode 0 - TH Commissioner: + Verify on TH Commissioner side: $ ./chip-tool pairing code 1 MT:-24J0ALY01KA0648G00 [1651111613912] [95856:65679504] CHIP: [CTL] Received CommissioningComplete response diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_2.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_2.yaml index 33a3be710bcd09..27b21af3206274 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_2.yaml @@ -25,13 +25,18 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + 1 - 5.5 - Commissioner is on a network. - The network can either be IP-based(Ethernet or WiFi) or Thread. Commissioner can either be a Matter device which is already on a network or the test harness connected to the network. + disabled: true + - label: "Commissioner and Commissionee discover each other and connect via the discovery mode applicable for the DUT." verification: | - Verify in TH as server side: start BLE Advertising by specific DUT implementation + Verify in DUT as commissionee side: start BLE Advertising by specific DUT implementation - Verify in DUT as client side: start commissioning process(need to obtain the Thread dataset first) + Verify in TH as commissioner side: start commissioning process(need to obtain the Thread dataset first) ./chip-tool pairing ble-thread 1 hex:0e080000000000010000000300000f35060004001fffe0020811111111222222220708fd27e57b1b1e22d9051000112233445566778899aabbccddeeff030e4f70656e54687265616444656d6f01021234041061e1206d2c2b46e079eb775f41fc72190c0402a0fff8 20202021 3840 ,, @@ -41,7 +46,7 @@ tests: "Establish encryption keys with Password Authenticated Session Establishment on the commissioning channel" verification: | - Verify in DUT as client side + Verify in TH as commissioner side CHIP:SC: Received PBKDF param response disabled: true @@ -50,7 +55,7 @@ tests: "Commissioner SHALL re-arm Fail-safe timer on Commissionee within 60s (the autonomously Fail-safe timer length set by Commissionee)" verification: | - Verify in DUT as client side + Verify in TH as commissioner side CHIP:CTL: Arming failsafe (60 seconds) disabled: true @@ -60,7 +65,7 @@ tests: Commissionee." PICS: MCORE.COM.WIRELESS verification: | - Verify in DUT as client side + Verify in TH as commissioner side CHIP:CTL: Setting Regulatory Config disabled: true @@ -69,7 +74,7 @@ tests: "Commissioner requests operational CSR from Commissionee with OperationalCSRRequest command" verification: | - Verify in DUT as client side + Verify in TH as commissioner side CHIP:CTL: Sending CSR request to 0xffffa4001730 device CHIP:DMG: ICR moving to [AddingComm] @@ -133,7 +138,7 @@ tests: "Commissioner configures operational credentials on DUT if not previously installed" verification: | - Verify in DUT as client side + Verify in TH as commissioner side [1651218829.220063][3273:3278] CHIP:CTL: Sending root certificate to the device [1651218829.220201][3273:3278] CHIP:DMG: ICR moving to [AddingComm] @@ -187,7 +192,7 @@ tests: "Commissioner configures itself as administrator in ACL on DUT if needed" verification: | - Verify in DUT as client side + Verify in TH as commissioner side [1651218829.457248][3273:3278] CHIP:CTL: Sending operational certificate chain to the device [1651218829.457372][3273:3278] CHIP:DMG: ICR moving to [AddingComm] @@ -243,7 +248,7 @@ tests: "Commissioner configures operational network on DUT if DUT both supports and requires" verification: | - Verify in DUT as client side + Verify in TH as commissioner side [1651218833.995054][3273:3278] CHIP:CTL: Adding thread network [1651218833.995176][3273:3278] CHIP:DMG: ICR moving to [AddingComm] @@ -295,7 +300,7 @@ tests: "Commissioner instructs Commissionee to connect to operational network if not already connected" verification: | - Verify in DUT as client side + Verify in TH as commissioner side [1651218834.137891][3273:3278] CHIP:CTL: Enabling thread network [1651218834.138014][3273:3278] CHIP:DMG: ICR moving to [AddingComm] @@ -353,7 +358,7 @@ tests: - label: "Commissioner starts discovery of DUT using Operational Discovery" verification: | - Verify in DUT as client side + Verify in TH as commissioner side CHIP:DL: Avahi resolve found CHIP:DIS: Node ID resolved for 0x0000000000000001 @@ -364,7 +369,7 @@ tests: - label: "Commissioner opens a CASE session with DUT over operational network" verification: | - Verify in DUT as client side + Verify in TH as commissioner side CHIP:SC: Sent Sigma1 msg CHIP:CTL: Address resolved for node: 0x0000000000000001 @@ -403,7 +408,7 @@ tests: - label: "Commissioner sends CommissioningComplete command" verification: | - Verify in DUT as client side + Verify in TH as commissioner side CHIP:CTL: Received CommissioningComplete response CHIP:CTL: Rendezvous cleanup diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_20.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_20.yaml index e1b52070927b42..d78e3ffc11e3be 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_20.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_20.yaml @@ -27,11 +27,23 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - DUT is on an operational network and has accurate date, time, timezone, regulatory, and fabric information available. + 2 - 5.1.3 - QR code is printed on the Commissionee device or in additional provided materials (ex: manual). + disabled: true + - label: "Place TH into commissioning mode using the TH manufacturers means to be discovered by the DUT Commissioner" verification: | $ ./out/all-clusters-app/chip-all-clusters-app --discriminator 3840 + Verify on TH Commissionee side: [1651109580.413197][31207:31207] CHIP:DL: Device Configuration: [1651109580.413259][31207:31207] CHIP:DL: Serial Number: TEST_SN @@ -58,11 +70,11 @@ tests: Commissioner/Commissionee to complete the commissioning process over the TH Commissionees method of device discovery" verification: | - TH Commissionee: + Verify on TH Commissionee side: [1651109784.452770][31207:31207] CHIP:SVR: Commissioning completed successfully [1651109784.452813][31207:31207] CHIP:DIS: Updating services using commissioning mode 0 - DUT Commissioner: + Verify on DUT Commissioner side: $ ./chip-tool pairing code 1 MT:-24J0AFN00KA0648G00 [1651109784376] [95553:65657838] CHIP: [CTL] Received CommissioningComplete response @@ -78,6 +90,7 @@ tests: network." verification: | ./chip-tool operationalcredentials remove-fabric 1 1 0 + Verify on DUT Commissioner side: CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0008 CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Command 0x0000_0008 @@ -92,7 +105,10 @@ tests: "Place TH Commissionee back into commissioning mode using the TH manufacturers means to be discovered by the DUT Commissioner" verification: | + 1. Place the TH into commissioning mode by launching the app again + $ ./out/all-clusters-app/chip-all-clusters-app --discriminator 3840 + Verify on TH Commissionee side: [1651110721.112368][31791:31791] CHIP:DL: Device Configuration: [1651110721.112448][31791:31791] CHIP:DL: Serial Number: TEST_SN @@ -119,11 +135,11 @@ tests: Commissioner/Commissionee to complete the commissioning process over the TH Commissionees method of device discovery" verification: | - TH Commissionee: + Verify on TH Commissionee side: [1651110724.759825][31791:31791] CHIP:SVR: Commissioning completed successfully [1651110724.759869][31791:31791] CHIP:DIS: Updating services using commissioning mode 0 - DUT Commissioner: + Verify on DUT Commissioner side: $ ./chip-tool pairing code 1 MT:-24J0AFN00KA0648G00 [1651110724689] [95810:65669790] CHIP: [CTL] Received CommissioningComplete response diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_21.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_21.yaml index ad4ea586253bbf..a860d0ddbf32f1 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_21.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_21.yaml @@ -27,13 +27,24 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - DUT is on an operational network and has accurate date, time, timezone, regulatory, and fabric information available. + 2 - 5.1.3 - QR code is printed on the Commissionee device or in additional provided materials (ex: manual). + disabled: true + - label: "Place TH into commissioning mode using the TH manufacturers means to be discovered by the DUT Commissioner" verification: | $ ./out/all-clusters-app/chip-all-clusters-app --discriminator 3840 - Verify in TH as server side + Verify on TH Commissionee side: [1651109580.413197][31207:31207] CHIP:DL: Device Configuration: [1651109580.413259][31207:31207] CHIP:DL: Serial Number: TEST_SN [1651109580.413294][31207:31207] CHIP:DL: Vendor Id: 65521 (0xFFF1) @@ -59,11 +70,11 @@ tests: Commissioner/Commissionee to complete the commissioning process over the TH Commissionees method of device discovery" verification: | - TH Commissionee: + Verify on TH Commissionee side: [1651109784.452770][31207:31207] CHIP:SVR: Commissioning completed successfully [1651109784.452813][31207:31207] CHIP:DIS: Updating services using commissioning mode 0 - DUT Commissioner: + Verify on DUT Commissioner side: $ ./chip-tool pairing code 1 MT:-24J0AFN00KA0648G00 [1651109784376] [95553:65657838] CHIP: [CTL] Received CommissioningComplete response @@ -81,12 +92,12 @@ tests: user action to trigger such command)." verification: | 1. Send "on" command from Commissioner to TH Endpoint 1 - On DUT=chip-tool: + Verify on DUT Commissioner side: $ ./chip-tool onoff on 1 1 [...] [1657930715416] [56399:2451384] CHIP: [DMG] Received Command Response Status for Endpoint=1 Cluster=0x0000_0006 Command=0x0000_0001 Status=0x0 - On TH=all-clusters-app: + Verify on TH Commissionee side: [...] [1657930715.432295][2911:2911] CHIP:ZCL: On/Off set value: 1 1 [1657930715.432341][2911:2911] CHIP:ZCL: Toggle on/off from 0 to 1 diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_3.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_3.yaml index cb0031d272db29..d57af20dbf9a61 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_3.yaml @@ -26,6 +26,13 @@ config: endpoint: 0 tests: + - label: "" + verification: | + Preconditions + 1 - User must indicate the intention for commissioning using a display or other UI elements. + 2 - TH is not advertising Commissioner Discovery Service at start + disabled: true + - label: "DUT start scanning for available commissioners using Commissioner Discovery" @@ -35,6 +42,8 @@ tests: - label: "TH is instructed to advertise Commissioner Discovery service" verification: | + chip-tv-app is used as TH + ubuntu@ubuntu:~/may23_DUT/connectedhomeip/examples/tv-app/linux/out/tv-app$ sudo ./chip-tv-app Verify in tv-app side @@ -49,10 +58,11 @@ tests: "DUT start scanning for available commissioners using Commissioner Discovery" verification: | - connectedhomeip/examples/tv-casting-app/linux/out/tv-casting-app$ sudo ./chip-tv-casting-app + In certification QA we are using chip-tv-casting-app as a reference app, In case of certification testing, DUT (app) vendor to provide instructions on how to scan for commissioners + connectedhomeip/examples/tv-casting-app/linux/out/tv-casting-app$ sudo ./chip-tv-casting-app - Verify in tv-casting-app side + Verify for the commissioner advertisements from the TH in tv-casting-app side CHIP:SVR: Discovered Commissioner #0 [1653478433.097515][3785:3785] CHIP:DIS: Hostname: E45F010F19FF0000 [1653478433.097546][3785:3785] CHIP:DIS: IP Address #1: fe80::d83a:21ff:fe24:b6d6 @@ -96,15 +106,28 @@ tests: - label: "TH start the commissioning procedure with DUT" verification: | - ./chip-tool pairing ethernet 1 20202021 3840 fe80::e65f:1ff:fe0f:2755 5640 + Into the shell, enter "cast request 0" to send a user-directed-commissioning request to the DUT on tv-casting-app side + + > cast request 0 + [1653179218011] [47890:1899175] CHIP: [DL] request + [1653179218011] [47890:1899175] CHIP: [SVR] ------- PrepareForCommissioning + [1653179218011] [47890:1899175] CHIP: [SVR] Server initializing... + + + UX will vary by product maker. The following is the tv-app shell output: + + [1653179219087] [89108:1898759] CHIP: [CTL] ------PROMPT USER: Test TV casting app is requesting permission to cast to this TV, approve? [0x0000_FFF1,0x0000_8001,E0707BB1AFFA6F23,020096D16895275F1B49A07221F0E588E06B] + + [1653179219087] [89108:1898759] CHIP: [CTL] ------Via Shell Enter: controller ux ok|cancel + + + Into the DUT UX, accept request for commissioning. Manufacturer may utilize a custom method for obtaining user consent other than an on-screen prompt. + + The following is the tv-app shell command to accept the request + + > controller ux ok - Verify in TH log: + The commissioning success completion is indicated in the TH with the following shell output: - [1653559159.021348][4240:4246] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0005 - [1653559159.021432][4240:4246] CHIP:CTL: Received CommissioningComplete response, errorCode=0 - [1653559159.021499][4240:4246] CHIP:CTL: Successfully finished commissioning step "SendComplete" - [1653559159.021554][4240:4246] CHIP:CTL: Commissioning stage next step: "SendComplete" -> "Cleanup" - [1653559159.021611][4240:4246] CHIP:CTL: Performing next commissioning step "Cleanup" - [1653559159.021725][4240:4246] CHIP:CTL: Successfully finished commissioning step "Cleanup" - [1653559159.021790][4240:4246] CHIP:TOO: Device commissioning completed with success + [1653088463910] [86837:1122544] CHIP: [SVR] Commissioning completed successfully disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_4.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_4.yaml index 202705aee928d1..de3bb357ac2a44 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_4.yaml @@ -26,11 +26,25 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - User must indicate the intention for commissioning using a display or other UI elements." + disabled: true + - label: "DUT is instructed to advertise Commissioner Discovery service" verification: | + Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner) or tv-casting-app (when DUT is a commissionee): + + chip-tv-app is used as TH + ubuntu@ubuntu:~/may23_DUT/connectedhomeip/examples/tv-app/linux/out/tv-app$ sudo ./chip-tv-app - Verify in tv-app side: + Verify in tv-app side CHIP:DL: Using wifi MAC for hostname CHIP:DIS: Advertise operational node DFC28FF9FE811EF2-FFFFFFEFFFFFFFFF @@ -42,54 +56,105 @@ tests: "TH starts scanning for available commissioners using Commissioner Discovery" verification: | - ubuntu@ubuntu:~/may23_cntrl/connectedhomeip/examples/chip-tool/out/debug$ avahi-browse -rt _matterd._udp - - + eth0 IPv6 A0BF4D00BE973DEC _matterd._udp local - + eth0 IPv6 252FB62C79E2724B _matterd._udp local - = eth0 IPv6 A0BF4D00BE973DEC _matterd._udp local - hostname = [E45F010F27530000.local] - address = [fe80::e65f:1ff:fe0f:2755] - port = [5650] - txt = ["T=1" "SAI=300" "SII=5000" "DN=Test TV" "DT=35" "VP=65521+32769"] - = eth0 IPv6 252FB62C79E2724B _matterd._udp local - hostname = [E45F010F27530000.local] - address = [fe80::e65f:1ff:fe0f:2755] - port = [5650] - txt = ["T=1" "SAI=300" "SII=5000" "DN=Test TV" "DT=35" "VP=65521+32769"] + Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner) or tv-casting-app (when DUT is a commissionee): + + In certification QA we are using chip-tv-casting-app as a reference app, In case of certification testing, DUT (app) vendor to provide instructions on how to scan for commissioners + + connectedhomeip/examples/tv-casting-app/linux/out/tv-casting-app$ sudo ./chip-tv-casting-app + + Verify for the commissioner advertisements from the TH in tv-casting-app side + + [1660758661.643392][2867:2867] CHIP:SVR: Discovered Commissioner #0 + [1660758661.643469][2867:2867] CHIP:DIS: Discovered node: + [1660758661.643506][2867:2867] CHIP:DIS: Hostname: E45F010F3BAF0000 [1660758661.643561][2867:2867] CHIP:DIS: IP Address #1: fe80::9052:32ff:fe00:92c4 + [1660758661.643606][2867:2867] CHIP:DIS: Port: 5540 + [1660758661.643648][2867:2867] CHIP:DIS: Mrp Interval idle: 5000 ms + [1660758661.643691][2867:2867] CHIP:DIS: Mrp Interval active: 300 ms + [1660758661.643733][2867:2867] CHIP:DIS: TCP Supported: 1 + [1660758661.643779][2867:2867] CHIP:DIS: Rotating ID: 0000406E4D7073744BF234AD391DAE869837 + [1660758661.643832][2867:2867] CHIP:DIS: Device Name: Test TV casting app + [1660758661.643876][2867:2867] CHIP:DIS: Vendor ID: 65521 + [1660758661.643918][2867:2867] CHIP:DIS: Product ID: 32769 + [1660758661.643960][2867:2867] CHIP:DIS: Device Type: 35 + [1660758661.644117][2867:2867] CHIP:DIS: Pairing Hint: 33 + [1660758661.644170][2867:2867] CHIP:DIS: Instance Name: 742273AB254EDCE1 + [1660758661.644212][2867:2867] CHIP:DIS: Commissioning Mode: 0 + [1660758661.644256][2867:2867] CHIP:SVR: Discovered Commissioner #1 + [1660758661.644294][2867:2867] CHIP:DIS: Discovered node: + [1660758661.644329][2867:2867] CHIP:DIS: Hostname: E45F010F27530000 [1660758661.644378][2867:2867] CHIP:DIS: IP Address #1: fe80::e65f:1ff:fe0f:2753 + [1660758661.644426][2867:2867] CHIP:DIS: IP Address #2: fe80::e65f:1ff:fe0f:2753 + [1660758661.644468][2867:2867] CHIP:DIS: Port: 5640 + [1660758661.644510][2867:2867] CHIP:DIS: Mrp Interval idle: 5000 ms + [1660758661.644552][2867:2867] CHIP:DIS: Mrp Interval active: 300 ms + [1660758661.644594][2867:2867] CHIP:DIS: TCP Supported: 1 + [1660758661.644638][2867:2867] CHIP:DIS: Rotating ID: 01005FDB39737473FB22B819CEBB1084AFD5 + [1660758661.644680][2867:2867] CHIP:DIS: Device Name: Test TV + [1660758661.644721][2867:2867] CHIP:DIS: Vendor ID: 65521 + [1660758661.644762][2867:2867] CHIP:DIS: Product ID: 32769 + [1660758661.644803][2867:2867] CHIP:DIS: Device Type: 35 + [1660758661.644844][2867:2867] CHIP:DIS: Long Discriminator: 3840 + [1660758661.644886][2867:2867] CHIP:DIS: Pairing Hint: 33 + [1660758661.644927][2867:2867] CHIP:DIS: Instance Name: 38D0A5D1137B8FF4 + [1660758661.644968][2867:2867] CHIP:DIS: Commissioning Mode: 1 + [1660758661.645010][2867:2867] CHIP:SVR: Discovered Commissioner #2 + [1660758661.645046][2867:2867] CHIP:DIS: Discovered node: + [1660758661.645082][2867:2867] CHIP:DIS: Hostname: E45F010F27530000 [1660758661.645128][2867:2867] CHIP:DIS: IP Address #1: fe80::e65f:1ff:fe0f:2753 + [1660758661.645174][2867:2867] CHIP:DIS: IP Address #2: fe80::e65f:1ff:fe0f:2753 + [1660758661.645217][2867:2867] CHIP:DIS: Port: 5650 + [1660758661.645258][2867:2867] CHIP:DIS: Mrp Interval idle: 5000 ms + [1660758661.645299][2867:2867] CHIP:DIS: Mrp Interval active: 300 ms + [1660758661.645340][2867:2867] CHIP:DIS: TCP Supported: 1 + [1660758661.645382][2867:2867] CHIP:DIS: Device Name: Test TV + [1660758661.645424][2867:2867] CHIP:DIS: Vendor ID: 65521 + [1660758661.645465][2867:2867] CHIP:DIS: Product ID: 32769 + [1660758661.645506][2867:2867] CHIP:DIS: Device Type: 35 + [1660758661.645548][2867:2867] CHIP:DIS: Instance Name: 38D0A5D1137B8FF4 + [1660758661.645589][2867:2867] CHIP:DIS: Commissioning Mode: 0 + [1660758661.645633][2867:2867] CHIP:SVR: 3 commissioner(s) discovered. Select one (by number# above) to request commissioning from: + [1660758661.645672][2867:2867] CHIP:SVR: Example: cast request 0 disabled: true - label: "TH is instructed to start the commissioning procedure with the DUT found at Step 2" verification: | - Out of scope for V1.0 - IDM functionality - - https://github.com/project-chip/connectedhomeip/issues/11004 + Out of scope for V1.0 disabled: true - label: "DUT verifies the Identification Declaration message" verification: | - Out of scope for V1.0 - IDM functionality - - https://github.com/project-chip/connectedhomeip/issues/11004 + Out of scope for V1.0 disabled: true - label: "By any means, DUT prompts user for onboarding payload" verification: | - verification step to be updated. + Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner) or tv-casting-app (when DUT is a commissionee): + + + Into the shell, enter "cast request 0" to send a user-directed-commissioning request to the DUT on tv-casting-app side + > cast request 0 [1653179218011] [47890:1899175] CHIP: [DL] request [1653179218011] [47890:1899175] CHIP: [SVR] ------- PrepareForCommissioning [1653179218011] [47890:1899175] CHIP: [SVR] Server initializing... disabled: true - label: "DUT starts the commissioning procedure with TH" verification: | - ./chip-tool pairing ethernet 1 20202021 3840 fe80::e65f:1ff:fe0f:2755 5640 + Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner) or tv-casting-app (when DUT is a commissionee): + + + + UX will vary by product maker. The following is the tv-app shell output: + + [1653179219087] [89108:1898759] CHIP: [CTL] ------PROMPT USER: Test TV casting app is requesting permission to cast to this TV, approve? [0x0000_FFF1,0x0000_8001,E0707BB1AFFA6F23,020096D16895275F1B49A07221F0E588E06B] + + [1653179219087] [89108:1898759] CHIP: [CTL] ------Via Shell Enter: controller ux ok|cancel + + + Into the DUT UX, accept request for commissioning. Manufacturer may utilize a custom method for obtaining user consent other than an on-screen prompt. + + The following is the tv-app shell command to accept the request + + > controller ux ok - Verify in DUT as commissioner side Log: + The commissioning success completion is indicated in the TH with the following shell output: - [1653559159.021348][4240:4246] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0005 - [1653559159.021432][4240:4246] CHIP:CTL: Received CommissioningComplete response, errorCode=0 - [1653559159.021499][4240:4246] CHIP:CTL: Successfully finished commissioning step "SendComplete" - [1653559159.021554][4240:4246] CHIP:CTL: Commissioning stage next step: "SendComplete" -> "Cleanup" - [1653559159.021611][4240:4246] CHIP:CTL: Performing next commissioning step "Cleanup" - [1653559159.021725][4240:4246] CHIP:CTL: Successfully finished commissioning step "Cleanup" - [1653559159.021790][4240:4246] CHIP:TOO: Device commissioning completed with success + [1653088463910] [86837:1122544] CHIP: [SVR] Commissioning completed successfully disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_5.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_5.yaml index 92c0210c262910..8bb958ed534822 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_5.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_5.yaml @@ -24,13 +24,25 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - 5.5 - Commissioner is on a network. - The network can either be WiFi or Thread. + + 2 - 5.5 - Commissionee can either be a Matter device which is already on a network or the test harness connected to the network. + disabled: true + - label: "Commissioner has regulatory and fabric information available and has accurate date, time and timezone" verification: | sudo ./chip-all-clusters-app --wifi --discriminator 3841 - Verify in TH as server side + Verify in TH as commissionee side: [1653471956.966855][10713:10713] CHIP:SPT: PASE PBKDF iterations set to 1000 [1653471956.966887][10713:10713] CHIP:SPT: LinuxCommissionableDataProvider didn"t get a PASE salt, generating one. @@ -56,7 +68,7 @@ tests: ./chip-tool pairing code 1 MT:-24J0CEK01KA0648G00 - Verify in DUT as client side + Verify in DUT as commissioner side: [1657226543861] [30621:16744161] CHIP: [IN] SecureSession[0x6000007cc000]: Activated - Type:1 LSID:47293 [1657226543861] [30621:16744161] CHIP: [IN] New secure session activated for device , LSID:47293 PSID:201! @@ -74,7 +86,7 @@ tests: (DNS-SD)" PICS: MCORE.DD.DISCOVERY_IP verification: | - Verify in DUT as client side + Verify in DUT as commissioner side: ./chip-tool pairing code 1 MT:-24J0AFN00KA0648G00 ... [1657226543861] [30621:16744161] CHIP: [IN] SecureSession[0x6000007cc000]: Activated - Type:1 LSID:47293 @@ -86,7 +98,7 @@ tests: [1657226543861] [30621:16744161] CHIP: [CTL] Commissioning stage next step: "SecurePairing" -> "ReadCommissioningInfo" - Verify in TH as server side + Verify in TH as commissionee side: $ ./out/all-clusters-app/chip-all-clusters-app ... [1657226543.948995][369114:369114] CHIP:IN: SecureSession[0xaaaab60788e0]: Activated - Type:1 LSID:201 @@ -100,7 +112,7 @@ tests: verification: | Verify that the responder receives the PBKDFParamRequest message - Verify in DUT as client side + Verify in DUT as commissioner side: CHIP:SC: Received PBKDF param request CHIP:SC: Peer assigned session ID 18450 CHIP:SC: Found MRP parameters in the message @@ -110,7 +122,7 @@ tests: CHIP:IN: Sending unauthenticated msg 0xaaaaad340560 with MessageCounter:1341084110 to 0x0000000000000000 at monotonic time: 0000000000FBA380 msec CHIP:SC: Sent PBKDF param response - Verify in TH as server side + Verify in TH as commissionee side: Sent PBKDF param request [1653471961.364996][30157:30162] CHIP:CTL: Setting wifi credentials from parameters [1653471961.365051][30157:30162] CHIP:CTL: Setting attestation nonce to random value @@ -128,10 +140,10 @@ tests: "Commissioner SHALL re-arm Fail-safe timer on Commissionee within 60s (the autonomously Fail-safe timer length set by Commissionee)" verification: | - Verify in TH as server side + Verify in TH as commissionee side: CHIP:DL: NVS set: chip-config/fail-safe-armed = true - Verify in DUT as client side + Verify in DUT as commissioner side: : Performing next commissioning step "ArmFailSafe" [1653471968.064493][30157:30162] CHIP:CTL: Arming failsafe (60 seconds) @@ -142,12 +154,12 @@ tests: Commissionee." PICS: MCORE.COM.WIRELESS verification: | - Verify in DUT as client side + Verify in DUT as commissioner side Performing next commissioning step "ConfigRegulatory" [1653471968.202645][30157:30162] CHIP:CTL: Setting Regulatory Config [1653471968.202666][30157:30162] CHIP:CTL: No regulatory config supplied by controller, leaving as device default (0) - Verify in TH as server side + Verify in TH as commissionee side NVS set: chip-config/regulatory-location = 0 (0x0) disabled: true @@ -155,14 +167,14 @@ tests: "Commissioner requests operational CSR from Commissionee with OperationalCSRRequest command" verification: | - Verify the following on DUT after commissioning + 1. Verify the following on DUT after commissioning - Verify in TH as server side + Verify in TH as commissionee side: [1646909537.102263][3145:3150] CHIP:CTL: Received Attestation Information from the device [1646909537.102418][3145:3150] CHIP:CTL: Verifying attestation [1646909537.115081][3145:3150] CHIP:CTL: Successfully validated "Attestation Information" command received from the device. - Verify in DUT as client side + Verify in DUT as commissioner side CHIP:ZCL: OpCreds: commissioner has requested a CSR CHIP:ZCL: OpCreds: NewCertificateSigningRequest returned ../../third_party/connectedhomeip/src/crypto/CHIPCryptoPALOpenSSL.cpp:1114: Success disabled: true @@ -171,11 +183,11 @@ tests: "Commissioner configures operational credentials on DUT if not previously installed" verification: | - Verify in DUT as client side + Verify in DUT as commissioner side: OpCreds: Received an AddTrustedRootCertificate command - Verify in TH as server side + Verify in TH as commissionee side: Sending root certificate to the device CHIP:DMG: ICR moving to [AddingComm] @@ -190,7 +202,7 @@ tests: "Commissioner configures itself as administrator in ACL on TH if needed" verification: | - Verify in DUT as client side after commissioning + Verify in DUT as commissioner side after commissioning: CHIP:CTL: Commissioning stage next step: "SendTrustedRootCert" -> "SendNOC" [1653471969.812357][30157:30162] CHIP:CTL: Performing next commissioning step "SendNOC" @@ -244,7 +256,7 @@ tests: [1653471970.347439][30157:30162] CHIP:TOO: Secure Pairing Success [1653471970.347485][30157:30162] CHIP:CTL: Successfully finished commissioning step "SendNOC" - Verify in DUT as client side + Verify in TH as commissionee side: OpCreds: Received an AddNOC command disabled: true @@ -253,24 +265,29 @@ tests: "Commissioner configures operational network on TH if TH both supports and requires" verification: | - Verify in DUT as client side after commissioning - + Verify in DUT as commissioner side after commissioning: [1646909537.345068][3145:3150] CHIP:CTL: Received certificate signing request from the device + + Verifiy on TH as commissionee side: + [1660151567834] [99153:10411339] CHIP: [CTL] Received certificate signing request from the device + [1660151567834] [99153:10411339] CHIP: [CTL] Successfully finished commissioning step "SendOpCertSigningRequest" disabled: true - label: "Commissioner instructs Commissionee to connect to operational network if not already connected" verification: | - Verify in DUT as client side after commissioning - + Verify in DUT as commissioner side after commissioning: [1646909537.976592][3145:3150] CHIP:CTL: Operational credentials provisioned on device 0xffffac001730 [1646909537.976664][3145:3150] CHIP:TOO: Secure Pairing Success + + Verifiy on TH as commissionee side: + [1660152735.835717][648909:648909] CHIP:ZCL: OpCreds: successfully created fabric index 0x1 via AddNOC disabled: true - label: "Commissioner starts discovery of TH using Operational Discovery" verification: | - Verify in DUT as client side + Verify in DUT as commissioner side: Commissioning stage next step: "WiFiNetworkEnable" -> "FindOperational" [1653471976.344532][30157:30162] CHIP:CTL: Performing next commissioning step "FindOperational" @@ -287,12 +304,18 @@ tests: [1653471976.348732][30157:30162] CHIP:DIS: Mrp Interval idle: 5000 ms [1653471976.348762][30157:30162] CHIP:DIS: Mrp Interval active: 300 ms [1653471976.349059][30157:30162] CHIP:DIS: UDP:[fe80::e65f:1ff:fe0f:2753%eth0]:5540: new best score: 3 + + Verifiy on TH as commissionee side: + [1660152735.835315][648909:648909] CHIP:DIS: Broadcasting mDns reply for query from fe80::808c:7ff:fefd:3b1 + [1660152735.835522][648909:648909] CHIP:DIS: mDNS service published: _matter._tcp + [1660152735.835565][648909:648909] CHIP:DMG: Endpoint 0, Cluster 0x0000_003E update version to 553aae1 + [1660152735.835594][648909:648909] CHIP:DMG: Endpoint 0, Cluster 0x0000_003E update version to 553aae2 disabled: true - label: "Commissioner opens a CASE session with TH over operational network" verification: | - Verify in DUT as client side + Verify in DUT as commissioner side: CASE Server enabling CASE session setups [1653471957.713139][10713:10713] CHIP:SVR: Joining Multicast groups @@ -303,16 +326,18 @@ tests: - label: "Commissioner sends CommissioningComplete command" verification: | - Received CommissioningComplete response - + Verify in DUT as commissioner side: CHIP:CTL: Received CommissioningComplete response + + Verifiy on TH as commissionee side: + [1660154248.898113][7143:7143] CHIP:SVR: Commissioning completed successfully disabled: true - label: "Commissioning channel between the Commissioner and Commissionee is terminated." verification: | - Verify in DUT as client side + Verify in DUT as commissioner side: CHIP:CTL: Successfully finished commissioning step "SendComplete" CHIP:CTL: Commissioning stage next step: "SendComplete" -> "Cleanup" @@ -326,4 +351,9 @@ tests: CHIP:DL: Closing BLE GATT connection (con 0xffff9c04df70) CHIP:CTL: Successfully finished commissioning step "Cleanup" CHIP:TOO: Device commissioning completed with success + + Verify on TH as commissionee side: + [1660154249.008047][7143:7143] CHIP:IN: Expiring all PASE sessions + [1660154249.008069][7143:7143] CHIP:IN: SecureSession[0xaaab09155000]: MarkForEviction Type:1 LSID:5786 + [1660154249.008090][7143:7143] CHIP:SC: SecureSession[0xaaab09155000]: Moving from state "kActive" --> "kPendingEviction" disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_6.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_6.yaml index dbd0be9c671393..8a641bdd92815e 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_6.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_6.yaml @@ -25,6 +25,18 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - 5.5 - Commissioner is on a network. - The network can either be WiFi or Thread. + + 2 - 5.5 - Commissionee is not connected to an operational network + disabled: true + - label: "Commissioner has regulatory and fabric information available and has accurate date, time and timezone" @@ -36,9 +48,9 @@ tests: "Commissioner and Commissionee discover each other and connect via the discovery mode applicable for the DUT." verification: | - Verify in TH as server side: start BLE Advertising by specific DUT implementation + Verify in TH as commissionee side: start BLE Advertising by specific DUT implementation - Verify in DUT as client side: start commissioning process(need to obtain the Thread dataset first) + Verify in DUT as commissioner side: start commissioning process(need to obtain the Thread dataset first) ./chip-tool pairing ble-thread 1 hex:0e080000000000010000000300000f35060004001fffe0020811111111222222220708fd27e57b1b1e22d9051000112233445566778899aabbccddeeff030e4f70656e54687265616444656d6f01021234041061e1206d2c2b46e079eb775f41fc72190c0402a0fff8 20202021 3840 disabled: true @@ -47,7 +59,7 @@ tests: "Establish encryption keys with Password Authenticated Session Establishment on the commissioning channel" verification: | - Verify in DUT as client side + Verify in DUT as commissioner side CHIP:SC: Received PBKDF param response disabled: true @@ -56,7 +68,7 @@ tests: "Commissioner SHALL re-arm Fail-safe timer on Commissionee within 60s (the autonomously Fail-safe timer length set by Commissionee)" verification: | - Verify in DUT as client side + Verify in DUT as commissioner side CHIP:CTL: Arming failsafe (60 seconds) disabled: true @@ -66,13 +78,13 @@ tests: Commissionee." PICS: MCORE.COM.WIRELESS verification: | - Verify in DUT as client side + Verify in DUT as commissioner side Performing next commissioning step "ConfigRegulatory" [1653471968.202645][30157:30162] CHIP:CTL: Setting Regulatory Config [1653471968.202666][30157:30162] CHIP:CTL: No regulatory config supplied by controller, leaving as device default (0) - Verify in TH as server side + Verify in TH as commissionee side NVS set: chip-config/regulatory-location = 0 (0x0) disabled: true @@ -80,7 +92,7 @@ tests: "Commissioner requests operational CSR from Commissionee with OperationalCSRRequest command" verification: | - Verify in DUT as client side + Verify in DUT as commissioner side CHIP:CTL: Sending CSR request to 0xffffa4001730 device CHIP:DMG: ICR moving to [AddingComm] @@ -144,7 +156,7 @@ tests: "Commissioner configures operational credentials on DUT if not previously installed" verification: | - Verify in DUT as client side + Verify in DUT as commissioner side [1651218829.220063][3273:3278] CHIP:CTL: Sending root certificate to the device [1651218829.220201][3273:3278] CHIP:DMG: ICR moving to [AddingComm] @@ -198,7 +210,7 @@ tests: "Commissioner configures itself as administrator in ACL on TH if needed" verification: | - Verify in DUT as client side + Verify in DUT as commissioner side [1651218829.457248][3273:3278] CHIP:CTL: Sending operational certificate chain to the device [1651218829.457372][3273:3278] CHIP:DMG: ICR moving to [AddingComm] @@ -254,7 +266,7 @@ tests: "Commissioner configures operational network on TH if TH both supports and requires" verification: | - Verify in DUT as client side + Verify in DUT as commissioner side [1651218833.995054][3273:3278] CHIP:CTL: Adding thread network [1651218833.995176][3273:3278] CHIP:DMG: ICR moving to [AddingComm] @@ -306,7 +318,7 @@ tests: "Commissioner instructs Commissionee to connect to operational network if not already connected" verification: | - Verify in DUT as client side + Verify in DUT as commissioner side [1651218834.137891][3273:3278] CHIP:CTL: Enabling thread network [1651218834.138014][3273:3278] CHIP:DMG: ICR moving to [AddingComm] @@ -359,7 +371,7 @@ tests: "Commissioning channel between the Commissioner and Commissionee is terminated." verification: | - 1. Verify the channel was terminated on DUT=chip-tool + Verify the channel was terminated on DUT as commissioner side: [1651271753284] [23287:743790] CHIP: [CTL] Received CommissioningComplete response [1651271753284] [23287:743790] CHIP: [CTL] Successfully finished commissioning step "SendComplete" [1651271753284] [23287:743790] CHIP: [CTL] Commissioning stage next step: "SendComplete" -> "Cleanup" @@ -370,7 +382,7 @@ tests: - label: "Commissioner starts discovery of TH using Operational Discovery" verification: | - Verify in DUT as client side + Verify in DUT as commissioner side CHIP:DL: Avahi resolve found CHIP:DIS: Node ID resolved for 0x0000000000000001 @@ -381,7 +393,7 @@ tests: - label: "Commissioner opens a CASE session with TH over operational network" verification: | - Verify in DUT as client side + Verify in DUT as commissioner side CHIP:SC: Sent Sigma1 msg CHIP:CTL: Address resolved for node: 0x0000000000000001 @@ -420,7 +432,7 @@ tests: - label: "Commissioner sends CommissioningComplete command" verification: | - Verify in DUT as client side + Verify in DUT as commissioner side CHIP:CTL: Received CommissioningComplete response CHIP:CTL: Rendezvous cleanup diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_7.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_7.yaml index cbf22f85473687..b6ba6b2d73b862 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_7.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_7.yaml @@ -26,6 +26,17 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - 5.5 - Commissioner is on a network. - The network can either be WiFi or Thread. + 2 - 5.5 - Commissionee can either be a Matter device which is already on a network or the test harness connected to the network. + disabled: true + - label: "Commissioner has regulatory and fabric information available and has accurate date, time and timezone" diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_8.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_8.yaml index 18bea24ee8c4f2..95b80018c71c01 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_8.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_8.yaml @@ -26,6 +26,17 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - 5.5 - Commissioner is on a network. - The network can either be WiFi or Thread. + 2 - 5.5 - Commissionee is not connected to an operational network + disabled: true + - label: "Commissioner has regulatory and fabric information available and has accurate date, time and timezone" @@ -758,3 +769,8 @@ tests: CHIP:CTL: Rendezvous cleanup CHIP:TOO: Device commissioning completed with success disabled: true + + - label: "" + verification: | + verification step to be updated. + disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_9.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_9.yaml index 98ceb571b3902a..7e181f2c075a3d 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_9.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_9.yaml @@ -26,9 +26,14 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + 1 - Commissioner is on an operational network and has accurate date, time, timezone, regulatory, and fabric information available. + disabled: true + - label: "TH receives Onboarding Payload from the DUT" verification: | - 1. Parse the DUT"s QR Code using the TH commissioner: chip-tool + 1. Parse the DUT commissionee QR Code using the TH commissioner: chip-tool $ ./chip-tool payload parse-setup-payload MT:-24J029Q00KA0648G00 [1657230447725] [31078:16782733] CHIP: [SPL] Parsing base38Representation: MT:-24J029Q00KA0648G00 [1657230447725] [31078:16782733] CHIP: [SPL] Version: 0 @@ -43,24 +48,36 @@ tests: disabled: true - label: - "TH fetches commissioning data from Distributed Compliance Ledger - (DCL)" + "Follow any custom steps, guided by a service provided by the DUTs + manufacturer for initial device setup, then place the DUT Commissionee + into commissioning mode." verification: | - 1. TH fetches the DCL from DUT"s DCL - 2. Verify that DCL contains the criteria: - - CommissioningCustomFlow field = 2 - - CommissioningModeInitialStepsHint bit 0 (Power Cycle) = 0 and bit 1 (Device Manufacturer URL) = 1 - - CommissioningCustomFlowURL populated with a URL that uses https schema - disabled: true + 1. Follow DUT vendor-specific steps to put DUT into commissioning mode - - label: - "TH uses the provided URL to guide user on how to put DUT in a state - that allows commissioning" - verification: | - 1. Follow steps from DCL"s URL given + 2. Verify DUT is advertising in commissioning mode. On DUT, + + $ ./chip-tool discover commissionables + Verify in TH as commissioner side: + + [1651192893436] [15304:442604] CHIP: [DL] Mdns: OnNewAddress interface: 24 ip:fe80::dea6:32ff:fe8d:6e32 + [1651192893436] [15304:442604] CHIP: [DIS] Vendor ID: 65521 + [1651192893436] [15304:442604] CHIP: [DIS] Product ID: 32769 + [1651192893436] [15304:442604] CHIP: [DIS] Long Discriminator: 3840 + [1651192893436] [15304:442604] CHIP: [DIS] Pairing Hint: 33 + [1651192893436] [15304:442604] CHIP: [DIS] Hostname: DCA6328D6E320000 [1651192893436] [15304:442604] CHIP: [DIS] Instance Name: 914762134DA8E7D1 + [1651192893436] [15304:442604] CHIP: [DIS] IP Address #1: fe80::dea6:32ff:fe8d:6e32 + [1651192893436] [15304:442604] CHIP: [DIS] Port: 5540 + [1651192893436] [15304:442604] CHIP: [DIS] Commissioning Mode: 1 + [1651192893436] [15304:442604] CHIP: [DIS] Mrp Interval idle: 5000 ms + [1651192893436] [15304:442604] CHIP: [DIS] Mrp Interval active: 300 ms disabled: true - label: "DUT is commissioned by the TH" verification: | 1. Verify that the DUT is commissioned to the TH commissioner successfully + + Verify on the TH as commissioner side: + CHIP:CTL: Received CommissioningComplete response + CHIP:CTL: Rendezvous cleanup + CHIP:TOO: Device commissioning completed with success disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DESC_2_1.yaml b/src/app/tests/suites/certification/Test_TC_DESC_2_1.yaml index 206342e67e963a..c2c35d4ac70359 100644 --- a/src/app/tests/suites/certification/Test_TC_DESC_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_DESC_2_1.yaml @@ -24,11 +24,37 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Mandatory cluster requirements for each device type can be found here. + github link + Use the correct json required for the DUT, this file is PIXIT.DESC.DeviceTypeConformanceList. + disabled: true + + - label: "Precondition" + verification: | + TH and DUT are commissioned + disabled: true + - label: "TH reads DeviceTypeList and PartsList attributes from DUT for Endpoint 0" PICS: DESC.S.A0000 && DESC.S.A0003 verification: | + Send a read request to the DUT using chip-tool to read the partsList attribute in the descriptor cluster on Endpoint 0. + Make a note of all the items(Endpoint id’s) in the list. In the below example there are 2 endpoint id"s listed [1,2] + + ./chip-tool descriptor read parts-list 1 0 + + Verify PartsList response on the TH (Chip-tool) Log: + + [1641456769.777217][16238:16244] CHIP:DMG: SuppressResponse = true, + [1641456769.777267][16238:16244] CHIP:DMG: } + [1641456769.777839][16238:16244] CHIP:TOO: Descriptor.PartsList response: 2 entries + [1641456769.777925][16238:16244] CHIP:TOO: [1]: 1 + [1641456769.777978][16238:16244] CHIP:TOO: [2]: 2 + [1641456769.778080][16238:16244] CHIP:EM: Sending Standalone Ack for MessageCounter:2830202 on exchange 38042i + ./chip-tool descriptor read device-list 1 0 Verify DeviceList response on the TH (Chip-tool) Log: @@ -46,6 +72,19 @@ tests: Endpoint supported by DUT (except Endpoint 0)." PICS: DESC.S.A0000 && DESC.S.A0003 verification: | + For all the Endpoint id’s listed from the previous step run the following steps. The device type should correspond to the id value in the device_type.json + Chip tool outputs all values in integer, convert to hex before comparing. + + + ./chip-tool descriptor read parts-list 1 1 + + Verify parts-list response on the TH(Chip-tool) Log: + + [1660127331.634565][46437:46442] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_0003 DataVersion: 934889243 + [1660127331.634631][46437:46442] CHIP:TOO: parts list: 0 entries + + + ./chip-tool descriptor read device-list 1 1 Verify DeviceList response on the TH(Chip-tool) Log: @@ -57,54 +96,114 @@ tests: [1657200303.724594][2509:2514] CHIP:TOO: Type: 256 [1657200303.724621][2509:2514] CHIP:TOO: Revision: 1 [1657200303.724647][2509:2514] CHIP:TOO: } + + + + ./chip-tool descriptor read parts-list 1 2 + + Verify parts-list response on the TH(Chip-tool) Log: + + [1660127879.565330][46472:46477] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_001D Attribute 0x0000_0003 DataVersion: 1237610137 + [1660127879.565473][46472:46477] CHIP:TOO: parts list: 0 entries + + ./chip-tool descriptor read device-list 1 2 + + Verify DeviceList response on the TH(Chip-tool) Log: + + [1660127725.802512][46460:46465] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 1237610137 + [1660127725.802614][46460:46465] CHIP:TOO: device list: 1 entries + [1660127725.802669][46460:46465] CHIP:TOO: [1]: { + [1660127725.802707][46460:46465] CHIP:TOO: Type: 256 + [1660127725.802745][46460:46465] CHIP:TOO: Revision: 1 + [1660127725.802781][46460:46465] CHIP:TOO: } disabled: true - label: "TH reads ServerList attribute." PICS: DESC.S.A0001 verification: | - ./chip-tool descriptor read server-list 1 0 + For all the Endpoint id’s listed in step 1a run the following steps. For all the server list entries listed in the output - Convert them to Hex values. For example 29 is 0x001D. Verify that these are also present in the device_type.json. Every server cluster listed in the JSON should correspond to a number here in the output. + + ./chip-tool descriptor read server-list 1 1 Verify server list on the TH (Chip-tool) Log: - [1654155402.956829][3701:3706] CHIP:TOO: server list: 26 entries - [1654155402.956863][3701:3706] CHIP:TOO: [1]: 3 - [1654155402.956889][3701:3706] CHIP:TOO: [2]: 4 - [1654155402.956914][3701:3706] CHIP:TOO: [3]: 29 - [1654155402.956939][3701:3706] CHIP:TOO: [4]: 30 - [1654155402.956963][3701:3706] CHIP:TOO: [5]: 31 - [1654155402.956988][3701:3706] CHIP:TOO: [6]: 40 - [1654155402.957012][3701:3706] CHIP:TOO: [7]: 42 - [1654155402.957037][3701:3706] CHIP:TOO: [8]: 43 - [1654155402.957061][3701:3706] CHIP:TOO: [9]: 44 - [1654155402.957086][3701:3706] CHIP:TOO: [10]: 45 - [1654155402.957110][3701:3706] CHIP:TOO: [11]: 46 - [1654155402.957135][3701:3706] CHIP:TOO: [12]: 47 - [1654155402.957159][3701:3706] CHIP:TOO: [13]: 48 - [1654155402.957183][3701:3706] CHIP:TOO: [14]: 49 - [1654155402.957207][3701:3706] CHIP:TOO: [15]: 50 - [1654155402.957231][3701:3706] CHIP:TOO: [16]: 51 - [1654155402.957256][3701:3706] CHIP:TOO: [17]: 52 - [1654155402.957280][3701:3706] CHIP:TOO: [18]: 53 - [1654155402.957304][3701:3706] CHIP:TOO: [19]: 54 - [1654155402.957328][3701:3706] CHIP:TOO: [20]: 55 - [1654155402.957352][3701:3706] CHIP:TOO: [21]: 60 - [1654155402.957376][3701:3706] CHIP:TOO: [22]: 62 - [1654155402.957400][3701:3706] CHIP:TOO: [23]: 63 - [1654155402.957424][3701:3706] CHIP:TOO: [24]: 64 - [1654155402.957449][3701:3706] CHIP:TOO: [25]: 65 - [1654155402.957473][3701:3706] CHIP:TOO: [26]: 1029 + [1660149731.921734][49539:49544] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_0001 DataVersion: 2312399478 + [1660149731.921749][49539:49544] CHIP:TOO: server list: 44 entries + [1660149731.921753][49539:49544] CHIP:TOO: [1]: 3 + [1660149731.921755][49539:49544] CHIP:TOO: [2]: 4 + [1660149731.921758][49539:49544] CHIP:TOO: [3]: 5 + [1660149731.921760][49539:49544] CHIP:TOO: [4]: 6 + [1660149731.921762][49539:49544] CHIP:TOO: [5]: 7 + [1660149731.921765][49539:49544] CHIP:TOO: [6]: 8 + [1660149731.921767][49539:49544] CHIP:TOO: [7]: 15 + [1660149731.921769][49539:49544] CHIP:TOO: [8]: 29 + [1660149731.921772][49539:49544] CHIP:TOO: [9]: 30 + [1660149731.921774][49539:49544] CHIP:TOO: [10]: 37 + [1660149731.921776][49539:49544] CHIP:TOO: [11]: 47 + [1660149731.921779][49539:49544] CHIP:TOO: [12]: 59 + [1660149731.921781][49539:49544] CHIP:TOO: [13]: 64 + [1660149731.921783][49539:49544] CHIP:TOO: [14]: 65 + [1660149731.921785][49539:49544] CHIP:TOO: [15]: 69 + [1660149731.921787][49539:49544] CHIP:TOO: [16]: 80 + [1660149731.921790][49539:49544] CHIP:TOO: [17]: 257 + [1660149731.921792][49539:49544] CHIP:TOO: [18]: 258 + [1660149731.921795][49539:49544] CHIP:TOO: [19]: 259 + [1660149731.921797][49539:49544] CHIP:TOO: [20]: 512 + [1660149731.921799][49539:49544] CHIP:TOO: [21]: 513 + [1660149731.921801][49539:49544] CHIP:TOO: [22]: 514 + [1660149731.921804][49539:49544] CHIP:TOO: [23]: 516 + [1660149731.921806][49539:49544] CHIP:TOO: [24]: 768 + [1660149731.921808][49539:49544] CHIP:TOO: [25]: 1024 + [1660149731.921810][49539:49544] CHIP:TOO: [26]: 1026 + [1660149731.921812][49539:49544] CHIP:TOO: [27]: 1027 + [1660149731.921814][49539:49544] CHIP:TOO: [28]: 1028 + [1660149731.921817][49539:49544] CHIP:TOO: [29]: 1029 + [1660149731.921819][49539:49544] CHIP:TOO: [30]: 1030 + [1660149731.921821][49539:49544] CHIP:TOO: [31]: 1283 + [1660149731.921824][49539:49544] CHIP:TOO: [32]: 1284 + [1660149731.921826][49539:49544] CHIP:TOO: [33]: 1285 + [1660149731.921828][49539:49544] CHIP:TOO: [34]: 1286 + [1660149731.921830][49539:49544] CHIP:TOO: [35]: 1287 + [1660149731.921832][49539:49544] CHIP:TOO: [36]: 1288 + [1660149731.921835][49539:49544] CHIP:TOO: [37]: 1289 + [1660149731.921837][49539:49544] CHIP:TOO: [38]: 1290 + [1660149731.921839][49539:49544] CHIP:TOO: [39]: 1291 + [1660149731.921841][49539:49544] CHIP:TOO: [40]: 1292 + [1660149731.921844][49539:49544] CHIP:TOO: [41]: 1293 + [1660149731.921846][49539:49544] CHIP:TOO: [42]: 1294 + [1660149731.921848][49539:49544] CHIP:TOO: [43]: 2820 + [1660149731.921851][49539:49544] CHIP:TOO: [44]: 4294048773 + + + ./chip-tool descriptor read server-list 1 2 + + [1660146145.982691][46811:46816] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_001D Attribute 0x0000_0001 DataVersion: 1051414887 + [1660146145.982733][46811:46816] CHIP:TOO: server list: 5 entries + [1660146145.982744][46811:46816] CHIP:TOO: [1]: 4 + [1660146145.982752][46811:46816] CHIP:TOO: [2]: 6 + [1660146145.982759][46811:46816] CHIP:TOO: [3]: 29 + [1660146145.982771][46811:46816] CHIP:TOO: [4]: 47 + [1660146145.982778][46811:46816] CHIP:TOO: [5]: 1030 disabled: true - label: "TH reads ClientList attribute" PICS: DESC.S.A0002 verification: | - ./chip-tool descriptor read client-list 1 0 + For all the Endpoint id’s listed in step 1a run the following steps. For all the client list entries listed in the output - Convert them to Hex values. For example 29 is 0x001D. Verify that these are also present in the device_type.json. Every server cluster listed in the JSON should correspond to a number here in the output. + + + ./chip-tool descriptor read client-list 1 1 Verify client list on the TH (Chip-tool) Log: + [1660195618.042544][2905:2910] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_0002 DataVersion: 2955150741 + [1660195618.042605][2905:2910] CHIP:TOO: client list: 0 entries - [1650281818.533446][9679:9684] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0002 DataVersion: 1976976904 - [1650281818.533514][9679:9684] CHIP:TOO: client list: 1 entries - [1650281818.533563][9679:9684] CHIP:TOO: [1]: 41 + ./chip-tool descriptor read client-list 1 2 + + Verify client list on the TH (Chip-tool) Log: + + [1660146160.390200][46818:46823] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_001D Attribute 0x0000_0002 DataVersion: 1051414887 + [1660146160.390211][46818:46823] CHIP:TOO: client list: 0 entries disabled: true - label: "TH reads PartsList attribute." @@ -127,5 +226,43 @@ tests: to make sure all mandatory (and applicable optional) attributes/commands are implemented." verification: | - verification step to be updated. + FOR ENDPOINTS 2 + + + ./chip-tool descriptor read parts-list 1 2 + + Verify parts-list response on the TH(Chip-tool) Log: + + [1660127879.565330][46472:46477] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_001D Attribute 0x0000_0003 DataVersion: 1237610137 + [1660127879.565473][46472:46477] CHIP:TOO: parts list: 0 entries + + ./chip-tool descriptor read device-list 1 2 + + Verify DeviceList response on the TH(Chip-tool) Log: + + [1660127725.802512][46460:46465] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 1237610137 + [1660127725.802614][46460:46465] CHIP:TOO: device list: 1 entries + [1660127725.802669][46460:46465] CHIP:TOO: [1]: { + [1660127725.802707][46460:46465] CHIP:TOO: Type: 256 + [1660127725.802745][46460:46465] CHIP:TOO: Revision: 1 + [1660127725.802781][46460:46465] CHIP:TOO: } + + ./chip-tool descriptor read server-list 1 2 + + Verify server list on the TH (Chip-tool) Log: + + [1660146145.982691][46811:46816] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_001D Attribute 0x0000_0001 DataVersion: 1051414887 + [1660146145.982733][46811:46816] CHIP:TOO: server list: 5 entries + [1660146145.982744][46811:46816] CHIP:TOO: [1]: 4 + [1660146145.982752][46811:46816] CHIP:TOO: [2]: 6 + [1660146145.982759][46811:46816] CHIP:TOO: [3]: 29 + [1660146145.982771][46811:46816] CHIP:TOO: [4]: 47 + [1660146145.982778][46811:46816] CHIP:TOO: [5]: 1030 + + ./chip-tool descriptor read client-list 1 2 + + Verify client list on the TH (Chip-tool) Log: + + [1660146160.390200][46818:46823] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_001D Attribute 0x0000_0002 DataVersion: 1051414887 + [1660146160.390211][46818:46823] CHIP:TOO: client list: 0 entries disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DGGEN_1_1.yaml b/src/app/tests/suites/certification/Test_TC_DGGEN_1_1.yaml index 95de56495d2c2a..44ea9c363205c6 100644 --- a/src/app/tests/suites/certification/Test_TC_DGGEN_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_DGGEN_1_1.yaml @@ -54,7 +54,7 @@ tests: response: constraints: type: list - contains: [0, 1, 8, 65528, 65529, 65531, 65533] + contains: [0, 1, 8, 65528, 65529, 65531, 65532, 65533] - label: "Read the global attribute: AcceptedCommandList" command: "readAttribute" diff --git a/src/app/tests/suites/certification/Test_TC_DGGEN_2_2.yaml b/src/app/tests/suites/certification/Test_TC_DGGEN_2_2.yaml index 91486a9f19c52f..e9426841124b86 100644 --- a/src/app/tests/suites/certification/Test_TC_DGGEN_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_DGGEN_2_2.yaml @@ -25,9 +25,23 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + "NOTE: https://github.com/project-chip/connectedhomeip/tree/master/examples/all-clusters-app/linux#readme + Events to be executed as following + 1. Compile app using below command in connectedhomeip folder + a. ./scripts/run_in_build_env.sh ""./scripts/build/build_examples.py --target linux-arm64-all-clusters-no-ble-asan-clang build"" + b. ./scripts/run_in_build_env.sh ""./scripts/build/build_examples.py --target linux-arm64-all-clusters-no-ble-asan-libfuzzer-clang build"" + 2. Build respective app (all-clusters-app) + 3. Commission DUT to TH + 4. Open 2nd terminal of DUT and provide the below command to obtain PID of DUT + ps -aef|grep all-clusters-app + 5. Follow the Verification step below to generate the event in 2nd terminal of DUT " + disabled: true + - label: "Commission DUT to TH" verification: | - verification step to be updated. + disabled: true - label: @@ -133,52 +147,3 @@ tests: [1659530352.583789][4993:4998] CHIP:TOO: BootReason: 0 [1659530352.583813][4993:4998] CHIP:TOO: } disabled: true - - - label: "TH initiates the subscription of NetworkFault event from DUT." - PICS: DGGEN.S.E02 - verification: | - On Raspi platform the event is triggered with below command, Pls use equivalent command on the respective DUT - - "echo "{"Name":"NetworkFaultChange"}" > /tmp/chip_all_clusters_fifo- (PID of all-clusters-app)" - - - sudo ./chip-tool generaldiagnostics subscribe-event network-fault-change 100 1000 1 0 - On TH(chip-tool) verify that subscription response of NetworkFault event shows subscrition ID - - [1653659901.757441][242605:242610] CHIP:EM: Received message of type 0x4 with protocolId (0, 1) and MessageCounter:11933575 on exchange 20223i - [1653659901.757513][242605:242610] CHIP:EM: Found matching exchange: 20223i, Delegate: 0x7fd058003950 - [1653659901.757544][242605:242610] CHIP:EM: Rxd Ack; Removing MessageCounter:3369789 from Retrans Table on exchange 20223i - [1653659901.757564][242605:242610] CHIP:EM: Removed CHIP MessageCounter:3369789 from RetransTable on exchange 20223i - [1653659901.757618][242605:242610] CHIP:DMG: SubscribeResponseMessage = - [1653659901.757638][242605:242610] CHIP:DMG: { - [1653659901.757658][242605:242610] CHIP:DMG: SubscriptionId = 0x17dc072d1130a3bd, - [1653659901.757676][242605:242610] CHIP:DMG: MinIntervalFloorSeconds = 0x64, - [1653659901.757690][242605:242610] CHIP:DMG: MaxIntervalCeilingSeconds = 0x3e8, - [1653659901.757708][242605:242610] CHIP:DMG: InteractionModelRevision = 1 - [1653659901.757721][242605:242610] CHIP:DMG: } - [1653659901.757746][242605:242610] CHIP:DMG: Subscription established with SubscriptionID = 0x17DC072D1130A3BD MinInterval = 100s MaxInterval = 1000s Peer = 01:0000000000000002 - disabled: true - - - label: - "Reboot DUT with a normal reboot process. Rejoin DUT back to previous - TH fabric." - PICS: DGGEN.S.E03 - verification: | - On Raspi platform the event is triggered with below command, Pls use equivalent command on the respective DUT - - "echo "{"Name":""}" > /tmp/chip_all_clusters_fifo- (PID of all-clusters-app)" - - - 1. Reboot DUT with a normal reboot process - 2. ./chip-tool generaldiagnostics read-event boot-reason 1 0 - On TH(chip-tool) verify that the event data of BootReason specified by Table 103 BootReason ENUM table. - - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0033 Event 0x0000_0003 - [1651562139.644134][7873:7878] CHIP:TOO: Event number: 1 - [1651562139.644157][7873:7878] CHIP:TOO: Priority: Critical - [1651562139.644179][7873:7878] CHIP:TOO: Timestamp: 8347991 - [1651562139.644273][7873:7878] CHIP:TOO: BootReason: { - [1651562139.644317][7873:7878] CHIP:TOO: BootReason: 0 - [1651562139.644343][7873:7878] CHIP:TOO: } - [1651562139.644431][7873:7878] CHIP:EM: Sending Standalone Ack for MessageCounter:9685408 on exchange 6383i - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DGSW_3_1.yaml b/src/app/tests/suites/certification/Test_TC_DGSW_3_1.yaml index a30e6eafd57456..9771f051c5759c 100644 --- a/src/app/tests/suites/certification/Test_TC_DGSW_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_DGSW_3_1.yaml @@ -26,12 +26,12 @@ config: tests: - label: "Note" verification: | - Chip-tool command used below are an example to verify the DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. disabled: true - label: "Commission TH to DUT" verification: | - verification step to be updated. + disabled: true - label: "DUT reads a list of ThreadMetrics struct attribute from TH." @@ -107,19 +107,19 @@ tests: [1659972063.411625][3458:3458] CHIP:IM: Received Read request [1659972063.411702][3458:3458] CHIP:DMG: ReadRequestMessage = [1659972063.411740][3458:3458] CHIP:DMG: { - [1659972063.411763][3458:3458] CHIP:DMG: AttributePathIBs = - [1659972063.411789][3458:3458] CHIP:DMG: [ - [1659972063.411822][3458:3458] CHIP:DMG: AttributePathIB = - [1659972063.411852][3458:3458] CHIP:DMG: { - [1659972063.411892][3458:3458] CHIP:DMG: Endpoint = 0x0, - [1659972063.411932][3458:3458] CHIP:DMG: Cluster = 0x34, - [1659972063.411964][3458:3458] CHIP:DMG: Attribute = 0x0000_0002, - [1659972063.412003][3458:3458] CHIP:DMG: } + [1659972063.411763][3458:3458] CHIP:DMG: AttributePathIBs = + [1659972063.411789][3458:3458] CHIP:DMG: [ + [1659972063.411822][3458:3458] CHIP:DMG: AttributePathIB = + [1659972063.411852][3458:3458] CHIP:DMG: { + [1659972063.411892][3458:3458] CHIP:DMG: Endpoint = 0x0, + [1659972063.411932][3458:3458] CHIP:DMG: Cluster = 0x34, + [1659972063.411964][3458:3458] CHIP:DMG: Attribute = 0x0000_0002, + [1659972063.412003][3458:3458] CHIP:DMG: } [1659972063.412032][3458:3458] CHIP:DMG: - [1659972063.412069][3458:3458] CHIP:DMG: ], + [1659972063.412069][3458:3458] CHIP:DMG: ], [1659972063.412106][3458:3458] CHIP:DMG: - [1659972063.412133][3458:3458] CHIP:DMG: isFabricFiltered = true, - [1659972063.412165][3458:3458] CHIP:DMG: InteractionModelRevision = 1 + [1659972063.412133][3458:3458] CHIP:DMG: isFabricFiltered = true, + [1659972063.412165][3458:3458] CHIP:DMG: InteractionModelRevision = 1 [1659972063.412191][3458:3458] CHIP:DMG: }, [1659972063.412273][3458:3458] CHIP:DMG: IM RH moving to [GeneratingReports] [1659972063.412375][3458:3458] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 @@ -139,19 +139,19 @@ tests: [1659972088.497642][3458:3458] CHIP:IM: Received Read request [1659972088.497747][3458:3458] CHIP:DMG: ReadRequestMessage = [1659972088.497787][3458:3458] CHIP:DMG: { - [1659972088.497816][3458:3458] CHIP:DMG: AttributePathIBs = - [1659972088.497854][3458:3458] CHIP:DMG: [ - [1659972088.497889][3458:3458] CHIP:DMG: AttributePathIB = - [1659972088.497928][3458:3458] CHIP:DMG: { - [1659972088.497970][3458:3458] CHIP:DMG: Endpoint = 0x0, - [1659972088.498016][3458:3458] CHIP:DMG: Cluster = 0x34, - [1659972088.498061][3458:3458] CHIP:DMG: Attribute = 0x0000_0003, - [1659972088.498103][3458:3458] CHIP:DMG: } + [1659972088.497816][3458:3458] CHIP:DMG: AttributePathIBs = + [1659972088.497854][3458:3458] CHIP:DMG: [ + [1659972088.497889][3458:3458] CHIP:DMG: AttributePathIB = + [1659972088.497928][3458:3458] CHIP:DMG: { + [1659972088.497970][3458:3458] CHIP:DMG: Endpoint = 0x0, + [1659972088.498016][3458:3458] CHIP:DMG: Cluster = 0x34, + [1659972088.498061][3458:3458] CHIP:DMG: Attribute = 0x0000_0003, + [1659972088.498103][3458:3458] CHIP:DMG: } [1659972088.498144][3458:3458] CHIP:DMG: - [1659972088.498180][3458:3458] CHIP:DMG: ], + [1659972088.498180][3458:3458] CHIP:DMG: ], [1659972088.498219][3458:3458] CHIP:DMG: - [1659972088.498257][3458:3458] CHIP:DMG: isFabricFiltered = true, - [1659972088.498294][3458:3458] CHIP:DMG: InteractionModelRevision = 1 + [1659972088.498257][3458:3458] CHIP:DMG: isFabricFiltered = true, + [1659972088.498294][3458:3458] CHIP:DMG: InteractionModelRevision = 1 [1659972088.498328][3458:3458] CHIP:DMG: }, [1659972088.498431][3458:3458] CHIP:DMG: IM RH moving to [GeneratingReports] [1659972088.498545][3458:3458] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 diff --git a/src/app/tests/suites/certification/Test_TC_DGTHREAD_1_1.yaml b/src/app/tests/suites/certification/Test_TC_DGTHREAD_1_1.yaml index 5f8fee8d8262a9..a48e928599b156 100644 --- a/src/app/tests/suites/certification/Test_TC_DGTHREAD_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_DGTHREAD_1_1.yaml @@ -41,7 +41,6 @@ tests: type: int16u - label: "TH reads the FeatureMap from DUT" - PICS: DGTHREAD.S.F00 || DGTHREAD.S.F01 || DGTHREAD.S.F02 || DGTHREAD.S.F03 command: "readAttribute" attribute: "FeatureMap" response: diff --git a/src/app/tests/suites/certification/Test_TC_DGWIFI_1_1.yaml b/src/app/tests/suites/certification/Test_TC_DGWIFI_1_1.yaml index b370a0337bbf94..5e1e29e4de2037 100644 --- a/src/app/tests/suites/certification/Test_TC_DGWIFI_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_DGWIFI_1_1.yaml @@ -39,6 +39,15 @@ tests: constraints: type: int16u + - label: "TH reads the FeatureMap from DUT" + PICS: ( !DGWIFI.S.F00 && !DGWIFI.S.F01 ) + command: "readAttribute" + attribute: "FeatureMap" + response: + value: 0 + constraints: + type: bitmap32 + - label: "TH reads the FeatureMap from DUT" PICS: DGWIFI.S.F00 || DGWIFI.S.F01 command: "readAttribute" @@ -46,7 +55,7 @@ tests: response: constraints: type: bitmap32 - minValue: 0 + minValue: 1 maxValue: 3 - label: "TH reads AttributeList from DUT" diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_1_1.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_1_1.yaml index 4789c9736d130d..e83ad337d61a7e 100644 --- a/src/app/tests/suites/certification/Test_TC_DRLK_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_DRLK_1_1.yaml @@ -40,6 +40,18 @@ tests: constraints: type: int16u + - label: "TH reads the FeatureMap from DUT" + PICS: + " !DRLK.S.F00 && !DRLK.S.F01 && !DRLK.S.F02 && !DRLK.S.F04 && + !DRLK.S.F05 && !DRLK.S.F06 && !DRLK.S.F07 && !DRLK.S.F08 && + !DRLK.S.F10 && !DRLK.S.F11 " + command: "readAttribute" + attribute: "FeatureMap" + response: + value: 0 + constraints: + type: bitmap32 + - label: "TH reads the FeatureMap from DUT" PICS: DRLK.S.F00 || DRLK.S.F01 || DRLK.S.F02 || DRLK.S.F04 || DRLK.S.F05 || @@ -49,7 +61,7 @@ tests: response: constraints: type: bitmap32 - minValue: 0 + minValue: 1 maxValue: 4095 - label: "TH reads AttributeList from DUT" diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_2_10.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_2_10.yaml index 86a6beb3e9b8b4..fd9b809155774e 100644 --- a/src/app/tests/suites/certification/Test_TC_DRLK_2_10.yaml +++ b/src/app/tests/suites/certification/Test_TC_DRLK_2_10.yaml @@ -44,12 +44,16 @@ tests: scenario)" PICS: DRLK.S.E00 && DRLK.S.DetectLockJammed verification: | - To trigger the event give below command in another terminal of DUT + To trigger the event give below command by opening an another terminal of DUT echo "{"Cmd": "SendDoorLockAlarm", "Params": { "EndpointId": 1, "AlarmCode": 0 } }" > /tmp/chip_lock_app_fifo- (PID of lock-app) For example : echo "{"Cmd": "SendDoorLockAlarm", "Params": { "EndpointId": 1, "AlarmCode": 0 } }" > /tmp/chip_lock_app_fifo-3940 + disabled: true + - label: "TH reads the DoorLockAlarm event from DUT" + PICS: DRLK.S.E00 + verification: | ./chip-tool doorlock read-event door-lock-alarm 1 1 Verify "TH receives the DoorLockAlarm event and AlarmCode is set to LockJammed " on the TH(Chip-tool) Log: @@ -63,37 +67,16 @@ tests: [1659521453.110591][4098:4103] CHIP:TOO: } disabled: true - - label: "TH reads the DoorLockAlarm event from DUT" - PICS: DRLK.S.E00 - verification: | - verification step to be updated. - disabled: true - - label: "Trigger the DUT to generate DoorStateChange Event" PICS: DRLK.S.F05 && DRLK.S.E01 verification: | To trigger the event give below command in another terminal of DUT echo "{"Cmd": "SetDoorState", "Params": { "EndpointId": 1, "DoorState": 1 } }" > /tmp/chip_lock_app_fifo-4055 (4055 - value changes) - - ./chip-tool doorlock read-event door-state-change 1 1 - - Verify "TH recieve the DoorLockAlaram event and DoorState set to DoorClosed " on the TH(Chip-tool) Log: - - [1659521576.156075][4109:4114] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Event 0x0000_0001 - [1659521576.156118][4109:4114] CHIP:TOO: Event number: 1 - [1659521576.156150][4109:4114] CHIP:TOO: Priority: Critical - [1659521576.156181][4109:4114] CHIP:TOO: Timestamp: 23466089 - [1659521576.156277][4109:4114] CHIP:TOO: DoorStateChange: { - [1659521576.156331][4109:4114] CHIP:TOO: DoorState: 1 - [1659521576.156368][4109:4114] CHIP:TOO: } disabled: true - label: "TH reads the DoorStateChange event from DUT" PICS: DRLK.S.F05 && DRLK.S.E01 verification: | - To trigger the event give below command in another terminal of DUT - echo "{"Cmd": "SetDoorState", "Params": { "EndpointId": 1, "DoorState": 1 } }" > /tmp/chip_lock_app_fifo-4055 (4055 - value changes) - ./chip-tool doorlock read-event door-state-change 1 1 Verify "TH recieve the DoorLockAlaram event and DoorState set to DoorClosed " on the TH(Chip-tool) Log: diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_2_2.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_2_2.yaml index 18eacd39f1aae0..82e79debbf4c59 100644 --- a/src/app/tests/suites/certification/Test_TC_DRLK_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_DRLK_2_2.yaml @@ -14,6 +14,9 @@ name: 111.2.2. [TC-DRLK-2.2] Verification for Door lock command[DUT-Server] +PICS: + - DRLK.S + config: nodeId: 0x12344321 cluster: "Door Lock" diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_2_3.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_2_3.yaml index 3f4e53638ed919..b0b2097a8e1d47 100644 --- a/src/app/tests/suites/certification/Test_TC_DRLK_2_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_DRLK_2_3.yaml @@ -14,6 +14,9 @@ name: 111.2.3. [TC-DRLK-2.3] Verification for Unlock Door command [DUT-Server] +PICS: + - DRLK.S + config: nodeId: 0x12344321 cluster: "Door Lock" diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_2_6.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_2_6.yaml index caa3ac7574991a..30977190efa2a7 100644 --- a/src/app/tests/suites/certification/Test_TC_DRLK_2_6.yaml +++ b/src/app/tests/suites/certification/Test_TC_DRLK_2_6.yaml @@ -27,9 +27,14 @@ config: endpoint: 0 tests: + - label: "Pre-Conditions" + verification: | + DUT as server + disabled: true + - label: "TH reads NumberOfHoliday SchedulesSupported and saves for future use." - PICS: DRLK.S.F04 && DRLK.S.A0016 + PICS: DRLK.S.F11 && DRLK.S.A0016 verification: | ./chip-tool doorlock read number-of-holiday-schedules-supported 1 1 Verify " NumberOfHoliDay SchedulesSuppored" on the TH(Chip-tool) Log: @@ -46,7 +51,7 @@ tests: "TH sends Set Holiday Schedule Command to DUT with the following values: HolidayIndex as 1 LocalStartTime as 20 Seconds LocalEndTime as 30 Seconds OperatingMode as 0" - PICS: DRLK.S.F04 && DRLK.S.C11.Rsp + PICS: DRLK.S.F11 && DRLK.S.C11.Rsp verification: | ./chip-tool doorlock set-holiday-schedule 1 20 30 0 1 1 Verify " DUT send SUCCESS response." on the TH(Chip-tool) Log: @@ -68,7 +73,7 @@ tests: - label: "TH sends Get Holiday Schedule Command to DUT with HolidayIndex as 1" - PICS: DRLK.S.F04 && DRLK.S.C12.Rsp && DRLK.S.C12.Tx + PICS: DRLK.S.F11 && DRLK.S.C12.Rsp && DRLK.S.C12.Tx verification: | ./chip-tool doorlock get-holiday-schedule 1 1 1 Verify " DUT responds with Get Holiday Schedule Response" on the TH(Chip-tool) Log: @@ -126,7 +131,7 @@ tests: - label: "TH sends Get Holiday Schedule Command to DUT with Invalid HolidayIndex as 15." - PICS: DRLK.S.F04 && DRLK.S.C12.Rsp && DRLK.S.C12.Tx + PICS: DRLK.S.F11 && DRLK.S.C12.Rsp && DRLK.S.C12.Tx verification: | ./chip-tool doorlock get-holiday-schedule 15 1 1 Verify " DUT sends INVALID_COMMAND response" on the TH(Chip-tool) Log: @@ -148,7 +153,7 @@ tests: "TH sends Get Holiday Schedule Command to DUT with the HolidayIndex as 10 (value is in the the range of step 1 but Holiday Schedule entry not available)" - PICS: DRLK.S.F04 && DRLK.S.C12.Rsp && DRLK.S.C12.Tx + PICS: DRLK.S.F11 && DRLK.S.C12.Rsp && DRLK.S.C12.Tx verification: | ./chip-tool doorlock get-holiday-schedule 10 1 1 Verify " DUT sends a NOT_FOUND status" on the TH(Chip-tool) Log: @@ -164,7 +169,7 @@ tests: - label: "TH send Clear Holiday Schedule Command to DUT with HolidayIndex as 1" - PICS: DRLK.S.F04 && DRLK.S.C13.Rsp + PICS: DRLK.S.F11 && DRLK.S.C13.Rsp verification: | ./chip-tool doorlock clear-holiday-schedule 1 1 1 Verify " DUT sends SUCCESS response" on the TH(Chip-tool) Log: @@ -186,7 +191,7 @@ tests: - label: "TH sends Get Holiday Schedule Command to DUT with HolidayIndex as 1." - PICS: DRLK.S.F04 && DRLK.S.C12.Rsp && DRLK.S.C12.Tx + PICS: DRLK.S.F11 && DRLK.S.C12.Rsp && DRLK.S.C12.Tx verification: | ./chip-tool doorlock get-holiday-schedule 1 1 1 Verify " DUT sends a NOT_FOUND status" on the TH(Chip-tool) Log: diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_3_1.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_3_1.yaml index 6dc3140f82faf5..e0dba94eac3990 100644 --- a/src/app/tests/suites/certification/Test_TC_DRLK_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_DRLK_3_1.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT reads LockState from the TH." PICS: DRLK.C.A0000 verification: | diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_3_2.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_3_2.yaml index 652cf20cf02915..9913e84fb2f000 100644 --- a/src/app/tests/suites/certification/Test_TC_DRLK_3_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_DRLK_3_2.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT sends Lock Door command to TH." PICS: DRLK.C.C00.Tx verification: | @@ -864,3 +869,35 @@ tests: [1657115878.585752][8804:8804] CHIP:ZCL: Found unoccupied credential [endpoint=1,index=1] [1657115878.585802][8804:8804] CHIP:ZCL: [clearCredential] Ignored attempt to clear unoccupied credential slot [endpointId=1,credentialType=1,credentialIndex=1,modifier=1] disabled: true + + - label: "" + verification: | + ./chip-tool doorlock clear-user 1 1 1 --timedInteractionTimeoutMs 1000 + + Verify the " clear-user command response" on TH(lock-app): + + + [1658399779.246157][2474:2474] CHIP:DMG: CommandDataIB = + [1658399779.246193][2474:2474] CHIP:DMG: { + [1658399779.246219][2474:2474] CHIP:DMG: CommandPathIB = + [1658399779.246258][2474:2474] CHIP:DMG: { + [1658399779.246301][2474:2474] CHIP:DMG: EndpointId = 0x1, + [1658399779.246336][2474:2474] CHIP:DMG: ClusterId = 0x101, + [1658399779.246381][2474:2474] CHIP:DMG: CommandId = 0x1d, + [1658399779.246411][2474:2474] CHIP:DMG: }, + [1658399779.246452][2474:2474] CHIP:DMG: + [1658399779.246480][2474:2474] CHIP:DMG: CommandFields = + [1658399779.246519][2474:2474] CHIP:DMG: { + [1658399779.246562][2474:2474] CHIP:DMG: 0x0 = 1, + [1658399779.246595][2474:2474] CHIP:DMG: }, + [1658399779.246631][2474:2474] CHIP:DMG: }, + [1658399779.246662][2474:2474] CHIP:DMG: + [1658399779.246694][2474:2474] CHIP:DMG: ], + [1658399779.246732][2474:2474] CHIP:DMG: + [1658399779.246757][2474:2474] CHIP:DMG: InteractionModelRevision = 1 + [1658399779.246788][2474:2474] CHIP:DMG: }, + [1658399779.246862][2474:2474] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=a + [1658399779.246899][2474:2474] CHIP:DMG: AccessControl: allowed + [1658399779.246926][2474:2474] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0101 Command=0x0000_001D + [1658399779.246958][2474:2474] CHIP:ZCL: [ClearUser] Incoming command [endpointId=1,userIndex=1] + disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_3_3.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_3_3.yaml index 749d10874e91d8..b909f1aea6b7d7 100644 --- a/src/app/tests/suites/certification/Test_TC_DRLK_3_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_DRLK_3_3.yaml @@ -27,24 +27,54 @@ config: tests: - label: "Note" verification: | - Chip-tool command used below are an example to verify the DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Note" + verification: | + "NOTE: https://github.com/project-chip/connectedhomeip/tree/master/examples/lock-app/linux#readme + Events to be executed as following + 1. Compile app using below command in connectedhomeip folder + a. ./scripts/run_in_build_env.sh ./scripts/build/build_examples.py --target linux-arm64-all-clusters-no-ble-asan-clang build + b. ./scripts/run_in_build_env.sh ./scripts/build/build_examples.py --target linux-arm64-all-clusters-no-ble-asan-libfuzzer-clang build + 2. Build respective app (lock-app) + 3. Commission DUT to TH + 4. Open 2nd terminal of DUT and provide the below command to obtain PID of DUT + ps -aef|grep lock-app + 5. Follow the Verification step below to generate the event in 2nd terminal of DUT " disabled: true - label: "TH will initiate DoorLockAlarm Event (LockJammed scenario)" PICS: DRLK.C.E00 verification: | + To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in lock-app to generate the event, Vendor Dut should have capability to generate this event) + + + Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner) and TH as lock-app. + + To generate the event give below command + echo "{"Cmd": "SendDoorLockAlarm", "Params": { "EndpointId": 1, "AlarmCode": 0 } }" > /tmp/chip_lock_app_fifo- (PID of lock app) + ./chip-tool doorlock read-event door-lock-alarm 1 1 Verify "DUT receives the DoorLockAlarm event " on the TH(Lock-app) Log: - [1659520755.536021][3987:3992] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Event 0x0000_0000 - [1659520755.536048][3987:3992] CHIP:TOO: Event number: 4 - [1659520755.536069][3987:3992] CHIP:TOO: Priority: Critical - [1659520755.536089][3987:3992] CHIP:TOO: Timestamp: 22818908 - [1659520755.536198][3987:3992] CHIP:TOO: DoorLockAlarm: { - [1659520755.536234][3987:3992] CHIP:TOO: AlarmCode: 0 - [1659520755.536259][3987:3992] CHIP:TOO: } - [1659520755.536347][3987:3992] CHIP:EM: Sending Standalone Ack for MessageCounter:229373286 on exchange 22555i + [1660933624.278924][18319:18319] CHIP:DMG: ReadRequestMessage = + [1660933624.278964][18319:18319] CHIP:DMG: { + [1660933624.278987][18319:18319] CHIP:DMG: EventPathIBs = + [1660933624.279023][18319:18319] CHIP:DMG: [ + [1660933624.279116][18319:18319] CHIP:DMG: EventPath = + [1660933624.279155][18319:18319] CHIP:DMG: { + [1660933624.279192][18319:18319] CHIP:DMG: Endpoint = 0x1, + [1660933624.279232][18319:18319] CHIP:DMG: Cluster = 0x101, + [1660933624.279271][18319:18319] CHIP:DMG: Event = 0x0, + [1660933624.279300][18319:18319] CHIP:DMG: }, + [1660933624.279337][18319:18319] CHIP:DMG: + [1660933624.279360][18319:18319] CHIP:DMG: ], + [1660933624.279397][18319:18319] CHIP:DMG: + [1660933624.279422][18319:18319] CHIP:DMG: isFabricFiltered = true, + [1660933624.279455][18319:18319] CHIP:DMG: InteractionModelRevision = 1 + [1660933624.279478][18319:18319] CHIP:DMG: }, disabled: true - label: "DUT sends the Unlock Door command to the TH with valid PINCode" @@ -75,35 +105,47 @@ tests: [1658399917.775273][2474:2474] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0101 Command=0x0000_001A [1658399917.775327][2474:2474] CHIP:ZCL: [SetUser] Incoming command [endpointId=1,userIndex=1] - ./chip-tool doorlock set-credential 0 "{ "credentialType" : 1 , "credentialIndex" : 1 }" 123456 1 0 0 1 1 --timedInteractionTimeoutMs 1000 + ./chip-tool doorlock set-credential 0 "{ "credentialType" : 1 , "credentialIndex" : 1 }" 123456 1 null null 1 1 --timedInteractionTimeoutMs 1000 Verify "DUT receives the set-credential response " on the TH(Lock-app) Log: - [1658400025.688730][2474:2474] CHIP:DMG: CommandFields = - [1658400025.688777][2474:2474] CHIP:DMG: { - [1658400025.688822][2474:2474] CHIP:DMG: 0x0 = 0, - [1658400025.688873][2474:2474] CHIP:DMG: 0x1 = - [1658400025.688922][2474:2474] CHIP:DMG: { - [1658400025.688964][2474:2474] CHIP:DMG: 0x0 = 1, - [1658400025.689016][2474:2474] CHIP:DMG: 0x1 = 1, - [1658400025.689058][2474:2474] CHIP:DMG: }, - [1658400025.689110][2474:2474] CHIP:DMG: 0x2 = [ - [1658400025.689161][2474:2474] CHIP:DMG: 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, - [1658400025.689209][2474:2474] CHIP:DMG: ] - [1658400025.689261][2474:2474] CHIP:DMG: 0x3 = 1, - [1658400025.689312][2474:2474] CHIP:DMG: 0x4 = 0, - [1658400025.689353][2474:2474] CHIP:DMG: 0x5 = 0, - [1658400025.689403][2474:2474] CHIP:DMG: }, - [1658400025.689436][2474:2474] CHIP:DMG: }, - [1658400025.689477][2474:2474] CHIP:DMG: - [1658400025.689529][2474:2474] CHIP:DMG: ], - [1658400025.689575][2474:2474] CHIP:DMG: - [1658400025.689619][2474:2474] CHIP:DMG: InteractionModelRevision = 1 - [1658400025.689648][2474:2474] CHIP:DMG: }, - [1658400025.689747][2474:2474] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=a - [1658400025.689802][2474:2474] CHIP:DMG: AccessControl: allowed - [1658400025.689836][2474:2474] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0101 Command=0x0000_0022 - [1658400025.689909][2474:2474] CHIP:ZCL: [SetCredential] Incoming command [endpointId=1] + [1660931208.583139][18319:18319] CHIP:DMG: InvokeRequestMessage = + [1660931208.583184][18319:18319] CHIP:DMG: { + [1660931208.583226][18319:18319] CHIP:DMG: suppressResponse = false, + [1660931208.583275][18319:18319] CHIP:DMG: timedRequest = true, + [1660931208.583319][18319:18319] CHIP:DMG: InvokeRequests = + [1660931208.583381][18319:18319] CHIP:DMG: [ + [1660931208.583426][18319:18319] CHIP:DMG: CommandDataIB = + [1660931208.583475][18319:18319] CHIP:DMG: { + [1660931208.583522][18319:18319] CHIP:DMG: CommandPathIB = + [1660931208.583579][18319:18319] CHIP:DMG: { + [1660931208.583636][18319:18319] CHIP:DMG: EndpointId = 0x1, + [1660931208.583698][18319:18319] CHIP:DMG: ClusterId = 0x101, + [1660931208.583757][18319:18319] CHIP:DMG: CommandId = 0x22, + [1660931208.583813][18319:18319] CHIP:DMG: }, + [1660931208.583871][18319:18319] CHIP:DMG: + [1660931208.583923][18319:18319] CHIP:DMG: CommandFields = + [1660931208.583979][18319:18319] CHIP:DMG: { + [1660931208.584037][18319:18319] CHIP:DMG: 0x0 = 0, + [1660931208.584100][18319:18319] CHIP:DMG: 0x1 = + [1660931208.584158][18319:18319] CHIP:DMG: { + [1660931208.584220][18319:18319] CHIP:DMG: 0x0 = 1, + [1660931208.584289][18319:18319] CHIP:DMG: 0x1 = 1, + [1660931208.584353][18319:18319] CHIP:DMG: }, + [1660931208.584413][18319:18319] CHIP:DMG: 0x2 = [ + [1660931208.584473][18319:18319] CHIP:DMG: 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + [1660931208.584540][18319:18319] CHIP:DMG: ] (6 bytes) + [1660931208.584596][18319:18319] CHIP:DMG: 0x3 = 1, + [1660931208.584662][18319:18319] CHIP:DMG: 0x4 = NULL + [1660931208.584722][18319:18319] CHIP:DMG: 0x5 = NULL + [1660931208.584781][18319:18319] CHIP:DMG: }, + [1660931208.584834][18319:18319] CHIP:DMG: }, + [1660931208.584895][18319:18319] CHIP:DMG: + [1660931208.584938][18319:18319] CHIP:DMG: ], + [1660931208.584999][18319:18319] CHIP:DMG: + [1660931208.585043][18319:18319] CHIP:DMG: InteractionModelRevision = 1 + [1660931208.585086][18319:18319] CHIP:DMG: }, + ./chip-tool doorlock unlock-door 1 1 --timedInteractionTimeoutMs 1000 --PinCode 123456 @@ -163,18 +205,30 @@ tests: - label: "TH initiates DoorStateChange event with Doorstate set to DoorOpen" PICS: DRLK.C.F05 && DRLK.C.E01 verification: | + To trigger the event give below command in another terminal of DUT + echo "{"Cmd": "SetDoorState", "Params": { "EndpointId": 1, "DoorState": 1 } }" > /tmp/chip_lock_app_fifo- (PID of lock-app) + ./chip-tool doorlock read-event door-state-change 1 1 Verify "DUT receives DoorStateChange Event" on the TH(Lock-app) Log: - [1659521149.394340][4046:4051] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Event 0x0000_0001 - [1659521149.394391][4046:4051] CHIP:TOO: Event number: 1 - [1659521149.394412][4046:4051] CHIP:TOO: Priority: Critical - [1659521149.394433][4046:4051] CHIP:TOO: Timestamp: 22783568 - [1659521149.394503][4046:4051] CHIP:TOO: DoorStateChange: { - [1659521149.394539][4046:4051] CHIP:TOO: DoorState: 1 - [1659521149.394564][4046:4051] CHIP:TOO: } - [1659521149.394654][4046:4051] CHIP:EM: Sending Standalone Ack for MessageCounter:231120057 on exchange 10153i + [1660933582.187791][18319:18319] CHIP:DMG: ReadRequestMessage = + [1660933582.187819][18319:18319] CHIP:DMG: { + [1660933582.187851][18319:18319] CHIP:DMG: EventPathIBs = + [1660933582.187877][18319:18319] CHIP:DMG: [ + [1660933582.187901][18319:18319] CHIP:DMG: EventPath = + [1660933582.187937][18319:18319] CHIP:DMG: { + [1660933582.187966][18319:18319] CHIP:DMG: Endpoint = 0x1, + [1660933582.188006][18319:18319] CHIP:DMG: Cluster = 0x101, + [1660933582.188035][18319:18319] CHIP:DMG: Event = 0x1, + [1660933582.188069][18319:18319] CHIP:DMG: }, + [1660933582.188100][18319:18319] CHIP:DMG: + [1660933582.188132][18319:18319] CHIP:DMG: ], + [1660933582.188159][18319:18319] CHIP:DMG: + [1660933582.188193][18319:18319] CHIP:DMG: isFabricFiltered = true, + [1660933582.188218][18319:18319] CHIP:DMG: InteractionModelRevision = 1 + [1660933582.188250][18319:18319] CHIP:DMG: }, + [1660933582.188328][18319:18319] CHIP:DMG: IM RH moving to [GeneratingReports] disabled: true - label: "DUT sends the Lock Door command to the TH with valid PINCode" diff --git a/src/app/tests/suites/certification/Test_TC_IDM_2_2.yaml b/src/app/tests/suites/certification/Test_TC_IDM_2_2.yaml index f5dedc2c4d6f11..398e1590e5bbaf 100644 --- a/src/app/tests/suites/certification/Test_TC_IDM_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_IDM_2_2.yaml @@ -1197,7 +1197,8 @@ tests: from the DUT." verification: | In case of chip tool, here is an example command to use - sudo ./chip-tool any read-all 1 0xFFFF --timeout 50 - Verify on TH , DUT is responds right attributes and events for above command + ./chip-tool any read-all 0xFFFFFFFF,0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 1 0xFFFF,0xFFFF + + on TH verify that DUT sends back data of all attributes and events that the TH has access to disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_IDM_3_1.yaml b/src/app/tests/suites/certification/Test_TC_IDM_3_1.yaml index 8109e78a529115..f7a6ebbc7eeb10 100644 --- a/src/app/tests/suites/certification/Test_TC_IDM_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_IDM_3_1.yaml @@ -15,20 +15,22 @@ name: 3.3.1. [TC-IDM-3.1] Write Request Action from DUT to TH. [{DUT_Client}] -PICS: - - MCORE.IDM.C.WriteRequest - config: nodeId: 0x12344321 cluster: "Basic" endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT sends the WriteRequestMessage to the TH to modify one attribute data" verification: | - In case of chip tool, here is an example command to use + Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) sudo ./chip-tool levelcontrol write on-level 2 1 1 @@ -62,7 +64,7 @@ tests: [1655795552.552647][7331:7331] CHIP:DMG: InteractionModelRevision = 1 [1655795552.552686][7331:7331] CHIP:DMG: }, - On DUT as a client side, verify that TH all-clusters-app sent success response + If the DUT has to provision to verify the logs,, verify that TH all-clusters-app sent success response [1657883782.721742][2796:2801] CHIP:DMG: WriteResponseMessage = [1657883782.721783][2796:2801] CHIP:DMG: { [1657883782.721819][2796:2801] CHIP:DMG: AttributeStatusIBs = @@ -112,7 +114,7 @@ tests: [1657883808.063295][2457:2457] CHIP:DMG: }, [1657883808.063369][2457:2457] CHIP:DMG: IM RH moving to [GeneratingReports] - On DUT as a client side, verify that TH all-clusters-app sent success response + If the DUT has to provision to verify the logs,, verify that TH all-clusters-app sent success response [1655795604.755214][6880:6885] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0008 Attribute 0x0000_0011 DataVersion: 737039636 [1655795604.755363][6880:6885] CHIP:TOO: on level: 2 [1655795604.755460][6880:6885] CHIP:EM: Sending Standalone Ack for MessageCounter:83198098 on exchange 53763i @@ -127,10 +129,11 @@ tests: disabled: true - label: - "[Optional] DUT sends the WriteRequestMessage to the TH to write an - attribute of data type bool." + "DUT sends the WriteRequestMessage to the TH to write an attribute of + data type bool." + PICS: MCORE.IDM.C.WriteRequest.Attribute.DataType_Bool verification: | - In case of chip tool, here is an example command to use + Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) ./chip-tool basic write local-config-disabled 1 1 0 @@ -166,7 +169,7 @@ tests: - On DUT as a client side, verify that TH all-clusters-app sent success response + If the DUT has to provision to verify the logs, verify that TH all-clusters-app sent success response [1657883938.394965][2822:2827] CHIP:DMG: WriteResponseMessage = [1657883938.394995][2822:2827] CHIP:DMG: { @@ -218,23 +221,21 @@ tests: [1657884119.523280][2748:2748] CHIP:DMG: }, - - On DUT as a client side, verify that TH all-clusters-app sent success response + If the DUT has to provision to verify the logs, verify that TH all-clusters-app sent success response [1655795843.336042][6902:6907] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0010 DataVersion: 1263909562 [1655795843.336093][6902:6907] CHIP:TOO: LocalConfigDisabled: TRUE [1655795843.336251][6902:6907] CHIP:EM: Sending Standalone Ack for MessageCounter:108030495 on exchange 43207i disabled: true - label: - "[Optional] DUT sends the WriteRequestMessage to the TH to write an - attribute of data type string." + "DUT sends the WriteRequestMessage to the TH to write an attribute of + data type string." + PICS: MCORE.IDM.C.WriteRequest.Attribute.DataType_String verification: | - In case of chip tool, here is an example command to use - + Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) ./chip-tool basic write node-label node 1 0 - verify on TH(reference app) receives the right write Request Message for the data sent in the above command [1655796035.022296][7331:7331] CHIP:EM: Handling via exchange: 64908r, Delegate: 0xaaaad9aed418 @@ -265,8 +266,7 @@ tests: [1655796035.023656][7331:7331] CHIP:DMG: }, [1655796035.023791][7331:7331] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0028 e=0 p=m [1655796035.023851][7331:7331] CHIP:DMG: AccessControl: allowed - - On DUT as a client side, verify that TH all-clusters-app sent success response + If the DUT has to provision to verify the logs, verify that TH all-clusters-app sent success response [1657884155.221193][2865:2870] CHIP:DMG: WriteResponseMessage = [1657884155.221246][2865:2870] CHIP:DMG: { [1657884155.221292][2865:2870] CHIP:DMG: AttributeStatusIBs = @@ -315,8 +315,7 @@ tests: [1657884173.739288][2748:2748] CHIP:DMG: }, - - On DUT as a client side, verify that TH all-clusters-app sent success response + If the DUT has to provision to verify the logs, verify that TH all-clusters-app sent success response [1655796082.079468][6918:6923] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0005 DataVersion: 1263909563 [1655796082.079509][6918:6923] CHIP:TOO: NodeLabel: node @@ -324,11 +323,11 @@ tests: disabled: true - label: - "[Optional] DUT sends the WriteRequestMessage to the TH to write an - attribute of data type unsigned integer." + "DUT sends the WriteRequestMessage to the TH to write an attribute of + data type unsigned integer." + PICS: MCORE.IDM.C.WriteRequest.Attribute.DataType_UnsignedInteger verification: | - In case of chip tool, here is an example command to use - + Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) ./chip-tool any write-by-id 0x0008 0x0010 1 1 1 @@ -362,7 +361,8 @@ tests: [1655796141.168253][7331:7331] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0008 e=1 p=o [1655796141.168313][7331:7331] CHIP:DMG: AccessControl: allowed - On DUT as a client side, verify that TH all-clusters-app sent success response + + If the DUT has to provision to verify the logs, verify that TH all-clusters-app sent success response [1657884204.951658][2878:2883] CHIP:DMG: WriteResponseMessage = [1657884204.951700][2878:2883] CHIP:DMG: { [1657884204.951736][2878:2883] CHIP:DMG: AttributeStatusIBs = @@ -413,53 +413,58 @@ tests: [1657884227.860339][2748:2748] CHIP:DMG: }, [1657884227.860413][2748:2748] CHIP:DMG: IM RH moving to [GeneratingReports] - - On DUT as a client side, verify that TH all-clusters-app sent success response + If the DUT has to provision to verify the logs, verify that TH all-clusters-app sent success response [1655796192.032715][6931:6936] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0008 Attribute 0x0000_0010 DataVersion: 737039637 [1655796192.032807][6931:6936] CHIP:TOO: on off transition time: 1 [1655796192.032908][6931:6936] CHIP:EM: Sending Standalone Ack for MessageCounter:249349258 on exchange 7433i disabled: true - label: - "[Optional] DUT sends the WriteRequestMessage to the TH to write an - attribute of data type signed integer." + "DUT sends the WriteRequestMessage to the TH to write an attribute of + data type signed integer." + PICS: MCORE.IDM.C.WriteRequest.Attribute.DataType_SignedInteger verification: | DUT implementation required to verify write an attribute of data type signed integer. disabled: true - label: - "[Optional] DUT sends the WriteRequestMessage to the TH to write an - attribute of data type floating point." + "DUT sends the WriteRequestMessage to the TH to write an attribute of + data type floating point." + PICS: MCORE.IDM.C.WriteRequest.Attribute.DataType_FloatingPoint verification: | DUT implementation required to verify write an attribute of data type float disabled: true - label: - "[Optional] DUT sends the WriteRequestMessage to the TH to write an - attribute of data type Octet String." + "DUT sends the WriteRequestMessage to the TH to write an attribute of + data type Octet String." + PICS: MCORE.IDM.C.WriteRequest.Attribute.DataType_OctetString verification: | DUT implementation required to verify write an attribute of data type Octet String disabled: true - label: - "[Optional] DUT sends the WriteRequestMessage to the TH to write an - attribute of data type Struct." + "DUT sends the WriteRequestMessage to the TH to write an attribute of + data type Struct." + PICS: MCORE.IDM.C.WriteRequest.Attribute.DataType_Struct verification: | DUT implementation required to verify write an attribute ofdata type Struct disabled: true - label: - "[Optional] DUT sends the WriteRequestMessage to the TH to write an - attribute of data type List." + "DUT sends the WriteRequestMessage to the TH to write an attribute of + data type List." + PICS: MCORE.IDM.C.WriteRequest.Attribute.DataType_List verification: | DUT implementation required to verify write an attribute of data type List disabled: true - label: - "[Optional] DUT sends the WriteRequestMessage to the TH to write an - attribute of data type enum." + "DUT sends the WriteRequestMessage to the TH to write an attribute of + data type enum." + PICS: MCORE.IDM.C.WriteRequest.Attribute.DataType_Enum verification: | - In case of chip tool, here is an example command to use + Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) ./chip-tool any write-by-id 0x0204 0 1 1 1 @@ -494,7 +499,7 @@ tests: [1655796297.609342][7331:7331] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0204 e=1 p=o [1655796297.609403][7331:7331] CHIP:DMG: AccessControl: allowed - On DUT as a client side, verify that TH all-clusters-app sent success response + If the DUT has to provision to verify the logs, verify that TH all-clusters-app sent success response [1657884258.383116][2892:2897] CHIP:DMG: WriteResponseMessage = [1657884258.383157][2892:2897] CHIP:DMG: { [1657884258.383192][2892:2897] CHIP:DMG: AttributeStatusIBs = @@ -530,19 +535,18 @@ tests: [1657884282.303778][2898:2903] CHIP:TOO: temperature display mode: 1 [1657884282.303862][2898:2903] CHIP:EM: Sending Standalone Ack for MessageCounter:147756485 on exchange 42871i - On DUT as a client side, verify that TH all-clusters-app sent success response + If the DUT has to provision to verify the logs,, verify that TH all-clusters-app sent success response [1655796341.132655][6946:6951] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0204 Attribute 0x0000_0000 DataVersion: 3165945391 [1655796341.132864][6946:6951] CHIP:TOO: temperature display mode: 1 [1655796341.132973][6946:6951] CHIP:EM: Sending Standalone Ack for MessageCounter:245498041 on exchange 51992i disabled: true - label: - "[Optional] DUT sends the WriteRequestMessage to the TH to write an - attribute of data type bitmap." + "DUT sends the WriteRequestMessage to the TH to write an attribute of + data type bitmap." + PICS: MCORE.IDM.C.WriteRequest.Attribute.DataType_Bitmap verification: | - In case of chip tool, here is an example command to use - - + Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) ./chip-tool colorcontrol write-by-id 0x000f 1 1 1 @@ -577,7 +581,7 @@ tests: [1655796429.698446][7331:7331] CHIP:DMG: AccessControl: allowed - On DUT as a client side, verify that TH all-clusters-app sent success response + If the DUT has to provision to verify the logs, verify that TH all-clusters-app sent success response [1657884309.994598][2907:2912] CHIP:DMG: WriteResponseMessage = [1657884309.994627][2907:2912] CHIP:DMG: { @@ -630,8 +634,7 @@ tests: [1657884334.614053][2748:2748] CHIP:DMG: }, [1657884334.614128][2748:2748] CHIP:DMG: IM RH moving to [GeneratingReports] - - On DUT as a client side, verify that TH all-clusters-app sent success response + If the DUT has to provision to verify the logs, verify that TH all-clusters-app sent success response [1655796493.233673][6961:6966] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_000F DataVersion: 2788050502 [1655796493.233761][6961:6966] CHIP:TOO: Options: 1 [1655796493.233865][6961:6966] CHIP:EM: Sending Standalone Ack for MessageCounter:185730221 on exchange 37136i @@ -639,7 +642,8 @@ tests: - label: "DUT sends a WriteRequestMessage to the TH with a large list of - attribute data which has to be sent in multiple messages." + attribute data, which is larger than 1 MTU(1280 bytes), that has to be + sent in multiple messages." verification: | DUT implementation required to verify write an attribute which is is larger than 1 MTU(1280 bytes) Here is an example command to verify the write functionality. User must choose an attribute which has large list of attribute data. @@ -650,7 +654,7 @@ tests: "DUT sends the WriteRequestMessage to the TH to write one attribute on a given cluster and endpoint. Repeat the above steps 3 times." verification: | - In case of chip tool, here is an example command to use + Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) ./chip-tool any write-by-id 0x0204 0 1 1 1 @@ -685,7 +689,7 @@ tests: [1655796724.512195][7331:7331] CHIP:DMG: }, [1655796724.512344][7331:7331] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0204 e=1 p=o - On DUT as a client side, verify that TH all-clusters-app sent success response + If the DUT has to provision to verify the logs, verify that TH all-clusters-app sent success response [1657884369.932192][2923:2928] CHIP:DMG: WriteResponseMessage = [1657884369.932226][2923:2928] CHIP:DMG: { [1657884369.932255][2923:2928] CHIP:DMG: AttributeStatusIBs = @@ -737,8 +741,7 @@ tests: [1657884399.502907][2748:2748] CHIP:DMG: }, [1657884399.502989][2748:2748] CHIP:DMG: IM RH moving to [GeneratingReports] - - On DUT as a client side, verify that TH all-clusters-app sent success response + If the DUT has to provision to verify the logs, verify that TH all-clusters-app sent success response [1655796786.513406][6976:6981] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0204 Attribute 0x0000_0000 DataVersion: 3165945392 [1655796786.513496][6976:6981] CHIP:TOO: temperature display mode: 1 [1655796786.513593][6976:6981] CHIP:EM: Sending Standalone Ack for MessageCounter:190446058 on exchange 28240i @@ -749,9 +752,9 @@ tests: disabled: true - label: - "[Optional] DUT sends a ReadRequest message to the TH to read any - attribute on two clusters. TH returns with a report data action with - the attribute values and the dataversions of the clusters. DUT sends a + "DUT sends a ReadRequest message to the TH to read any attribute on + two clusters. TH returns with a report data action with the attribute + values and the dataversions of the clusters. DUT sends a WriteRequestMessage to the DUT to both the clusters with the appropriate dataversions(received in the previous step) to modify the value of an attribute" diff --git a/src/app/tests/suites/certification/Test_TC_IDM_4_1.yaml b/src/app/tests/suites/certification/Test_TC_IDM_4_1.yaml index f22a140b6cf067..a27bf4593c59d0 100644 --- a/src/app/tests/suites/certification/Test_TC_IDM_4_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_IDM_4_1.yaml @@ -26,11 +26,26 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Please use Interactive mode to Verify subscription test cases + Here the command to enter interactive mode:-- ./chip-tool interactive start + disabled: true + + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT sends a subscription request message to the target node/reference device for a single attribute of any data type supported." + PICS: MCORE.IDM.C.SubscribeRequest verification: | - In the case of chip tool as a client, here is an example command the client can subscribe to the TH + Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) + + Please use Interactive mode to Verify subscription test cases + Here the command to enter interactive mode:-- ./chip-tool interactive start onoff subscribe on-off 10 80 1 1 @@ -60,7 +75,7 @@ tests: [1657446108.598559][11525:11525] CHIP:DMG: IM RH moving to [GeneratingReports] - On DUT as a client side, verify that TH all-clusters-app sent Subscription report with unic subscriptionID + If the DUT has to provision to verify the logs, verify that TH all-clusters-app sent Subscription report with unic subscriptionID [1657884469.617473][2938:2943] CHIP:DMG: ReportDataMessage = [1657884469.617508][2938:2943] CHIP:DMG: { [1657884469.617538][2938:2943] CHIP:DMG: SubscriptionId = 0x2d030a2b, @@ -109,8 +124,12 @@ tests: - label: "DUT sends the subscription request message to TH TH sends a report data DUT sends the status response back to TH" + PICS: MCORE.IDM.C.SubscribeRequest verification: | - In the case of chip tool as a client, here is an example command the client can subscribe to the TH + Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) + + Please use Interactive mode to Verify subscription test cases + Here the command to enter interactive mode:-- ./chip-tool interactive start onoff subscribe on-off 10 80 1 1 @@ -126,7 +145,8 @@ tests: [1657446108.604672][11525:11525] CHIP:IM: Received status response, status is 0x00 (SUCCESS) [1657446108.604755][11525:11525] CHIP:DMG: Refresh Subscribe Sync Timer with max 80 seconds - On DUT as a client side, verify that TH all-clusters-app sent Subscription report with unic subscriptionID + + If the DUT has to provision to verify the logs, verify that TH all-clusters-app sent Subscription report with unic subscriptionID [1657884569.751004][2938:2943] CHIP:DMG: ReportDataMessage = [1657884569.751034][2938:2943] CHIP:DMG: { [1657884569.751059][2938:2943] CHIP:DMG: SubscriptionId = 0x47cd6fdb, @@ -177,8 +197,13 @@ tests: an attribute of data type boolean. Modify that attribute on the TH. TH should send the modified data to the DUT. Modify the attribute multiple times (3 times)." + PICS: MCORE.IDM.C.SubscribeRequest.Attribute.DataType_Bool verification: | - In the case of chip tool as a client, here is an example command the client can subscribe to the TH + Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) + + + Please use Interactive mode to Verify subscription test cases + Here the command to enter interactive mode:-- ./chip-tool interactive start basic subscribe local-config-disabled 10 100 1 0 @@ -206,7 +231,8 @@ tests: - On DUT as a client side, verify that TH all-clusters-app sent Subscription report with unic subscriptionID + + If the DUT has to provision to verify the logs, verify that TH all-clusters-app sent Subscription report with unic subscriptionID [1657884643.152038][2938:2943] CHIP:DMG: ReportDataMessage = [1657884643.152141][2938:2943] CHIP:DMG: { [1657884643.152206][2938:2943] CHIP:DMG: SubscriptionId = 0x2e0592e3, @@ -257,8 +283,12 @@ tests: an attribute of data type string. Modify that attribute on the TH. TH should send the modified data to the DUT. Modify the attribute multiple times (3 times)." + PICS: MCORE.IDM.C.SubscribeRequest.Attribute.DataType_String verification: | - In the case of chip tool as a client, here is an example command the client can subscribe to the TH + Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) + + Please use Interactive mode to Verify subscription test cases + Here the command to enter interactive mode:-- ./chip-tool interactive start basic subscribe node-label 30 200 1 0 @@ -290,7 +320,8 @@ tests: [1657446721.226711][11525:11525] CHIP:DMG: OnReportConfirm: NumReports = 0 [1657446721.226773][11525:11525] CHIP:DMG: IM RH moving to [GeneratingReports] - On DUT as a client side, verify that TH all-clusters-app sent Subscription report with unic subscriptionID + + If the DUT has to provision to verify the logs, verify that TH all-clusters-app sent Subscription report with unic subscriptionID [1657884902.175205][2938:2943] CHIP:DMG: ReportDataMessage = [1657884902.175255][2938:2943] CHIP:DMG: { [1657884902.175299][2938:2943] CHIP:DMG: SubscriptionId = 0x6a6457a1, @@ -327,9 +358,12 @@ tests: an attribute of data type unsigned integer. Modify that attribute on the TH. TH should send the modified data to the DUT. Modify the attribute multiple times (3 times)." + PICS: MCORE.IDM.C.SubscribeRequest.Attribute.DataType_UnsignedInteger verification: | - In the case of chip tool as a client, here is an example command the client can subscribe to the TH + Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) + Please use Interactive mode to Verify subscription test cases + Here the command to enter interactive mode:-- ./chip-tool interactive start any subscribe-by-id 0x0008 0x0010 10 100 1 1 On TH (On the reference app) Verify if DUT is responding with the below status response for the above command @@ -404,7 +438,8 @@ tests: [1657448453.234577][11525:11525] CHIP:DMG: OnReportConfirm: NumReports = 0 - On DUT as a client side, verify that TH all-clusters-app sent Subscription report with unic subscriptionID + + If the DUT has to provision to verify the logs, , verify that TH all-clusters-app sent Subscription report with unic subscriptionID [1657884955.073466][2938:2943] CHIP:DMG: ReportDataMessage = [1657884955.073516][2938:2943] CHIP:DMG: { [1657884955.073562][2938:2943] CHIP:DMG: SubscriptionId = 0x6cee9660, @@ -444,6 +479,7 @@ tests: an attribute of data type signed integer. Modify that attribute on the TH. TH should send the modified data to the DUT. Modify the attribute multiple times (3 times)" + PICS: MCORE.IDM.C.SubscribeRequest.Attribute.DataType_Integer verification: | DUT implementation required to verify subscribe an attribute of data type signed integer disabled: true @@ -453,6 +489,7 @@ tests: an attribute of data type Floating Point. Modify that attribute on the TH. TH should send the modified data to the DUT. Modify the attribute multiple times (3 times)" + PICS: MCORE.IDM.C.SubscribeRequest.Attribute.DataType_FloatingPoint verification: | DUT implementation required to verify subscribe an attribute of data type floating point disabled: true @@ -462,6 +499,7 @@ tests: an attribute of data type list. Modify that attribute on the TH. TH should send the modified data to the DUT. Modify the attribute multiple times (3 times)" + PICS: MCORE.IDM.C.SubscribeRequest.Attribute.DataType_List verification: | DUT implementation required to verify subscribe and list an attribute of data type list disabled: true @@ -472,6 +510,7 @@ tests: of the maximum interval. After the maximum interval, TH sends a report data with the subscription id created during the subscription activation." + PICS: MCORE.IDM.C.SubscribeRequest verification: | This is not testable in normal scenario, and needs to be tested as part of Unit test. disabled: true @@ -479,8 +518,12 @@ tests: - label: "DUT sends a subscription request message to the target node/reference device for multiple attributes(3 attributes)." + PICS: MCORE.IDM.C.SubscribeRequest.MultipleAttributes verification: | - In the case of chip tool as a client, here is an example command the client can subscribe to the TH + Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) + + Please use Interactive mode to Verify subscription test cases + Here the command to enter interactive mode:-- ./chip-tool interactive start any subscribe-by-id "6,8,3" "0,1,0" 10 100 "1" "1,1,1" @@ -534,7 +577,8 @@ tests: [1657449168.674365][11525:11525] CHIP:DMG: Refresh Subscribe Sync Timer with max 100 seconds - On DUT as a client side, verify that TH all-clusters-app sent Subscription report with unic subscriptionID + + If the DUT has to provision to verify the logs, verify that TH all-clusters-app sent Subscription report with unic subscriptionID 884990.165955][2938:2943] CHIP:DMG: }, [1657884990.166021][2938:2943] CHIP:DMG: [1657884990.166072][2938:2943] CHIP:DMG: ], diff --git a/src/app/tests/suites/certification/Test_TC_IDM_6_2.yaml b/src/app/tests/suites/certification/Test_TC_IDM_6_2.yaml index 5ebd36b33d7d77..1fd77cd9e875d5 100644 --- a/src/app/tests/suites/certification/Test_TC_IDM_6_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_IDM_6_2.yaml @@ -32,11 +32,6 @@ tests: Here the command to enter interactive mode:-- ./chip-tool interactive start disabled: true - - label: "Note" - verification: | - Chip-tool command used below are an example to verify the DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. - disabled: true - - label: "TH sends Subscribe Request Message to DUT with EventRequests set to a specific event from a specific cluster on a specific endpoint on a diff --git a/src/app/tests/suites/certification/Test_TC_IDM_6_3.yaml b/src/app/tests/suites/certification/Test_TC_IDM_6_3.yaml index f9c15459f0130c..ab5421f1ded75d 100644 --- a/src/app/tests/suites/certification/Test_TC_IDM_6_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_IDM_6_3.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT sends Read Request Message to the TH for a supported event." verification: | The cluster used in the below command is an example, User can use any supported chip cluster. diff --git a/src/app/tests/suites/certification/Test_TC_KEYPADINPUT_1_2.yaml b/src/app/tests/suites/certification/Test_TC_KEYPADINPUT_1_2.yaml index 35e800441f7824..913ad1cc5aaa00 100644 --- a/src/app/tests/suites/certification/Test_TC_KEYPADINPUT_1_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_KEYPADINPUT_1_2.yaml @@ -41,6 +41,15 @@ tests: constraints: type: int16u + - label: "Read the global attribute: FeatureMap" + PICS: " !KEYPADINPUT.S.NV && KEYPADINPUT.S.LK && !KEYPADINPUT.S.NK " + command: "readAttribute" + attribute: "FeatureMap" + response: + value: 0 + constraints: + type: bitmap32 + - label: "Read the global attribute: FeatureMap" PICS: KEYPADINPUT.S.NV || KEYPADINPUT.S.LK || KEYPADINPUT.S.NK command: "readAttribute" @@ -48,7 +57,7 @@ tests: response: constraints: type: bitmap32 - minValue: 0 + minValue: 1 maxValue: 7 - label: "Read the global attribute: AttributeList" diff --git a/src/app/tests/suites/certification/Test_TC_LCFG_2_1.yaml b/src/app/tests/suites/certification/Test_TC_LCFG_2_1.yaml index 46634220980848..45e15fe6bfd33d 100644 --- a/src/app/tests/suites/certification/Test_TC_LCFG_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_LCFG_2_1.yaml @@ -46,7 +46,7 @@ tests: - label: "TH writes xx-XX to SupportedLocales attribute" verification: | - ./chip-tool any write-by-id 0x002B 1 ""xx-XX"" 1 0 + ./chip-tool any write-by-id 0x002B 1 '"xx-XX"' 1 0 On TH(chip-tool) verify that DUT responds as UNSUPPORTED_WRITE [1653996674.832226][7281:7286] CHIP:DMG: WriteClient moving to [AwaitingDe] diff --git a/src/app/tests/suites/certification/Test_TC_LTIME_1_1.yaml b/src/app/tests/suites/certification/Test_TC_LTIME_1_1.yaml index b9caa8a2be326b..3dea75d005036b 100644 --- a/src/app/tests/suites/certification/Test_TC_LTIME_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_LTIME_1_1.yaml @@ -26,7 +26,7 @@ config: tests: - label: "Note" verification: | - Chip-tool command used below are an example to verify the DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. disabled: true - label: "Commission DUT to TH" @@ -149,8 +149,3 @@ tests: [1659778463.618601][17263:17263] CHIP:DMG: IM RH moving to [GeneratingReports] [1659778463.618663][17263:17263] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 disabled: true - - - label: "" - verification: | - verification step to be updated. - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_LVL_1_1.yaml b/src/app/tests/suites/certification/Test_TC_LVL_1_1.yaml index 5fc10aabb21232..1b3f3a04c45b3b 100644 --- a/src/app/tests/suites/certification/Test_TC_LVL_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_LVL_1_1.yaml @@ -46,16 +46,25 @@ tests: response: constraints: type: bitmap32 - minValue: 0 + minValue: 1 maxValue: 7 + - label: "Read the global attribute: FeatureMap" + PICS: " !LVL.S.F00 && !LVL.S.F01 && !LVL.S.F02 " + command: "readAttribute" + attribute: "FeatureMap" + response: + value: 0 + constraints: + type: bitmap32 + - label: "Read the global attribute: AttributeList" command: "readAttribute" attribute: "AttributeList" response: constraints: type: list - contains: [0, 15, 17] + contains: [0, 15, 17, 65528, 65529, 65531, 65532, 65533] - label: "Read the optional attribute(StartUpCurrentLevel and RemainingTime) in diff --git a/src/app/tests/suites/certification/Test_TC_LVL_2_3.yaml b/src/app/tests/suites/certification/Test_TC_LVL_2_3.yaml index d8e61b7df8e803..061f1b8d05ac29 100644 --- a/src/app/tests/suites/certification/Test_TC_LVL_2_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_LVL_2_3.yaml @@ -28,6 +28,11 @@ config: endpoint: 0 tests: + - label: "Note" + verifaction: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT reads all supported mandatory attributes from TH one at a time in a manufacturer specific order" @@ -633,9 +638,9 @@ tests: TH all-clusters-minimal-app does not support optional attributes To verify this behaviour send the below mentioned commands and check the result as unsupported attribute - ./chip-tool levelcontrol write on-off-transition-time 5 1 1 - ./chip-tool levelcontrol write on-transition-time 5 1 1 - ./chip-tool levelcontrol write off-transition-time 5 1 1 - ./chip-tool levelcontrol write default-move-rate 5 1 1 - ./chip-tool levelcontrol write start-up-current-level 5 1 1 + ./chip-tool levelcontrol write on-off-transition-time 5 1 1 + ./chip-tool levelcontrol write on-transition-time 5 1 1 + ./chip-tool levelcontrol write off-transition-time 5 1 1 + ./chip-tool levelcontrol write default-move-rate 5 1 1 + ./chip-tool levelcontrol write start-up-current-level 5 1 1 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_LVL_3_1.yaml b/src/app/tests/suites/certification/Test_TC_LVL_3_1.yaml index 23743e71284c1a..507813609a736f 100644 --- a/src/app/tests/suites/certification/Test_TC_LVL_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_LVL_3_1.yaml @@ -44,6 +44,15 @@ tests: response: value: 1 + #Adding below step resolve the issue https://github.com/CHIP-Specifications/chip-certification-tool/issues/499 + - label: + "Precondition: write default value of OnOffTransitionTime attribute" + PICS: LVL.S.A0010 + command: "writeAttribute" + attribute: "OnOffTransitionTime" + arguments: + value: 0 + - label: "TH writes 0 to the Options attribute" PICS: LVL.S.A000f command: "writeAttribute" @@ -229,9 +238,9 @@ tests: command: "MoveToLevel" arguments: values: - - name: "level" + - name: "Level" value: 100 - - name: "transitionTime" + - name: "TransitionTime" value: 0 - name: "OptionsMask" value: 0 @@ -255,9 +264,9 @@ tests: command: "MoveToLevel" arguments: values: - - name: "level" + - name: "Level" value: 120 - - name: "transitionTime" + - name: "TransitionTime" value: 0 - name: "OptionsMask" value: 0 @@ -276,9 +285,9 @@ tests: command: "MoveToLevel" arguments: values: - - name: "level" + - name: "Level" value: 140 - - name: "transitionTime" + - name: "TransitionTime" value: 0 - name: "OptionsMask" value: 1 @@ -297,9 +306,9 @@ tests: command: "MoveToLevel" arguments: values: - - name: "level" + - name: "Level" value: 160 - - name: "transitionTime" + - name: "TransitionTime" value: 0 - name: "OptionsMask" value: 1 @@ -337,9 +346,9 @@ tests: command: "MoveToLevel" arguments: values: - - name: "level" + - name: "Level" value: 100 - - name: "transitionTime" + - name: "TransitionTime" value: 0 - name: "OptionsMask" value: 0 @@ -363,9 +372,9 @@ tests: command: "MoveToLevel" arguments: values: - - name: "level" + - name: "Level" value: 120 - - name: "transitionTime" + - name: "TransitionTime" value: 0 - name: "OptionsMask" value: 0 @@ -384,9 +393,9 @@ tests: command: "MoveToLevel" arguments: values: - - name: "level" + - name: "Level" value: 140 - - name: "transitionTime" + - name: "TransitionTime" value: 0 - name: "OptionsMask" value: 1 @@ -405,9 +414,9 @@ tests: command: "MoveToLevel" arguments: values: - - name: "level" + - name: "Level" value: 160 - - name: "transitionTime" + - name: "TransitionTime" value: 0 - name: "OptionsMask" value: 1 @@ -420,16 +429,3 @@ tests: attribute: "CurrentLevel" response: value: 160 - - - label: "Precondition send Off Command" - cluster: "On/Off" - PICS: OO.S.C00.Rsp - command: "Off" - - - label: "Check on/off attribute value is false after off command" - cluster: "On/Off" - PICS: OO.S.A0000 - command: "readAttribute" - attribute: "OnOff" - response: - value: 0 diff --git a/src/app/tests/suites/certification/Test_TC_LVL_4_1.yaml b/src/app/tests/suites/certification/Test_TC_LVL_4_1.yaml index 671a275aeca385..386a7447f264d6 100644 --- a/src/app/tests/suites/certification/Test_TC_LVL_4_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_LVL_4_1.yaml @@ -44,6 +44,15 @@ tests: response: value: 1 + #Adding below step resolve the issue https://github.com/CHIP-Specifications/chip-certification-tool/issues/499 + - label: + "Precondition: write default value of OnOffTransitionTime attribute" + PICS: LVL.S.A0013 + command: "writeAttribute" + attribute: "OnOffTransitionTime" + arguments: + value: 0 + - label: "TH writes 0 to the Options attribute" PICS: LVL.S.A000f command: "writeAttribute" diff --git a/src/app/tests/suites/certification/Test_TC_LVL_5_1.yaml b/src/app/tests/suites/certification/Test_TC_LVL_5_1.yaml index f3f1bc7583f706..4febf9ad1e5248 100644 --- a/src/app/tests/suites/certification/Test_TC_LVL_5_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_LVL_5_1.yaml @@ -44,6 +44,15 @@ tests: response: value: 1 + #Adding below step resolve the issue https://github.com/CHIP-Specifications/chip-certification-tool/issues/499 + - label: + "Precondition: write default value of OnOffTransitionTime attribute" + PICS: LVL.S.A0013 + command: "writeAttribute" + attribute: "OnOffTransitionTime" + arguments: + value: 0 + - label: "TH writes 0 to the Options attribute" PICS: LVL.S.A000f command: "writeAttribute" diff --git a/src/app/tests/suites/certification/Test_TC_LVL_6_1.yaml b/src/app/tests/suites/certification/Test_TC_LVL_6_1.yaml index 2b87fb422a8f05..e9793c96a37ea0 100644 --- a/src/app/tests/suites/certification/Test_TC_LVL_6_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_LVL_6_1.yaml @@ -44,6 +44,15 @@ tests: response: value: 1 + #Adding below step resolve the issue https://github.com/CHIP-Specifications/chip-certification-tool/issues/499 + - label: + "Precondition: write default value of OnOffTransitionTime attribute" + PICS: LVL.S.A0013 + command: "writeAttribute" + attribute: "OnOffTransitionTime" + arguments: + value: 0 + - label: "TH writes 0 to the Options attribute" PICS: LVL.S.A000f command: "writeAttribute" diff --git a/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_1_7.yaml b/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_1_7.yaml index 79f2db2d730064..a155ab61cc3493 100644 --- a/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_1_7.yaml +++ b/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_1_7.yaml @@ -41,6 +41,15 @@ tests: constraints: type: int16u + - label: "Read the global attribute: FeatureMap" + PICS: " !MEDIAPLAYBACK.S.AS && !MEDIAPLAYBACK.S.VS " + command: "readAttribute" + attribute: "FeatureMap" + response: + value: 0 + constraints: + type: bitmap32 + - label: "Read the global attribute: FeatureMap" PICS: MEDIAPLAYBACK.S.AS || MEDIAPLAYBACK.S.VS command: "readAttribute" @@ -48,7 +57,7 @@ tests: response: constraints: type: bitmap32 - minValue: 0 + minValue: 1 maxValue: 3 - label: "Read the global attribute: AttributeList" diff --git a/src/app/tests/suites/certification/Test_TC_MOD_1_3.yaml b/src/app/tests/suites/certification/Test_TC_MOD_1_3.yaml index dedbb274dee5a3..095deb01323ba0 100644 --- a/src/app/tests/suites/certification/Test_TC_MOD_1_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_MOD_1_3.yaml @@ -28,6 +28,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT reads all supported mandatory attributes from TH one at a time in a manufacturer specific order" diff --git a/src/app/tests/suites/certification/Test_TC_MOD_2_1.yaml b/src/app/tests/suites/certification/Test_TC_MOD_2_1.yaml index 28d371377c6821..a4fb3db49bba06 100644 --- a/src/app/tests/suites/certification/Test_TC_MOD_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_MOD_2_1.yaml @@ -70,7 +70,7 @@ tests: verification: | ./chip-tool modeselect read current-mode 1 1 - Verify on TH(chip-tool), current modes provides a list of modes + Verify on TH(chip-tool), current modes provides a mode Record for usage in steps 3. [1649678800.298128][10854:10861] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 4277065073 @@ -98,7 +98,7 @@ tests: verification: | ./chip-tool modeselect read current-mode 1 1 - Verify on TH(chip-tool), current modes provides a list ofmodes + Verify on TH(chip-tool), current modes provides integer provided in step 3a, not the integer from step 2 [1649678800.298128][10854:10861] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 4277065073 diff --git a/src/app/tests/suites/certification/Test_TC_MOD_2_2.yaml b/src/app/tests/suites/certification/Test_TC_MOD_2_2.yaml index e6653073d7a4b0..806b9c05f89290 100644 --- a/src/app/tests/suites/certification/Test_TC_MOD_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_MOD_2_2.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command + disabled: true + - label: "DUT reads the SupportedModes attribute from the TH" PICS: MOD.C.A0002 verification: | diff --git a/src/app/tests/suites/certification/Test_TC_MOD_3_1.yaml b/src/app/tests/suites/certification/Test_TC_MOD_3_1.yaml index f94f8507d782c5..3e4d2cc36f7f1f 100644 --- a/src/app/tests/suites/certification/Test_TC_MOD_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_MOD_3_1.yaml @@ -29,7 +29,7 @@ tests: verification: | ./chip-tool modeselect read on-mode 1 1 - on TH(chip-tool),Verify that the DUT response The attribute is nullable, and null is also acceptable + on TH(chip-tool),Verify that the DUT response is an integer. Record this value for usage in steps 2b. [1649678983.679893][10871:10876] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0005 DataVersion: 4277065073 [1649678983.680002][10871:10876] CHIP:TOO: OnMode: 0 diff --git a/src/app/tests/suites/certification/Test_TC_MOD_3_3.yaml b/src/app/tests/suites/certification/Test_TC_MOD_3_3.yaml index 1dec78d5a0c0c3..63288a4d31c98d 100644 --- a/src/app/tests/suites/certification/Test_TC_MOD_3_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_MOD_3_3.yaml @@ -24,6 +24,34 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + 1.To run this test case build the OTA Provider app to be build in the nRF Environment setup . Follow this step to setup the nRF build environment using container. + https://github.com/project-chip/connectedhomeip/tree/master/examples/all-clusters-app/nrfconnect#using-docker-container-for-setup + + Once the build environmnet is ready , build teh OTA-Provider-App inside the container. Follow the below link to build the OTA-Provider app + https://github.com/project-chip/connectedhomeip/tree/master/examples/ota-provider-app/linux + + 2. Build all-cluster-app in docker or Flash the pre-built folder from the delivered image + + To build maually and flash follow steps explained in: + https://github.com/project-chip/connectedhomeip/tree/master/examples/all-clusters-app/nrfconnect#building + + west build -b nrf52840dk_nrf52840 -- -DCONF_FILE=prj_dfu.conf -DCONFIG_CHIP_LIB_SHELL=y + + + 3.Flash + west flash --erase + + 4.OTA Image needs to build on the docker environment as like in the first step inside the all-clusters-app folder. Refer the below link to build the OTA image with new version. + + https://github.com/project-chip/connectedhomeip/tree/master/examples/ota-requestor-app/linux#ota-requestor-app-linux + + To build the ota image with new version for nRF, use the following command inside the all-clusters-app folder , which will build matter.ota + + west build -b nrf52840dk_nrf52840 -d build2 -- -DCONFIG_CHIP_DEVICE_SOFTWARE_VERSION=2 -DCONF_FILE=prj_dfu.conf -DCONFIG_CHIP_LIB_SHELL=y + disabled: true + - label: "TH reads the StartUpMode attribute from the DUT" PICS: MOD.S.A0004 verification: | @@ -99,7 +127,11 @@ tests: verification: | To perform an OTA update on Thread device follow the cmmds below: - Step-1 : ./chip-ota-provider-app -f ~/chip_repos/connectedhomeip/examples/all-clusters-app/nrfconnect/build2/zephyr/matter.ota + Step-1 : Where we builded OTA provider app execute this cmmd . (In my case I ran connectedhomeip/out/debug ./chip-ota-provider-app -f ) + + ./chip-ota-provider-app -f ~/chip_repos/connectedhomeip/examples/all-clusters-app/nrfconnect/build2/zephyr/matter.ota + + Ran on chip-tool: Step-2: ./chip-tool pairing onnetwork 2 20202021 diff --git a/src/app/tests/suites/certification/Test_TC_MOD_3_4.yaml b/src/app/tests/suites/certification/Test_TC_MOD_3_4.yaml index 56dc6c9fd5aafa..fd5883aecea22f 100644 --- a/src/app/tests/suites/certification/Test_TC_MOD_3_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_MOD_3_4.yaml @@ -26,6 +26,20 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + To Execute the TC-MOD-3.4 test case using reboot in raspi device we followed the below suggested way: + + To run a reboot test case on raspi, run the app with --KVS flag with a file in local directory and pass that file to the command to launch the app. Steps + + + step-1: create a file using touch command , something like touch mytest.txt + step-2: chmod 777 mytest.txt + step-3: launch the app sudo ./out/all-clusters-app/chip-all-clusters-app --KVS ./mytest.txt + + if you launch the app with the above commands and provision the app, even when you reboot the app with 'sudo reboot' , next time you launch the app with 'sudo ./out/all-clusters-app/chip-all-clusters-app --KVS ./mytest.txt' , you can run read/write attribs and commands without reprovisioning the device. + disabled: true + - label: "TH reads the StartUpMode attribute from the DUT" PICS: MOD.S.A0004 verification: | diff --git a/src/app/tests/suites/certification/Test_TC_OCC_2_2.yaml b/src/app/tests/suites/certification/Test_TC_OCC_2_2.yaml index 4be4ecaa5c749f..6fed52808eb096 100644 --- a/src/app/tests/suites/certification/Test_TC_OCC_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_OCC_2_2.yaml @@ -20,10 +20,15 @@ PICS: config: nodeId: 0x12344321 - cluster: "Occupancy Sensing" - endpoint: 1 + cluster: "Basic" + endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "Commission DUT to TH" verification: | verification step to be updated. diff --git a/src/app/tests/suites/certification/Test_TC_OCC_2_4.yaml b/src/app/tests/suites/certification/Test_TC_OCC_2_4.yaml index f70d33351a6031..333db4004d2af8 100644 --- a/src/app/tests/suites/certification/Test_TC_OCC_2_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_OCC_2_4.yaml @@ -26,6 +26,11 @@ config: endpoint: 1 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "Commission DUT to TH" verification: | verification step to be updated. diff --git a/src/app/tests/suites/certification/Test_TC_OCC_3_2.yaml b/src/app/tests/suites/certification/Test_TC_OCC_3_2.yaml deleted file mode 100644 index 6dd4e4dc92422d..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_OCC_3_2.yaml +++ /dev/null @@ -1,88 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default - -name: 3.2.6. [TC-OCC-3.2] Primary functionality with client as DUT - -PICS: - - OCC.C - -config: - nodeId: 0x12344321 - cluster: "Basic" - endpoint: 0 - -tests: - - label: "Commission TH to DUT" - verification: | - verification step to be updated. - disabled: true - - - label: "DUT reads Occupancy attribute from TH" - PICS: OCC.C.A0000 - verification: | - ./chip-tool occupancysensing read occupancy 1 1 - - verify On TH(Reference app) receives the right Read Request Message for the data sent in the above command - - [1657906910.080564][2361:2361] CHIP:IM: Received Read request - [1657906910.080689][2361:2361] CHIP:DMG: ReadRequestMessage = - [1657906910.080758][2361:2361] CHIP:DMG: { - [1657906910.080799][2361:2361] CHIP:DMG: AttributePathIBs = - [1657906910.080846][2361:2361] CHIP:DMG: [ - [1657906910.080907][2361:2361] CHIP:DMG: AttributePathIB = - [1657906910.080965][2361:2361] CHIP:DMG: { - [1657906910.081017][2361:2361] CHIP:DMG: Endpoint = 0x1, - [1657906910.081092][2361:2361] CHIP:DMG: Cluster = 0x406, - [1657906910.081152][2361:2361] CHIP:DMG: Attribute = 0x0000_0000, - [1657906910.081206][2361:2361] CHIP:DMG: } - [1657906910.081279][2361:2361] CHIP:DMG: - [1657906910.081331][2361:2361] CHIP:DMG: ], - [1657906910.081398][2361:2361] CHIP:DMG: - [1657906910.081449][2361:2361] CHIP:DMG: isFabricFiltered = true, - [1657906910.081496][2361:2361] CHIP:DMG: InteractionModelRevision = 1 - [1657906910.081538][2361:2361] CHIP:DMG: }, - disabled: true - - - label: "Operate on TH to change the occupancy status" - PICS: OCC.M.OccupancyChange - verification: | - Logs will be device specific[Manual operation required] - disabled: true - - - label: "after a few seconds, DUT reads Occupancy attribute from TH" - PICS: OCC.C.A0000 - verification: | - ./chip-tool occupancysensing read occupancy 1 1 - - verify On TH(Reference app) receives the right Read Request Message for the data sent in the above command - - [1657906923.314549][2361:2361] CHIP:IM: Received Read request - [1657906923.314735][2361:2361] CHIP:DMG: ReadRequestMessage = - [1657906923.314792][2361:2361] CHIP:DMG: { - [1657906923.314838][2361:2361] CHIP:DMG: AttributePathIBs = - [1657906923.314899][2361:2361] CHIP:DMG: [ - [1657906923.314949][2361:2361] CHIP:DMG: AttributePathIB = - [1657906923.315006][2361:2361] CHIP:DMG: { - [1657906923.315064][2361:2361] CHIP:DMG: Endpoint = 0x1, - [1657906923.315132][2361:2361] CHIP:DMG: Cluster = 0x406, - [1657906923.315199][2361:2361] CHIP:DMG: Attribute = 0x0000_0000, - [1657906923.315258][2361:2361] CHIP:DMG: } - [1657906923.315322][2361:2361] CHIP:DMG: - [1657906923.315380][2361:2361] CHIP:DMG: ], - [1657906923.315438][2361:2361] CHIP:DMG: - [1657906923.315497][2361:2361] CHIP:DMG: isFabricFiltered = true, - [1657906923.315560][2361:2361] CHIP:DMG: InteractionModelRevision = 1 - [1657906923.315609][2361:2361] CHIP:DMG: }, - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_OO_3_1.yaml b/src/app/tests/suites/certification/Test_TC_OO_3_1.yaml index d4affdb99c5eb4..d6af25ba58631c 100644 --- a/src/app/tests/suites/certification/Test_TC_OO_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_OO_3_1.yaml @@ -28,6 +28,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT reads all supported mandatory attributes from TH one at a time in a manufacturer specific order" @@ -81,7 +86,7 @@ tests: ./chip-tool onoff read on-time 1 1 - verify the " on-time-control response" on the TH (all-cluster-app) log: + verify the " on-time response" on the TH (all-cluster-app) log: [...] [1650535552.255428][3678:3678] CHIP:IM: Received Read request diff --git a/src/app/tests/suites/certification/Test_TC_OO_3_2.yaml b/src/app/tests/suites/certification/Test_TC_OO_3_2.yaml index 5730c3100f97ff..9f833109f95aae 100644 --- a/src/app/tests/suites/certification/Test_TC_OO_3_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_OO_3_2.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT issues an Off command to the Test Harness." PICS: OO.C.C00.Tx verification: | diff --git a/src/app/tests/suites/certification/Test_TC_OPCREDS_3_2.yaml b/src/app/tests/suites/certification/Test_TC_OPCREDS_3_2.yaml index 7354d15140d161..e8a8c3d394cc91 100644 --- a/src/app/tests/suites/certification/Test_TC_OPCREDS_3_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_OPCREDS_3_2.yaml @@ -26,6 +26,13 @@ config: endpoint: 0 tests: + - label: + "Precondition: This test case assumes that during Commissioning AddNOC + will be sent with ICACValue" + verification: | + + disabled: true + - label: "Factory Reset DUT" verification: | On both DUT and TH side use the below command @@ -237,8 +244,8 @@ tests: disabled: true - label: - "From the NOCStruct values verify the following: ,NOC matches the NOC - sent to the DUT during commissioning process ,ICAC matches the ICAC + "From the NOCStruct values verify the following: NOC matches the NOC + sent to the DUT during commissioning process ICAC matches the ICAC sent to the DUT during commissioning process from AddNOC in pre-condition" verification: | @@ -274,10 +281,10 @@ tests: - label: "Verify that TH1 is able to read the FabricDescriptorStruct values - ,Verify that Fabrics list does not have any entry as FabricID = + Verify that Fabrics list does not have any entry as FabricID = FabricID2" verification: | - Verify the FabricDescriptorStruct values has no entry og FabricID2 + Verify the FabricDescriptorStruct values has no entry log FabricID2 on TH1 [1657693240.722099][15129:15134] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 908345149 [1657693240.722200][15129:15134] CHIP:TOO: Fabrics: 1 entries @@ -388,7 +395,7 @@ tests: - label: "From the NOCStruct values verify the following: NOC matches the NOC - sent to the DUT during commissioning process,ICAC matches the ICAC + sent to the DUT during commissioning process ICAC matches the ICAC sent to the DUT during commissioning process from AddNOC in pre-condition" verification: | diff --git a/src/app/tests/suites/certification/Test_TC_OPCREDS_3_3.yaml b/src/app/tests/suites/certification/Test_TC_OPCREDS_3_3.yaml index 3486d8b349a92e..010a2adb87b5b6 100644 --- a/src/app/tests/suites/certification/Test_TC_OPCREDS_3_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_OPCREDS_3_3.yaml @@ -45,7 +45,7 @@ tests: - label: "Verify that the DUT sends AttestationRequest Command to TH" PICS: OPCREDS.C.C00.Tx verification: | - Verify that the DUT send AttestationRequest Command to TH(all-clusters-app) + Verify that the DUT send AttestationRequest Command to TH(all-clusters-app) commissioning log [1657778307.595402][8192:8197] CHIP:CTL: Commissioning stage next step: "SendDACCertificateRequest" -> "SendAttestationRequest" [1657778307.595466][8192:8197] CHIP:CTL: Performing next commissioning step "SendAttestationRequest" @@ -288,7 +288,7 @@ tests: - label: "Verify that the DUT sends CertificateChainRequest Command to TH" PICS: OPCREDS.C.C02.Tx verification: | - Verify that the DUT send CertificateChainRequest Command to TH (all-clusters-app) + Verify that the DUT send CertificateChainRequest Command to TH (all-clusters-app) commissioning log [1657778306.864918][8192:8197] CHIP:CTL: Sending Certificate Chain request to 0xffff78000b60 device [1657778306.865059][8192:8197] CHIP:DMG: ICR moving to [AddingComm] @@ -419,7 +419,7 @@ tests: - label: "Verify that the DUT Sends CSRRequest command to TH" PICS: OPCREDS.C.C04.Tx verification: | - Verify that the DUT send CSRRequest command to TH (all-clusters-app) + Verify that the DUT send CSRRequest command to TH (all-clusters-app) commissioning log [1657778307.949847][8192:8197] CHIP:CTL: Sending CSR request to 0xffff78000b60 device [1657778307.949923][8192:8197] CHIP:DMG: ICR moving to [AddingComm] @@ -519,7 +519,7 @@ tests: which contains the Node Operational PublicKey from CSR AttestationSignature" verification: | - Extract the CSRResponse values from TH (all-clusters-app) + Extract the CSRResponse values from TH (all-clusters-app) commissioning log [1657778308.175702][8192:8197] CHIP:EM: Found matching exchange: 40144i, Delegate: 0xaaaaf7819670 [1657778308.175743][8192:8197] CHIP:DMG: ICR moving to [ResponseRe] @@ -563,7 +563,7 @@ tests: - label: "Verify that the DUT sends AddTrustedRootCertificate command to TH" PICS: OPCREDS.C.C0b.Tx verification: | - Verify that the DUT send AddTrustedRootCertificate command to TH (all-clusters-app) + Verify that the DUT send AddTrustedRootCertificate command to TH (all-clusters-app) commissioning log [1657778308.179742][8192:8197] CHIP:CTL: Performing next commissioning step "SendTrustedRootCert" [1657778308.179769][8192:8197] CHIP:CTL: Sending root certificate to the device @@ -683,7 +683,7 @@ tests: - label: "Verify that DUT sends the AddNOC Command to TH" PICS: OPCREDS.C.C06.Tx verification: | - Verify that the DUT send AddNOC command to TH (all-clusters-app) + Verify that the DUT send AddNOC command to TH (all-clusters-app) commissioning log [1657778308.374786][8192:8197] CHIP:CTL: Performing next commissioning step "SendNOC" @@ -920,12 +920,12 @@ tests: disabled: true - label: - "Verify that the size of RootPublicKey is within 65 octstr ,Verify + "Verify that the size of RootPublicKey is within 65 octstr. Verify that the NodeID is the same as the chip-node-id in the NOC sent with - AddNOC Command,Verify that the VendorID is the same as the - AdminVendorID sent with AddNOC Command,Verify that the FabricID is the - same as the matter-fabric-id field from the operational - certificate,Verify that the size of Label has a maximum value of 32 + AddNOC Command. Verify that the VendorID is the same as the + AdminVendorID sent with AddNOC Command. Verify that the FabricID is + the same as the matter-fabric-id field from the operational + certificate. Verify that the size of Label has a maximum value of 32 bytes." verification: | Verify that the following on TH (all-clusters-app) log diff --git a/src/app/tests/suites/certification/Test_TC_PCC_3_1.yaml b/src/app/tests/suites/certification/Test_TC_PCC_3_1.yaml index 1c3774ba792444..7cf72c58584f9b 100644 --- a/src/app/tests/suites/certification/Test_TC_PCC_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_PCC_3_1.yaml @@ -28,6 +28,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT reads all supported mandatory attributes from TH one at a time in a manufacturer specific order" @@ -58,7 +63,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read max-speed 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651148440.471321][2336:2336] CHIP:IM: Received Read request [1651148440.471389][2336:2336] CHIP:DMG: ReadRequestMessage = @@ -82,7 +87,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read max-flow 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651148472.518933][2336:2336] CHIP:IM: Received Read request [1651148472.518993][2336:2336] CHIP:DMG: ReadRequestMessage = @@ -106,7 +111,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read effective-operation-mode 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651570515.206834][9246:9246] CHIP:IM: Received Read request [1651570515.206917][9246:9246] CHIP:DMG: ReadRequestMessage = @@ -128,7 +133,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read effective-control-mode 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651570975.559213][9246:9246] CHIP:IM: Received Read request [1651570975.559268][9246:9246] CHIP:DMG: ReadRequestMessage = @@ -147,7 +152,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read capacity 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651571009.295069][9246:9246] CHIP:IM: Received Read request [1651571009.295158][9246:9246] CHIP:DMG: ReadRequestMessage = @@ -166,7 +171,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read operation-mode 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651571334.617100][9337:9337] CHIP:IM: Received Read request [1651571334.617155][9337:9337] CHIP:DMG: ReadRequestMessage = @@ -192,7 +197,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read min-const-pressure 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651148507.711384][2336:2336] CHIP:IM: Received Read request [1651148507.711452][2336:2336] CHIP:DMG: ReadRequestMessage = @@ -216,7 +221,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read max-const-pressure 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651148537.336390][2336:2336] CHIP:IM: Received Read request [1651148537.336445][2336:2336] CHIP:DMG: ReadRequestMessage = @@ -240,7 +245,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read min-comp-pressure 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651148566.361843][2336:2336] CHIP:IM: Received Read request [1651148566.361897][2336:2336] CHIP:DMG: ReadRequestMessage = @@ -262,7 +267,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read max-comp-pressure 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651148595.417817][2336:2336] CHIP:IM: Received Read request [1651148595.417901][2336:2336] CHIP:DMG: ReadRequestMessage = @@ -286,7 +291,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read min-const-speed 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651148626.823098][2336:2336] CHIP:IM: Received Read request [1651148626.823201][2336:2336] CHIP:DMG: ReadRequestMessage = @@ -308,7 +313,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read max-const-speed 1 1 - Verify in TH all-clusters-app log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651564124.345958][8748:8748] CHIP:IM: Received Read request [1651564124.346033][8748:8748] CHIP:DMG: ReadRequestMessage = @@ -331,7 +336,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read min-const-flow 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651564163.319315][8748:8748] CHIP:IM: Received Read request [1651564163.319399][8748:8748] CHIP:DMG: ReadRequestMessage = @@ -355,7 +360,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read min-const-flow 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651564163.319315][8748:8748] CHIP:IM: Received Read request [1651564163.319399][8748:8748] CHIP:DMG: ReadRequestMessage = @@ -378,7 +383,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read max-const-flow 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651564281.857728][8748:8748] CHIP:IM: Received Read request [1651564281.857784][8748:8748] CHIP:DMG: ReadRequestMessage = @@ -400,7 +405,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read min-const-temp 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651564317.488333][8748:8748] CHIP:IM: Received Read request [1651564317.488417][8748:8748] CHIP:DMG: ReadRequestMessage = @@ -422,7 +427,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read max-const-temp 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651564350.267434][8748:8748] CHIP:IM: Received Read request [1651564350.267489][8748:8748] CHIP:DMG: ReadRequestMessage = @@ -444,7 +449,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read pump-status 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651564415.272861][8748:8748] CHIP:IM: Received Read request [1651564415.272946][8748:8748] CHIP:DMG: ReadRequestMessage = @@ -466,7 +471,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read speed 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651571041.252491][9246:9246] CHIP:IM: Received Read request [1651571041.252548][9246:9246] CHIP:DMG: ReadRequestMessage = @@ -488,7 +493,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read lifetime-running-hours 1 1 - Verify in TH all-clusters-app log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651571194.810592][9337:9337] CHIP:IM: Received Read request [1651571194.810647][9337:9337] CHIP:DMG: ReadRequestMessage = @@ -510,7 +515,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read power 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651571264.121840][9337:9337] CHIP:IM: Received Read request [1651571264.121896][9337:9337] CHIP:DMG: ReadRequestMessage = @@ -532,7 +537,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read lifetime-energy-consumed 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651571293.017448][9337:9337] CHIP:IM: Received Read request [1651571293.017534][9337:9337] CHIP:DMG: ReadRequestMessage = @@ -554,7 +559,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read control-mode 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651571369.365807][9337:9337] CHIP:IM: Received Read request [1651571369.365907][9337:9337] CHIP:DMG: ReadRequestMessage = @@ -583,7 +588,7 @@ tests: ./chip-tool pumpconfigurationandcontrol write operation-mode 0 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the Write Request for the data sent in the above command [1652858465.008652][2107:2107] CHIP:IM: Received Write request [1652858465.008695][2107:2107] CHIP:DMG: IM WH moving to [Initialized] @@ -622,7 +627,7 @@ tests: ./chip-tool pumpconfigurationandcontrol write control-mode 0 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the Write Request for the data sent in the above command [1652858653.083434][2107:2107] CHIP:IM: Received Write request [1652858653.083469][2107:2107] CHIP:DMG: IM WH moving to [Initialized] @@ -655,7 +660,8 @@ tests: ./chip-tool pumpconfigurationandcontrol write lifetime-running-hours 1 1 1 - Verify in DUT as client side Log + + verify on TH all-cluster-app receives the Write Request for the data sent in the above command [1652858777.844427][2107:2107] CHIP:IM: Received Write request [1652858777.844450][2107:2107] CHIP:DMG: IM WH moving to [Initialized] @@ -688,7 +694,8 @@ tests: ./chip-tool pumpconfigurationandcontrol write lifetime-energy-consumed 1 1 1 - Verify in DUT as client side Log + + verify on TH all-cluster-app receives the Write Request for the data sent in the above command [1652858844.149759][2107:2107] CHIP:IM: Received Write request [1652858844.149801][2107:2107] CHIP:DMG: IM WH moving to [Initialized] @@ -730,36 +737,62 @@ tests: ./chip-tool pumpconfigurationandcontrol read attribute-list 1 1 - Verify in DUT as client side Log - [1654247307401] [91803:4011207] CHIP: [TOO] Endpoint: 1 Cluster: 0x0000_0200 Attribute 0x0000_FFFB DataVersion: 3055704159 - [1654247307401] [91803:4011207] CHIP: [TOO] AttributeList: 12 entries - [1654247307401] [91803:4011207] CHIP: [TOO] [1]: 0 - [1654247307401] [91803:4011207] CHIP: [TOO] [2]: 1 - [1654247307401] [91803:4011207] CHIP: [TOO] [3]: 2 - [1654247307401] [91803:4011207] CHIP: [TOO] [4]: 17 - [1654247307401] [91803:4011207] CHIP: [TOO] [5]: 18 - [1654247307401] [91803:4011207] CHIP: [TOO] [6]: 19 - [1654247307401] [91803:4011207] CHIP: [TOO] [7]: 32 - [1654247307401] [91803:4011207] CHIP: [TOO] [8]: 65528 - [1654247307401] [91803:4011207] CHIP: [TOO] [9]: 65529 - [1654247307401] [91803:4011207] CHIP: [TOO] [10]: 65531 - [1654247307401] [91803:4011207] CHIP: [TOO] [11]: 65532 - [1654247307401] [91803:4011207] CHIP: [TOO] [12]: 65533 + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command + [1660745892.540246][3657:3657] CHIP:IM: Received Read request + [1660745892.540323][3657:3657] CHIP:DMG: ReadRequestMessage = + [1660745892.540346][3657:3657] CHIP:DMG: { + [1660745892.540364][3657:3657] CHIP:DMG: AttributePathIBs = + [1660745892.540401][3657:3657] CHIP:DMG: [ + [1660745892.540422][3657:3657] CHIP:DMG: AttributePathIB = + [1660745892.540452][3657:3657] CHIP:DMG: { + [1660745892.540487][3657:3657] CHIP:DMG: Endpoint = 0x1, + [1660745892.540517][3657:3657] CHIP:DMG: Cluster = 0x200, + [1660745892.540556][3657:3657] CHIP:DMG: Attribute = 0x0000_FFFB, + [1660745892.540582][3657:3657] CHIP:DMG: } + [1660745892.540616][3657:3657] CHIP:DMG: + [1660745892.540638][3657:3657] CHIP:DMG: ], + [1660745892.540673][3657:3657] CHIP:DMG: + [1660745892.540696][3657:3657] CHIP:DMG: isFabricFiltered = true, + [1660745892.540726][3657:3657] CHIP:DMG: InteractionModelRevision = 1 + [1660745892.540747][3657:3657] CHIP:DMG: }, + [1660745892.540821][3657:3657] CHIP:DMG: IM RH moving to [GeneratingReports] + [1660745892.540929][3657:3657] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1660745892.540954][3657:3657] CHIP:DMG: Cluster 200, Attribute fffb is dirty + [1660745892.540982][3657:3657] CHIP:DMG: Reading attribute: Cluster=0x0000_0200 Endpoint=1 AttributeId=0x0000_FFFB (expanded=0) ./chip-tool pumpconfigurationandcontrol read feature-map 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command - [1656478569086] [49565:5734437] CHIP: [TOO] Endpoint: 1 Cluster: 0x0000_0200 Attribute 0x0000_FFFC DataVersion: 1816685251 - [1656478569086] [49565:5734437] CHIP: [TOO] FeatureMap: 0 + [1660745929.334567][3657:3657] CHIP:IM: Received Read request + [1660745929.334641][3657:3657] CHIP:DMG: ReadRequestMessage = + [1660745929.334677][3657:3657] CHIP:DMG: { + [1660745929.334696][3657:3657] CHIP:DMG: AttributePathIBs = + [1660745929.334728][3657:3657] CHIP:DMG: [ + [1660745929.334750][3657:3657] CHIP:DMG: AttributePathIB = + [1660745929.334778][3657:3657] CHIP:DMG: { + [1660745929.334814][3657:3657] CHIP:DMG: Endpoint = 0x1, + [1660745929.334853][3657:3657] CHIP:DMG: Cluster = 0x200, + [1660745929.334884][3657:3657] CHIP:DMG: Attribute = 0x0000_FFFC, + [1660745929.334920][3657:3657] CHIP:DMG: } + [1660745929.334947][3657:3657] CHIP:DMG: + [1660745929.334978][3657:3657] CHIP:DMG: ], + [1660745929.335006][3657:3657] CHIP:DMG: + [1660745929.335037][3657:3657] CHIP:DMG: isFabricFiltered = true, + [1660745929.335059][3657:3657] CHIP:DMG: InteractionModelRevision = 1 + [1660745929.335079][3657:3657] CHIP:DMG: }, + [1660745929.335155][3657:3657] CHIP:DMG: IM RH moving to [GeneratingReports] + [1660745929.335256][3657:3657] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1660745929.335291][3657:3657] CHIP:DMG: Cluster 200, Attribute fffc is dirty + [1660745929.335311][3657:3657] CHIP:DMG: Reading attribute: Cluster=0x0000_0200 Endpoint=1 AttributeId=0x0000_FFFC (expanded=0) ./chip-tool pumpconfigurationandcontrol read max-pressure 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651148412.273866][2336:2336] CHIP:IM: Received Read request [1651148412.273922][2336:2336] CHIP:DMG: ReadRequestMessage = @@ -782,7 +815,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read max-speed 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651148440.471321][2336:2336] CHIP:IM: Received Read request [1651148440.471389][2336:2336] CHIP:DMG: ReadRequestMessage = @@ -806,7 +839,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read max-flow 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651148472.518933][2336:2336] CHIP:IM: Received Read request [1651148472.518993][2336:2336] CHIP:DMG: ReadRequestMessage = @@ -830,7 +863,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read effective-operation-mode 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651570515.206834][9246:9246] CHIP:IM: Received Read request @@ -853,7 +886,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read effective-control-mode 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651570975.559213][9246:9246] CHIP:IM: Received Read request [1651570975.559268][9246:9246] CHIP:DMG: ReadRequestMessage = @@ -872,7 +905,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read capacity 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651571009.295069][9246:9246] CHIP:IM: Received Read request [1651571009.295158][9246:9246] CHIP:DMG: ReadRequestMessage = @@ -891,7 +924,7 @@ tests: ./chip-tool pumpconfigurationandcontrol read operation-mode 1 1 - Verify in DUT as client side Log + verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command [1651571334.617100][9337:9337] CHIP:IM: Received Read request [1651571334.617155][9337:9337] CHIP:DMG: ReadRequestMessage = diff --git a/src/app/tests/suites/certification/Test_TC_PRS_3_1.yaml b/src/app/tests/suites/certification/Test_TC_PRS_3_1.yaml index ea7108c7a0d7a0..e2afec23eb8851 100644 --- a/src/app/tests/suites/certification/Test_TC_PRS_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_PRS_3_1.yaml @@ -28,6 +28,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT reads all supported mandatory attributes from TH one at a time in a manufacturer specific order" diff --git a/src/app/tests/suites/certification/Test_TC_PSCFG_2_2.yaml b/src/app/tests/suites/certification/Test_TC_PSCFG_2_2.yaml index 0cd5f3da210b15..3a4e367bb7a47d 100644 --- a/src/app/tests/suites/certification/Test_TC_PSCFG_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_PSCFG_2_2.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Preconditions:" + verification: | + This test case is verified after the device is provisioned. Pls provision device first, Pass appropriate nodeID in the below command + disabled: true + - label: "Commission DUT to TH" verification: | verification step to be updated. @@ -48,26 +53,26 @@ tests: "TH reads the Order attribute from Power Source Cluster at Enpoint[eNr] of the DUT" verification: | - ./chip-tool powersource read order 1 1 + ./chip-tool powersource read order 1 2 verify on TH(chip-tool) that order attribute succeeds with no error.The order value is the same or greater than the order value of the previous iteration - [...] - [1653564242.694964][36231:36236] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_002F Attribute 0x0000_0001 DataVersion: 4212858705 - [1653564242.695038][36231:36236] CHIP:TOO: Order: 2 + [1659879820.566144][2615:2620] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_002F Attribute 0x0000_0001 DataVersion: 1842182672 + [1659879820.569572][2615:2620] CHIP:TOO: Order: 1 - ./chip-tool powersource read order 1 2 + + ./chip-tool powersource read order 1 1 verify on TH(chip-tool) that order attribute succeeds with no error.The order value is the same or greater than the order value of the previous iteration - [1659879820.566144][2615:2620] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_002F Attribute 0x0000_0001 DataVersion: 1842182672 - [1659879820.569572][2615:2620] CHIP:TOO: Order: 1 + [...] + [1653564242.694964][36231:36236] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_002F Attribute 0x0000_0001 DataVersion: 4212858705 + [1653564242.695038][36231:36236] CHIP:TOO: Order: 2 - ./chip-tool powersource read order 1 0 + ./chip-tool powersource read order 1 0 verify on TH(chip-tool) that order attribute succeeds with no error.The order value is the same or greater than the order value of the previous iteration [1659879944.863570][2633:2638] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_002F Attribute 0x0000_0001 DataVersion: 1479870496 [1659879944.863664][2633:2638] CHIP:TOO: Order: 3 - [1659879944.863854][2633:2638] CHIP:EM: Sending Standalone Ack for MessageCounter:4546692 on exchange 20518i disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_PS_1_1.yaml b/src/app/tests/suites/certification/Test_TC_PS_1_1.yaml index a034e954f914ec..0f419310c547c4 100644 --- a/src/app/tests/suites/certification/Test_TC_PS_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_PS_1_1.yaml @@ -40,7 +40,6 @@ tests: type: int16u - label: "Read the global attribute: FeatureMap" - PICS: PS.S.F00 || PS.S.F01 || PS.S.F02 || PS.S.F03 command: "readAttribute" attribute: "FeatureMap" response: diff --git a/src/app/tests/suites/certification/Test_TC_RH_3_1.yaml b/src/app/tests/suites/certification/Test_TC_RH_3_1.yaml index dca4b6443e6364..4f33bf4e31ab3f 100644 --- a/src/app/tests/suites/certification/Test_TC_RH_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_RH_3_1.yaml @@ -28,6 +28,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT reads all supported mandatory attributes from TH one at a time in a manufacturer specific order" diff --git a/src/app/tests/suites/certification/Test_TC_SC_4_1.yaml b/src/app/tests/suites/certification/Test_TC_SC_4_1.yaml index 3888005a6771b2..e92cba67a2088d 100644 --- a/src/app/tests/suites/certification/Test_TC_SC_4_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_SC_4_1.yaml @@ -28,6 +28,7 @@ tests: "DUT is Commissioned and put in Commissioning Mode using Open Basic Commissioning Window command and starts advertising Commissionable Node Discovery service using DNS-SD" + PICS: CADMIN.S.C01.Rsp verification: | ./chip-tool administratorcommissioning open-basic-commissioning-window 200 1 0 --timedInteractionTimeoutMs 1000 @@ -76,6 +77,7 @@ tests: MCORE.SC.DT_KEY&& MCORE.SC.DN_KEY && MCORE.SC.RI_KEY && MCORE.SC.PH_KEY && MCORE.SC.PI_KEY verification: | + Run the below commands within the mentioned time interval used in open-commissioning-window in step-1. Run the below avahi browse command in the TH terminal avahi-browse -rt _matterc._udp @@ -96,7 +98,7 @@ tests: - Service Domain 422F10CDC290A406.local + If we use Thread setup, then the Service Domain will be 422F10CDC290A406.local verify CM flag is 1 to look for subtypes, on the raspi run $ avahi-browse -p _services._dns-sd._udp | grep _matterc @@ -109,9 +111,10 @@ tests: disabled: true - label: - "DUT is rebooted and Commissioned again, then put in Commissioning - Mode using Open Basic Commissioning Window command, starting - advertising Commissionable Node Discovery service using DNS- SD" + "DUT is rebooted, then put in Commissioning Mode using Open Basic + Commissioning Window command, starting advertising Commissionable Node + Discovery service using DNS-SD" + PICS: CADMIN.S.C01.Rsp verification: | Reboot the device and commission the DUT again. Open the commissioning window using the below command in the TH (Chip-tool) terminal @@ -172,7 +175,7 @@ tests: + eth0 IPv6 19DDF06C3B5DD0C8 _matterc._udp local = veth721e1d9 IPv6 19DDF06C3B5DD0C8 _matterc._udp local - hostname = [E45F0149AE290000.local] + hostname = [E45F0149AE290000.local] address = [fe80::28e0:95ff:fed9:3085] port = [5540] txt = ["PI=" "PH=36" "CM=1" "D=3840" "T=1" "SAI=300" "SII=5000" "VP=65521+32769"] @@ -198,9 +201,15 @@ tests: +;eth0;IPv6;_CM;_sub._matterc._udp;local disabled: true + - label: "Wait for OBCW timeout to expire" + verification: | + Wait until open-basic-commissioning-window time to expire. + disabled: true + - label: "DUT is Commissioned and instructed to enter in commissioning mode using Open Commissioning Window command" + PICS: CADMIN.S.C00.Rsp verification: | Run the below open-commissioning-window in TH Terminal @@ -277,7 +286,7 @@ tests: - label: "Wait for OCW timeout to expire" verification: | - Wait until open-commissioning-window time to expire. (In our example above its 200 sec) + Wait until open-commissioning-window time to expire. disabled: true - label: "If (MCORE.SC.EXTENDED_DISCOVERY ) enable Extended Discovery" @@ -289,7 +298,8 @@ tests: Reference Raspberrypi device is not supporting extended discovery. disabled: true - - label: "If (PICS_EXTENDED_DISCOVERY) check DNS-SD subtypes used by DUT" + - label: + "If (MCORE.SC.EXTENDED_DISCOVERY ) check DNS-SD subtypes used by DUT" PICS: MCORE.SC.EXTENDED_DISCOVERY && MCORE.COM.WIFI && MCORE.COM.ETH && MCORE.COM.THR && MCORE.SC.VENDOR_SUBTYPE && MCORE.SC.DEVTYPE_SUBTYPE diff --git a/src/app/tests/suites/certification/Test_TC_SC_4_10.yaml b/src/app/tests/suites/certification/Test_TC_SC_4_10.yaml index 78cc1e21346212..5398b18c3430ec 100644 --- a/src/app/tests/suites/certification/Test_TC_SC_4_10.yaml +++ b/src/app/tests/suites/certification/Test_TC_SC_4_10.yaml @@ -28,13 +28,13 @@ config: tests: - label: "DUT is instructed to advertise its service" verification: | - verification step to be updated. + 1. Provision the DUT by TH (Chip-tool) disabled: true - label: "TH scans for DNS-SD advertising" verification: | avahi-browse -rt _matter._tcp - Verify on the TH Log: + Verify on the TH(Chip-tool) Log: + eth0 IPv6 3A235FF3FA2DAC10-0000000000000055 _matter._tcp local + eth0 IPv4 3A235FF3FA2DAC10-0000000000000055 _matter._tcp local = eth0 IPv4 3A235FF3FA2DAC10-0000000000000055 _matter._tcp local @@ -48,211 +48,3 @@ tests: port = [5540] txt = ["T=0" "SAI=300" "SII=5000"] disabled: true - - - label: "TH writes ACL entry by setting AuthMode as Group to DUT" - verification: | - ./chip-tool accesscontrol write acl "[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null },{"fabricIndex": 1, "privilege": 4, "authMode": 3, "subjects": [1], "targets": null }]" 1 0 - - Verify success response on the TH Log: - - [1652330385.328196][3240:3245] CHIP:DMG: StatusIB = - [1652330385.328229][3240:3245] CHIP:DMG: { - [1652330385.328264][3240:3245] CHIP:DMG: status = 0x00 (SUCCESS), - [1652330385.328298][3240:3245] CHIP:DMG: }, - disabled: true - - - label: - "Admin generates fabric-unique GroupID, GroupName, random key, - EpochKey0 and GroupKeySetID. Admin sets GroupKeySecurityPolicy = - TrustFirst (1) GroupKeyMulticastPolicy = PerGroupID (0) - EpochStartTime0 = 0" - verification: | - As Admin generates it is not required to verify - disabled: true - - - label: - "Admin sends KeySetWrite command to GroupKeyManagement cluster to DUT - on PIXIT.G.ENDPOINT" - verification: | - ./chip-tool groupkeymanagement key-set-write "{"groupKeySetID": 42, - "groupKeySecurityPolicy": 0, "epochKey0": - "d0d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime0": 2220000,"epochKey1": - "d1d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime1": 2220001,"epochKey2": - "d2d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime2": 2220002 }" 1 0 - - Verify success response on the TH Log: - - [1650610345.847233][2626:2631] CHIP:DMG: - [1650610345.847274][2626:2631] CHIP:DMG: StatusIB = - [1650610345.847317][2626:2631] CHIP:DMG: { - [1650610345.847383][2626:2631] CHIP:DMG: status = 0x00 (SUCCESS), - [1650610345.847429][2626:2631] CHIP:DMG: }, - [1650610345.847477][2626:2631] CHIP:DMG: - disabled: true - - - label: - "Admin binds GroupId with GroupKeySetID in the GroupKeyMap attribute - list on GroupKeyManagement cluster" - verification: | - ./chip-tool groupkeymanagement write group-key-map "[{"groupId": 1, "groupKeySetID": 42, "fabricIndex": 1}]" 1 0 - - Verify success response on the TH Log: - - [1652352019.875893][2552:2557] CHIP:DMG: WriteResponseMessage = - [1652352019.875922][2552:2557] CHIP:DMG: { - [1652352019.875946][2552:2557] CHIP:DMG: AttributeStatusIBs = - [1652352019.875981][2552:2557] CHIP:DMG: [ - [1652352019.876008][2552:2557] CHIP:DMG: AttributeStatusIB = - [1652352019.876041][2552:2557] CHIP:DMG: { - [1652352019.876070][2552:2557] CHIP:DMG: AttributePathIB = - [1652352019.876104][2552:2557] CHIP:DMG: { - [1652352019.876143][2552:2557] CHIP:DMG: Endpoint = 0x0, - [1652352019.876183][2552:2557] CHIP:DMG: Cluster = 0x3f, - [1652352019.876225][2552:2557] CHIP:DMG: Attribute = 0x0000_0000, - [1652352019.876263][2552:2557] CHIP:DMG: } - [1652352019.876303][2552:2557] CHIP:DMG: - [1652352019.876337][2552:2557] CHIP:DMG: StatusIB = - [1652352019.876375][2552:2557] CHIP:DMG: { - [1652352019.876414][2552:2557] CHIP:DMG: status = 0x00 (SUCCESS), - [1652352019.876450][2552:2557] CHIP:DMG: }, - [1652352019.876489][2552:2557] CHIP:DMG: - [1652352019.876519][2552:2557] CHIP:DMG: }, - [1652352019.876562][2552:2557] CHIP:DMG: - [1652352019.876590][2552:2557] CHIP:DMG: AttributeStatusIB = - [1652352019.876622][2552:2557] CHIP:DMG: { - [1652352019.876652][2552:2557] CHIP:DMG: AttributePathIB = - [1652352019.876690][2552:2557] CHIP:DMG: { - [1652352019.876728][2552:2557] CHIP:DMG: Endpoint = 0x0, - [1652352019.876768][2552:2557] CHIP:DMG: Cluster = 0x3f, - [1652352019.876809][2552:2557] CHIP:DMG: Attribute = 0x0000_0000, - [1652352019.876849][2552:2557] CHIP:DMG: ListIndex = Null, - [1652352019.876885][2552:2557] CHIP:DMG: } - [1652352019.876923][2552:2557] CHIP:DMG: - [1652352019.876961][2552:2557] CHIP:DMG: StatusIB = - [1652352019.876995][2552:2557] CHIP:DMG: { - [1652352019.877029][2552:2557] CHIP:DMG: status = 0x00 (SUCCESS), - [1652352019.877077][2552:2557] CHIP:DMG: }, - [1652352019.877132][2552:2557] CHIP:DMG: - [1652352019.877179][2552:2557] CHIP:DMG: }, - [1652352019.877224][2552:2557] CHIP:DMG: - [1652352019.877262][2552:2557] CHIP:DMG: ], - [1652352019.877339][2552:2557] CHIP:DMG: - [1652352019.877381][2552:2557] CHIP:DMG: InteractionModelRevision = 1 - [1652352019.877419][2552:2557] CHIP:DMG: } - disabled: true - - - label: - "Admin sends AddGroup Command to DUT with the GroupID set by Admin on - PIXIT.SC.ENDPOINT" - verification: | - ./chip-tool groups add-group 0x0001 grp1 1 1 - - Verify AddGroupResponse on the TH Log: - - [1651218084.427102][2526:2531] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0004 Command 0x0000_0000 - [1651218084.427203][2526:2531] CHIP:TOO: AddGroupResponse: { - [1651218084.427241][2526:2531] CHIP:TOO: status: 0 - [1651218084.427264][2526:2531] CHIP:TOO: groupId: 1 - [1651218084.427314][2526:2531] CHIP:TOO: } - disabled: true - - - label: - "Admin sends ViewGroup command with the GroupID to the Group cluster - on the DUT on PIXIT.SC.ENDPOINT" - verification: | - ./chip-tool groups view-group 0x0001 1 1 - - Verify ViewGroupResponse on the TH Log: - - [1651218576.149152][2635:2640] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0004 Command 0x0000_0001 - [1651218576.149231][2635:2640] CHIP:TOO: ViewGroupResponse: { - [1651218576.149265][2635:2640] CHIP:TOO: status: 0 - [1651218576.149289][2635:2640] CHIP:TOO: groupId: 1 - [1651218576.149311][2635:2640] CHIP:TOO: groupName: grp1 - [1651218576.149335][2635:2640] CHIP:TOO: } - disabled: true - - - label: "Admin sends KeySetRead Command to DUT" - verification: | - ./chip-tool groupkeymanagement key-set-read 42 1 0 - - Verify KeySetReadResponse on the TH Log: - - [1650610759.578043][2739:2744] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003F Command=0x0000_0002 - [1650610759.578099][2739:2744] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003F Command 0x0000_0002 - [1650610759.578220][2739:2744] CHIP:TOO: KeySetReadResponse: { - [1650610759.578251][2739:2744] CHIP:TOO: groupKeySet: { - [1650610759.578291][2739:2744] CHIP:TOO: GroupKeySetID: 42 - [1650610759.578334][2739:2744] CHIP:TOO: GroupKeySecurityPolicy: 0 - [1650610759.578363][2739:2744] CHIP:TOO: EpochKey0: null - [1650610759.578391][2739:2744] CHIP:TOO: EpochStartTime0: 2220000 - [1650610759.578418][2739:2744] CHIP:TOO: EpochKey1: null - [1650610759.578445][2739:2744] CHIP:TOO: EpochStartTime1: 2220001 - [1650610759.578472][2739:2744] CHIP:TOO: EpochKey2: null - [1650610759.578498][2739:2744] CHIP:TOO: EpochStartTime2: 2220002 - [1650610759.578527][2739:2744] CHIP:TOO: } - [1650610759.578553][2739:2744] CHIP:TOO: } - disabled: true - - - label: - "TH reads GroupKeyMap Attribute from the GroupKeyManagement cluster - from DUT" - verification: | - ./chip-tool groupkeymanagement read group-key-map 1 0 - - Verify GroupKeyMapStruct on the TH Log: - - 1652429573.936605][2883:2888] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003F Attribute 0x0000_0000 DataVersion: 75110822 - [1652429573.936744][2883:2888] CHIP:TOO: GroupKeyMap: 1 entries - [1652429573.936819][2883:2888] CHIP:TOO: [1]: { - [1652429573.936860][2883:2888] CHIP:TOO: GroupId: 1 - [1652429573.936896][2883:2888] CHIP:TOO: GroupKeySetID: 42 - [1652429573.936932][2883:2888] CHIP:TOO: FabricIndex: 1 - [1652429573.936969][2883:2888] CHIP:TOO: } - disabled: true - - - label: - "TH reads GroupTable attribute from GroupKeyManagement cluster on DUT." - verification: | - ./chip-tool groupkeymanagement read group-table 1 0 - - Verify GroupTable on the TH Log: - - [1655965817.917300][3012:3017] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003F Attribute 0x0000_0001 DataVersion: 1208492408 - [1655965817.917408][3012:3017] CHIP:TOO: GroupTable: 1 entries - [1655965817.917506][3012:3017] CHIP:TOO: [1]: { - [1655965817.917559][3012:3017] CHIP:TOO: GroupId: 1 - [1655965817.917600][3012:3017] CHIP:TOO: Endpoints: 2 entries - [1655965817.917642][3012:3017] CHIP:TOO: [1]: 0 - [1655965817.917680][3012:3017] CHIP:TOO: [2]: 1 - [1655965817.917718][3012:3017] CHIP:TOO: GroupName: grp1 - [1655965817.917752][3012:3017] CHIP:TOO: FabricIndex: 1 - [1655965817.917784][3012:3017] CHIP:TOO: } - disabled: true - - - label: - "Configure the TH for sending Group message Add the group that was - created in step 3 to the client side Add the keysets with the - GroupKeySetID from the step 2 for the client side Bind the - GroupKeySetID with the GroupID created View the GroupID, GroupName and - GroupKeySetID which is binded for sending the Group message" - verification: | - ./chip-tool groupsettings add-group grp1 0x0001 - - ./chip-tool groupsettings add-keysets 0x0042 0 0x000000000021dfe0 hex:d0d1d2d3d4d5d6d7d8d9dadbdcdddedf - - ./chip-tool groupsettings bind-keyset 0x0001 0x0042 - - ./chip-tool groupsettings show-groups - - Verify groups on the TH Log: - - +-------------------------------------------------------------------------------------+ - | Available Groups : | - +-------------------------------------------------------------------------------------+ - | Group Id | KeySet Id | Group Name | - | 0x101 0x1a1 Group #1 | - | 0x102 0x1a2 Group #2 | - | 0x1 0x42 grp1 | - +-------------------------------------------------------------------------------------+ - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_SC_4_3.yaml b/src/app/tests/suites/certification/Test_TC_SC_4_3.yaml index e0f8cda7051c3b..c137d70c6a29e7 100644 --- a/src/app/tests/suites/certification/Test_TC_SC_4_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_SC_4_3.yaml @@ -13,7 +13,7 @@ # limitations under the License. # Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default -name: 3.4.3. [TC-SC-4.3] Operational Discovery - Node +name: 15.4.3. [TC-SC-4.3] Discovery [DUT as Commissionee] PICS: - MCORE.ROLE.COMMISSIONEE @@ -24,9 +24,11 @@ config: endpoint: 0 tests: - - label: "TH is instructed to start advertising a service using DNS-SD" + - label: + "DUT is commissioned to TH and DUT is instructed to advertise its + operational service (_matter._tcp)." verification: | - verification step to be updated. + 1. Provision the DUT by TH (Chip-tool) disabled: true - label: "Scan for DNS-SD advertising" @@ -35,7 +37,7 @@ tests: MCORE.SC.SII_OP_DISCOVERY_KEY && MCORE.SC.SAI_OP_DISCOVERY_KEY && MCORE.SC.T_KEY verification: | - ubuntu@ubuntu:~$ avahi-browse -rt _matter._tcp + avahi-browse -rt _matter._tcp Verify on the TH Log: @@ -46,49 +48,3 @@ tests: port = [5540] txt = ["T=1" "SAI=300" "SII=5000"] disabled: true - - - label: - "TH is instructed to start advertising an operational service using - DNS-SD with non-standard TXT record keys" - verification: | - Run the publish service command on TH: - - avahi-publish-service --subtype=_S3._sub._matter._tcp --subtype=_L840._sub._matter._tcp DD200C20D25AE5F7 --subtype=_CM._sub._matter._tcp _matter._tcp 11111 D=840 CM=2 INVALID_TEST=40 - disabled: true - - - label: - "DUT is rebooted and Commissioned again, then put in Commissioning - Mode using Open Basic Commissioning Window command, DUT is instructed - to advertise its service with the modified TXT record." - verification: | - ./chip-tool administratorcommissioning open-basic-commissioning-window 200 1 0 --timedInteractionTimeoutMs 1000 - - verify on TH (Chip-tool) logs: - - [1650873075.234374][7964:7969] CHIP:DMG: EndpointId = 0x0, - [1650873075.234449][7964:7969] CHIP:DMG: ClusterId = 0x3c, - [1650873075.234542][7964:7969] CHIP:DMG: CommandId = 0x1, - [1650873075.234613][7964:7969] CHIP:DMG: }, - [1650873075.234693][7964:7969] CHIP:DMG: - [1650873075.234758][7964:7969] CHIP:DMG: StatusIB = - [1650873075.234829][7964:7969] CHIP:DMG: { - [1650873075.234909][7964:7969] CHIP:DMG: status = 0x00 (SUCCESS), - [1650873075.234984][7964:7969] CHIP:DMG: }, - disabled: true - - - label: "Scan for DNS-SD advertising" - PICS: - MCORE.COM.WIFI && MCORE.COM.ETH && MCORE.COM.THR && - MCORE.SC.SII_OP_DISCOVERY_KEY && MCORE.SC.SAI_OP_DISCOVERY_KEY && - MCORE.SC.T_KEY - verification: | - ubuntu@ubuntu:~$ avahi-browse -rt _matter._tcp - Verify on the TH Log: - - + eth0 IPv6 B1605B84E886EDCF-0000000000000258 _matter._tcp local - = eth0 IPv6 21F41C9933CAAF62-000000000000003C _matter._tcp local - hostname = [E45F010EBE440000.local] - address = [fe80::e65f:1ff:fe0e:be44] - port = [5540] - txt = ["T=1" "SAI=300" "SII=5000"] - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_SC_4_4.yaml b/src/app/tests/suites/certification/Test_TC_SC_4_4.yaml index aa9d9da7d7d8da..0703e6c8f9b512 100644 --- a/src/app/tests/suites/certification/Test_TC_SC_4_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_SC_4_4.yaml @@ -13,7 +13,7 @@ # limitations under the License. # Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default -name: 3.4.4. [TC-SC-4.4] Operational Discovery - Controller [DUT - Controller] +name: 15.4.4. [TC-SC-4.4] Discovery [DUT as Controller] PICS: - PICS_MCORE_ROLE_CONTROLLER @@ -24,28 +24,89 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as controller test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "TH starts commissioning process with DUT" verification: | - verification step to be updated. + 1. Provision the DUT by TH (Chip-tool) disabled: true - - label: "DUT reads nodelabel attribute from TH" - PICS: BINFO.C.A0005 + - label: "DUT reads Vendor Id attribute from TH" + PICS: BINFO.C.A0002 verification: | - verification step to be updated. + On TH, Verify that TH read and shows Vendor Id value + ./chip-tool basic read vendor-id 1 0 + + [1660776352.802689][3357:3357] CHIP:DMG: + [1660776352.802776][3357:3357] CHIP:DMG: ReportDataMessage = + [1660776352.802807][3357:3357] CHIP:DMG: { + [1660776352.802832][3357:3357] CHIP:DMG: AttributeReportIBs = + [1660776352.802868][3357:3357] CHIP:DMG: [ + [1660776352.802896][3357:3357] CHIP:DMG: AttributeReportIB = + [1660776352.802933][3357:3357] CHIP:DMG: { + [1660776352.802963][3357:3357] CHIP:DMG: AttributeDataIB = + [1660776352.802999][3357:3357] CHIP:DMG: { + [1660776352.803040][3357:3357] CHIP:DMG: DataVersion = 0x5c6f4557, + [1660776352.803080][3357:3357] CHIP:DMG: AttributePathIB = + [1660776352.803118][3357:3357] CHIP:DMG: { + [1660776352.803157][3357:3357] CHIP:DMG: Endpoint = 0x0, + [1660776352.803198][3357:3357] CHIP:DMG: Cluster = 0x28, + [1660776352.803241][3357:3357] CHIP:DMG: Attribute = 0x0000_0002, + [1660776352.803279][3357:3357] CHIP:DMG: } + [1660776352.803319][3357:3357] CHIP:DMG: + [1660776352.803360][3357:3357] CHIP:DMG: Data = 65521, + [1660776352.803396][3357:3357] CHIP:DMG: }, + [1660776352.803434][3357:3357] CHIP:DMG: + [1660776352.803468][3357:3357] CHIP:DMG: }, + [1660776352.803503][3357:3357] CHIP:DMG: + [1660776352.803530][3357:3357] CHIP:DMG: ], + [1660776352.803571][3357:3357] CHIP:DMG: + [1660776352.803600][3357:3357] CHIP:DMG: SuppressResponse = true, + [1660776352.803628][3357:3357] CHIP:DMG: InteractionModelRevision = 1 + [1660776352.803655][3357:3357] CHIP:DMG: } + [1660776352.803699][3357:3357] CHIP:DMG: disabled: true - label: "Change the IP address of TH by any means within the same network" verification: | - 1. Take two routers connected to the same ISP as input. - 2. Execute step 1 to step 5 using Router1 Configuration. - 3. Once step 1 to step 5 are executed in Router1 switch TH and DUT to Router2. - 4. Execute step 1 to step 5 using Router2 Configuration. - 5. Check the IP so that the Routers(Router1 and Router2) will have different IPs to Raspi. + Connect the raspi running the TH to another router which is on the same network. Make sure that the DUT and TH are on the same network and can ping to each other. Observe that the TH gets a new IP address. Perform Step 4 disabled: true - - label: "DUT reads nodelabel attribute from TH" - PICS: BINFO.C.A0005 + - label: "DUT reads Vendor Id attribute from TH" + PICS: BINFO.C.A0002 verification: | - verification step to be updated. + On TH, Verify that TH read and shows Vendor Id value + ./chip-tool basic read vendor-id 1 0 + + [1660776352.802689][3357:3357] CHIP:DMG: + [1660776352.802776][3357:3357] CHIP:DMG: ReportDataMessage = + [1660776352.802807][3357:3357] CHIP:DMG: { + [1660776352.802832][3357:3357] CHIP:DMG: AttributeReportIBs = + [1660776352.802868][3357:3357] CHIP:DMG: [ + [1660776352.802896][3357:3357] CHIP:DMG: AttributeReportIB = + [1660776352.802933][3357:3357] CHIP:DMG: { + [1660776352.802963][3357:3357] CHIP:DMG: AttributeDataIB = + [1660776352.802999][3357:3357] CHIP:DMG: { + [1660776352.803040][3357:3357] CHIP:DMG: DataVersion = 0x5c6f4557, + [1660776352.803080][3357:3357] CHIP:DMG: AttributePathIB = + [1660776352.803118][3357:3357] CHIP:DMG: { + [1660776352.803157][3357:3357] CHIP:DMG: Endpoint = 0x0, + [1660776352.803198][3357:3357] CHIP:DMG: Cluster = 0x28, + [1660776352.803241][3357:3357] CHIP:DMG: Attribute = 0x0000_0002, + [1660776352.803279][3357:3357] CHIP:DMG: } + [1660776352.803319][3357:3357] CHIP:DMG: + [1660776352.803360][3357:3357] CHIP:DMG: Data = 65521, + [1660776352.803396][3357:3357] CHIP:DMG: }, + [1660776352.803434][3357:3357] CHIP:DMG: + [1660776352.803468][3357:3357] CHIP:DMG: }, + [1660776352.803503][3357:3357] CHIP:DMG: + [1660776352.803530][3357:3357] CHIP:DMG: ], + [1660776352.803571][3357:3357] CHIP:DMG: + [1660776352.803600][3357:3357] CHIP:DMG: SuppressResponse = true, + [1660776352.803628][3357:3357] CHIP:DMG: InteractionModelRevision = 1 + [1660776352.803655][3357:3357] CHIP:DMG: } + [1660776352.803699][3357:3357] CHIP:DMG: disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_SC_4_6.yaml b/src/app/tests/suites/certification/Test_TC_SC_4_6.yaml index 5f28f3d5beaeaa..0062e1c7f3e949 100644 --- a/src/app/tests/suites/certification/Test_TC_SC_4_6.yaml +++ b/src/app/tests/suites/certification/Test_TC_SC_4_6.yaml @@ -26,6 +26,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT is instructed to start advertising its presence as a commissioner in the network" @@ -56,8 +61,7 @@ tests: - to look for subtypes, on the raspi run $ avahi-browse -p _services._dns-sd._udp - | grep _matterd + to look for subtypes, on the raspi run $ avahi-browse -p _services._dns-sd._udp | grep _matterd +;eth0;IPv6;_CM;_sub._matterd._udp;local +;eth0;IPv6;_L3840;_sub._matterd._udp;local diff --git a/src/app/tests/suites/certification/Test_TC_SC_4_7.yaml b/src/app/tests/suites/certification/Test_TC_SC_4_7.yaml index f5cf0c10623f3a..9e6781ff6b32a8 100644 --- a/src/app/tests/suites/certification/Test_TC_SC_4_7.yaml +++ b/src/app/tests/suites/certification/Test_TC_SC_4_7.yaml @@ -13,7 +13,7 @@ # limitations under the License. # Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default -name: 3.4.7. [TC-SC-4.7] Commissioner Discovery - Commissionee +name: 15.4.7. [TC-SC-4.7] Commissioner Discovery [DUT as Commissionee] PICS: - MCORE.ROLE.COMMISSIONEE @@ -34,7 +34,7 @@ tests: - label: "Scan for DNS-SD commissioner advertisements from TH" PICS: MCORE.SC.DEVTYPE_SUBTYPE && MCORE.SC.VP_KEY && MCORE.SC.DT_KEY && - MCORE.SC.DN_KEY && + MCORE.SC.DN_KEY verification: | if DUT supports discovering UDC, DUT should be able to scan the TV-app @@ -49,20 +49,20 @@ tests: address = [fe80::e65f:1ff:fe49:ae29] port = [5650] txt = ["T=1" "SAI=300" "SII=5000" "DN=Test TV" "DT=35" "VP=65521+32769"] - disabled: true - - label: - "By any means, TH adds an unknown key/value pair in the advertised - data(e.g. AB=12345)" - verification: | - Run the unknown key/value pair on TH Terminal: + to look for subtypes, on the raspi run $ a avahi-browse -p _services._dns-sd._udp | grep _matterd - avahi-publish-service --subtype=_V123._sub._matterd._udp DD200C20D25AE5F7 _matterd._udp 33333 VP=123+456 DT=35 DN="Living Room TV" INVALID_TEST=40 + +;wlan0;IPv6;_T35;_sub._matterd._udp;local + +;wlan0;IPv6;_V65521;_sub._matterd._udp;local + +;wlan0;IPv6;_matterd;_udp;local + +;eth0;IPv6;_T35;_sub._matterd._udp;local + +;eth0;IPv6;_V65521;_sub._matterd._udp;local + +;eth0;IPv6;_matterd;_udp;local disabled: true - label: "Scan for DNS-SD commissioner advertisements from TH" verification: | - Verify the DUT commissioner is able to discover the TH. + Verify the DUT is able to discover the TH. As an example, In the case of chip-tool as commissioner, you can verify with the below command, (Use the equivalent command on the DUT) @@ -73,24 +73,37 @@ tests: [1659544548031] [13752:9267297] CHIP: [DIS] Mdns: OnBrowseAdd name: DD200C20D25AE5F7, type: _matterc._udp., domain: local., interface: 8 [1659544548031] [13752:9267297] CHIP: [DIS] Resolve type=_matterc._udp name=DD200C20D25AE5F7 interface=8 [1659544548032] [13752:9267297] CHIP: [DIS] Mdns : OnNewInterface hostname:ubuntuserverAccessory1.local. fullname:DD200C20D25AE5F7._matterc._udp.local. interface: 8 port: 26411 TXT:D=840CM=2INVALID_TEST=40 [1659544548033] [13752:9267297] CHIP: [DIS] Mdns: OnNewAddress interface: 8 ip:fd5d:9cc0:fc52:0:dea6:32ff:fe8d:7072 [1659544548033] [13752:9267297] CHIP: [DIS] Mdns: Resolve success on interface 8 - [1659544548033] [13752:9267297] CHIP: [DIS] Discovered node: - [1659544548033] [13752:9267297] CHIP: [DIS] Hostname: ubuntuserverAcce [1659544548033] [13752:9267297] CHIP: [DIS] IP Address #1: fd5d:9cc0:fc52:0:dea6:32ff:fe8d:7072 - [1659544548033] [13752:9267297] CHIP: [DIS] Port: 11111 - [1659544548033] [13752:9267297] CHIP: [DIS] Mrp Interval idle: not present - [1659544548033] [13752:9267297] CHIP: [DIS] Mrp Interval active: not present - [1659544548033] [13752:9267297] CHIP: [DIS] TCP Supported: 0 - [1659544548033] [13752:9267297] CHIP: [DIS] Long Discriminator: 840 - [1659544548033] [13752:9267297] CHIP: [DIS] Instance Name: DD200C20D25AE5F7 - [1659544548033] [13752:9267297] CHIP: [DIS] Commissioning Mode: 2 - [1659544548033] [13752:9267297] CHIP: [DIS] Discovered node: - [1659544548033] [13752:9267297] CHIP: [DIS] Hostname: ubuntuserverAcce [1659544548033] [13752:9267297] CHIP: [DIS] IP Address #1: fd5d:9cc0:fc52:0:dea6:32ff:fe8d:7072 - [1659544548033] [13752:9267297] CHIP: [DIS] Port: 11111 - [1659544548033] [13752:9267297] CHIP: [DIS] Mrp Interval idle: not present - [1659544548033] [13752:9267297] CHIP: [DIS] Mrp Interval active: not present - [1659544548033] [13752:9267297] CHIP: [DIS] TCP Supported: 0 - [1659544548033] [13752:9267297] CHIP: [DIS] Long Discriminator: 840 - [1659544548033] [13752:9267297] CHIP: [DIS] Instance Name: DD200C20D25AE5F7 - [1659544548033] [13752:9267297] CHIP: [DIS] Commissioning Mode: 2 + [1660288371.031350][3364:3369] CHIP:DIS: Discovered node: + [1660288371.031374][3364:3369] CHIP:DIS: Hostname: E45F0149AE290000 [1660288371.031402][3364:3369] CHIP:DIS: IP Address #1: fe80::e65f:1ff:fe49:ae29 + [1660288371.031427][3364:3369] CHIP:DIS: Port: 5640 + [1660288371.031450][3364:3369] CHIP:DIS: Mrp Interval idle: 5000 ms + [1660288371.031473][3364:3369] CHIP:DIS: Mrp Interval active: 300 ms + [1660288371.031496][3364:3369] CHIP:DIS: TCP Supported: 1 + [1660288371.031521][3364:3369] CHIP:DIS: Rotating ID: 01005FDB39737473FB22B819CEBB1084AFD5 + [1660288371.031544][3364:3369] CHIP:DIS: Device Name: Test TV + [1660288371.031566][3364:3369] CHIP:DIS: Vendor ID: 65521 + [1660288371.031589][3364:3369] CHIP:DIS: Product ID: 32769 + [1660288371.031609][3364:3369] CHIP:DIS: Device Type: 35 + [1660288371.031628][3364:3369] CHIP:DIS: Long Discriminator: 3840 + [1660288371.031647][3364:3369] CHIP:DIS: Pairing Hint: 36 + [1660288371.031669][3364:3369] CHIP:DIS: Instance Name: 35025D5C5DA30C17 + [1660288371.031694][3364:3369] CHIP:DIS: Commissioning Mode: 0 + [1660288371.031722][3364:3369] CHIP:DIS: Discovered node: + [1660288371.031743][3364:3369] CHIP:DIS: Hostname: E45F0149AE290000 [1660288371.031768][3364:3369] CHIP:DIS: IP Address #1: fe80::e65f:1ff:fe49:ae29 + [1660288371.031791][3364:3369] CHIP:DIS: Port: 5640 + [1660288371.031814][3364:3369] CHIP:DIS: Mrp Interval idle: 5000 ms + [1660288371.031836][3364:3369] CHIP:DIS: Mrp Interval active: 300 ms + [1660288371.031859][3364:3369] CHIP:DIS: TCP Supported: 1 + [1660288371.031888][3364:3369] CHIP:DIS: Rotating ID: 01005FDB39737473FB22B819CEBB1084AFD5 + [1660288371.031909][3364:3369] CHIP:DIS: Device Name: Test TV + [1660288371.031928][3364:3369] CHIP:DIS: Vendor ID: 65521 + [1660288371.031950][3364:3369] CHIP:DIS: Product ID: 32769 + [1660288371.031973][3364:3369] CHIP:DIS: Device Type: 35 + [1660288371.031995][3364:3369] CHIP:DIS: Long Discriminator: 3840 + [1660288371.032018][3364:3369] CHIP:DIS: Pairing Hint: 36 + [1660288371.032042][3364:3369] CHIP:DIS: Instance Name: 35025D5C5DA30C17 + [1660288371.032064][3364:3369] CHIP:DIS: Commissioning Mode: 0 + [1659544578034] [13752:9267291] CHIP: [CTL] Shutting down the commissioner [1659544578034] [13752:9267291] CHIP: [CTL] Stopping commissioning discovery over DNS-SD [1659544578034] [13752:9267291] CHIP: [CTL] Shutting down the controller diff --git a/src/app/tests/suites/certification/Test_TC_SC_4_8.yaml b/src/app/tests/suites/certification/Test_TC_SC_4_8.yaml index 2ffd0fd3854d6b..5d2e190fdaff95 100644 --- a/src/app/tests/suites/certification/Test_TC_SC_4_8.yaml +++ b/src/app/tests/suites/certification/Test_TC_SC_4_8.yaml @@ -26,9 +26,14 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "Commission TH1 to DUTs Fabric" verification: | - 1. Provision the device using 1st controller chip-tool (as example commissioner) on the raspi (use above instructions) + 1. Provision the device using 1st controller chip-tool (as example commissioner) on the raspi (use the instructions) ./chip-tool pairing onnetwork 2 20202021 diff --git a/src/app/tests/suites/certification/Test_TC_SWTCH_1_1.yaml b/src/app/tests/suites/certification/Test_TC_SWTCH_1_1.yaml index 33ab17b54a9b02..066cca0924ef3f 100644 --- a/src/app/tests/suites/certification/Test_TC_SWTCH_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_SWTCH_1_1.yaml @@ -31,6 +31,19 @@ tests: - name: "nodeId" value: nodeId + - label: + "Read FeatureMap attribute and Check values of flags in this + FeatureMap" + PICS: + "!SWTCH.S.F00 && SWTCH.S.F01 && !SWTCH.S.F02 && !SWTCH.S.F03 && + !SWTCH.S.F04" + command: "readAttribute" + attribute: "FeatureMap" + response: + value: 0 + constraints: + type: bitmap32 + - label: "Read FeatureMap attribute and Check values of flags in this FeatureMap" @@ -42,7 +55,7 @@ tests: response: constraints: type: bitmap32 - minValue: 0 + minValue: 1 maxValue: 31 - label: "read the global attribute: ClusterRevision" diff --git a/src/app/tests/suites/certification/Test_TC_SWTCH_2_2.yaml b/src/app/tests/suites/certification/Test_TC_SWTCH_2_2.yaml index 0a18301fb30716..a930c424fe8135 100644 --- a/src/app/tests/suites/certification/Test_TC_SWTCH_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_SWTCH_2_2.yaml @@ -24,36 +24,30 @@ config: endpoint: 0 tests: - - label: "Commission DUT to TH (can be skipped if done in a preceding test)" + - label: "Note" verification: | - + NOTE: https://github.com/project-chip/connectedhomeip/tree/master/examples/all-clusters-app/linux#readme + Events to be executed as following + 1. Compile app using below command in connectedhomeip folder + a. ./scripts/run_in_build_env.sh ./scripts/build/build_examples.py --target linux-arm64-all-clusters-no-ble-asan-clang build + b. ./scripts/run_in_build_env.sh ./scripts/build/build_examples.py --target linux-arm64-all-clusters-no-ble-asan-libfuzzer-clang build + 2. Build respective app (all-clusters-app) + 3. Commission DUT to TH + 4. Open 2nd terminal of DUT and provide the below command to obtain PID of DUT + ps -aef|grep all-clusters-app + 5. Follow the Verification step below to generate the event in 2nd terminal of DUT disabled: true - label: "Commission DUT to TH (can be skipped if done in a preceding test)" verification: | - NOTE: - To Run the event test case we need to build event commands on DUT[All-cluster-ap] terminal.Below I mention the commands for how to build for linux arm64 it depends on the DUT what we use.I provided the link for build events. - - https://github.com/project-chip/connectedhomeip/tree/master/examples/all-clusters-app/linux#trigger-switch-events - - - - - Here I provide cmmds for build on linux arm64 - - 1. ./scripts/run_in_build_env.sh "./scripts/build/build_examples.py --target linux-arm64-all-clusters-no-ble-asan-clang build - - 2../scripts/run_in_build_env.sh "./scripts/build/build_examples.py --target linux-arm64-all-clusters-no-ble-asan-libfuzzer-clang build - - 3. ./out/linux-arm64-all-clusters-no-ble-asan-libfuzzer-clang/chip-all-clusters-app-fuzzing - - 4. ./out/linux-arm64-all-clusters-no-ble-asan-libfuzzer-clang/chip-all-clusters-app-fuzzing $(INPUT_FILE) + Commission DUT to TH disabled: true - label: "Set up subscription to SwitchLatched event" PICS: SWTCH.S.F00 verification: | - In Raspi platform to change the switch position use the below command, Pls use equivalent command on the respective DUT.After provisioning ,open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) + echo "{"Name":"SwitchLatched","NewPosition":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -76,7 +70,7 @@ tests: - label: "Operator sets switch to first position" PICS: SWTCH.S.F00 verification: | - In Raspi platform to change the switch to first position use the below command, Pls use equivalent command on the respective DUT.After provisioning ,open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"SwitchLatched","NewPosition":0}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -102,7 +96,7 @@ tests: - label: "Operator sets switch to second position" PICS: SWTCH.S.F00 verification: | - In Raspi platform to change the switch to second position use the below sample command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"SwitchLatched","NewPosition":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -125,13 +119,12 @@ tests: disabled: true - label: - "If NumberOfPositions>2 (see 2c of TC-SWTCH-2.1) : - Operator sets + "If NumberOfPositions>2 (see 2a of TC-SWTCH-2.1) : - Operator sets switch to next position - Read CurrentPosition attribute" - PICS: SWTCH.S.F00 verification: | Raspi device doesn"t support more than 2 position ,so this step is not verifiable by using raspi device - In Raspi platform to change the switch to third position use the below sample command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"SwitchLatched","NewPosition":2}" > /tmp/chip_all_clusters_fifo (PID of DUT) @@ -181,7 +174,7 @@ tests: - label: "Operator returns switch to first position" PICS: SWTCH.S.F00 verification: | - In Raspi platform to change the switch to first position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"SwitchLatched","NewPosition":0}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -206,7 +199,7 @@ tests: - label: "Set up subscription to InitialPress event" PICS: SWTCH.S.F01 verification: | - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"InitialPress","NewPosition":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -251,7 +244,7 @@ tests: - label: "Operator operates switch (keep it pressed)" PICS: SWTCH.S.F01 verification: | - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"InitialPress","NewPosition":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -276,7 +269,7 @@ tests: - label: "Operator does not operate switch (release switch)" PICS: SWTCH.S.F01 verification: | - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"ShortRelease","PreviousPosition":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -299,7 +292,7 @@ tests: - label: "Set up subscription to InitialPress and ShortRelease events" PICS: SWTCH.S.F01 && SWTCH.S.F02 && !SWTCH.S.F03 verification: | - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"InitialPress","NewPosition":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -308,7 +301,7 @@ tests: [1659686596.526820][2530:2530] CHIP:-: The new position when the momentary switch starts to be pressed:1 [1659686596.526881][2530:2530] CHIP:ZCL: SwitchServer: OnInitialPress - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"ShortRelease","PreviousPosition":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -362,7 +355,7 @@ tests: "Operator operates switch (keep pressed for long time, e.g. 5 seconds)" PICS: SWTCH.S.F01 && SWTCH.S.F02 && !SWTCH.S.F03 verification: | - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"InitialPress","NewPosition":1}" > /tmp/chip_all_clusters_fifo_2530 @@ -388,7 +381,7 @@ tests: - label: "Operator releases switch" PICS: SWTCH.S.F01 && SWTCH.S.F02 && !SWTCH.S.F03 verification: | - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"ShortRelease","PreviousPosition":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -416,7 +409,7 @@ tests: LongRelease events" PICS: SWTCH.S.F01 && SWTCH.S.F03 verification: | - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"InitialPress","NewPosition":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -425,7 +418,7 @@ tests: [1659693098.031859][2530:2530] CHIP:-: The new position when the momentary switch starts to be pressed:1 [1659693098.031888][2530:2530] CHIP:ZCL: SwitchServer: OnInitialPress - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"LongPress","NewPosition":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -434,7 +427,7 @@ tests: [1659693130.925064][2530:2530] CHIP:-: The new position when the momentary switch has been pressed for a long time:1 [1659693130.925313][2530:2530] CHIP:ZCL: SwitchServer: OnLongPress - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"ShortRelease","PreviousPosition":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -443,7 +436,7 @@ tests: [1659693174.709479][2530:2530] CHIP:-: The the previous value of the CurrentPosition when the momentary switch has been released:1 [1659693174.709539][2530:2530] CHIP:ZCL: SwitchServer: OnShortRelease - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"LongRelease","PreviousPosition":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -546,7 +539,7 @@ tests: MultiPressComplete events" PICS: SWTCH.S.F01 && SWTCH.S.F04 verification: | - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"InitialPress","NewPosition":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -555,7 +548,7 @@ tests: [1659693098.031859][2530:2530] CHIP:-: The new position when the momentary switch starts to be pressed:1 [1659693098.031888][2530:2530] CHIP:ZCL: SwitchServer: OnInitialPress - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"ShortRelease","PreviousPosition":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -564,7 +557,7 @@ tests: [1659694387.720237][2530:2530] CHIP:-: The the previous value of the CurrentPosition when the momentary switch has been released:1 [1659694387.720304][2530:2530] CHIP:ZCL: SwitchServer: OnShortRelease - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"MultiPressComplete","PreviousPosition":1,"TotalNumberOfPressesCounted":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -572,7 +565,7 @@ tests: [1659694592.348389][2530:2530] CHIP:DMG: Endpoint 1, Cluster 0x0000_003B update version to ee5e772b [1659694592.348481][2530:2530] CHIP:-: The new position when the momentary switch has been pressed in a multi-press sequence:1 - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"MultiPressOngoing","NewPosition":1,"CurrentNumberOfPressesCounted":2}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -877,6 +870,9 @@ tests: [1659696223.568397][3981:3986] CHIP:TOO: } + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) + + echo "{"Name":"MultiPressOngoing","previousPosition":1,"CurrentNumberOfPressesCounted":3}" > /tmp/chip_all_clusters_fifo- (PID of DUT) Please use Interactive mode to Verify the subscription of an event Here the command to enter interactive mode:-- @@ -888,7 +884,7 @@ tests: [1659695330.923283][3912:3918] CHIP:TOO: Priority: Info [1659695330.923302][3912:3918] CHIP:TOO: Timestamp: 17754336 [1659695330.923326][3912:3918] CHIP:TOO: MultiPressComplete: { - [1659695330.923346][3912:3918] CHIP:TOO: PrevioiusPosition: 1 + [1659695330.923346][3912:3918] CHIP:TOO: PreviousPosition: 1 [1659695330.923366][3912:3918] CHIP:TOO: TotalNumberOfPressesCounted: 3 [1659695330.923385][3912:3918] CHIP:TOO: } disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_SWTCH_3_2.yaml b/src/app/tests/suites/certification/Test_TC_SWTCH_3_2.yaml index 57f53c5fb9b412..7a302ef34271d6 100644 --- a/src/app/tests/suites/certification/Test_TC_SWTCH_3_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_SWTCH_3_2.yaml @@ -31,22 +31,16 @@ tests: - label: "Note" verification: | - To Run the event test case we need to build event commands on DUT[All-cluster-ap] side.Below I mention the commands for how to build for linux arm64 it depends on the DUT what we use.I provided the link for build events. - - https://github.com/project-chip/connectedhomeip/tree/master/examples/all-clusters-app/linux#trigger-switch-events - - - - - Here I provide cmmds for build on linux arm64 - - 1. ./scripts/run_in_build_env.sh "./scripts/build/build_examples.py --target linux-arm64-all-clusters-no-ble-asan-clang build - - 2../scripts/run_in_build_env.sh "./scripts/build/build_examples.py --target linux-arm64-all-clusters-no-ble-asan-libfuzzer-clang build - - 3. ./out/linux-arm64-all-clusters-no-ble-asan-libfuzzer-clang/chip-all-clusters-app-fuzzing - - 4. ./out/linux-arm64-all-clusters-no-ble-asan-libfuzzer-clang/chip-all-clusters-app-fuzzing $(INPUT_FILE) + NOTE: https://github.com/project-chip/connectedhomeip/tree/master/examples/all-clusters-app/linux#readme + Events to be executed as following + 1. Compile app using below command in connectedhomeip folder + a. ./scripts/run_in_build_env.sh ./scripts/build/build_examples.py --target linux-arm64-all-clusters-no-ble-asan-clang build + b. ./scripts/run_in_build_env.sh ./scripts/build/build_examples.py --target linux-arm64-all-clusters-no-ble-asan-libfuzzer-clang build + 2. Build respective app (all-clusters-app) + 3. Commission DUT to TH + 4. Open 2nd terminal of DUT and provide the below command to obtain PID of DUT + ps -aef|grep all-clusters-app + 5. Follow the Verification step below to generate the event in 2nd terminal of DUT disabled: true - label: diff --git a/src/app/tests/suites/certification/Test_TC_TGTNAV_8_1.yaml b/src/app/tests/suites/certification/Test_TC_TGTNAV_8_1.yaml index 3a11538f19f7b2..d28d8404bf0a1d 100644 --- a/src/app/tests/suites/certification/Test_TC_TGTNAV_8_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_TGTNAV_8_1.yaml @@ -21,12 +21,9 @@ config: nodeId: 0x12344321 cluster: "Target Navigator" endpoint: 1 - targetvalue1: + targetvalue: type: int8u defaultValue: 1 - targetvalue2: - type: int8u - defaultValue: 2 tests: - label: "Wait for the commissioned device to be retrieved" @@ -62,11 +59,11 @@ tests: arguments: values: - name: "Target" - value: targetvalue1 + value: targetvalue - label: "Reads the CurrentTarget attribute" PICS: TGTNAV.S.A0001 && TGTNAV.S.C00.Rsp command: "readAttribute" attribute: "CurrentTarget" response: - value: targetvalue1 + value: targetvalue diff --git a/src/app/tests/suites/certification/Test_TC_TMP_3_1.yaml b/src/app/tests/suites/certification/Test_TC_TMP_3_1.yaml index e4101b19ecb7a3..f2dc3a06570cfa 100644 --- a/src/app/tests/suites/certification/Test_TC_TMP_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_TMP_3_1.yaml @@ -28,6 +28,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT reads all supported mandatory attributes from TH one at a time in a manufacturer specific order" diff --git a/src/app/tests/suites/certification/Test_TC_TSTAT_1_1.yaml b/src/app/tests/suites/certification/Test_TC_TSTAT_1_1.yaml index 82c8acae87f9e8..31d769b3f5f9be 100644 --- a/src/app/tests/suites/certification/Test_TC_TSTAT_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_TSTAT_1_1.yaml @@ -39,6 +39,17 @@ tests: constraints: type: int16u + - label: "Read the global attribute: FeatureMap" + PICS: + "!TSTAT.S.F00 && !TSTAT.S.F01 && !TSTAT.S.F02 && !TSTAT.S.F03 && + !TSTAT.S.F04 && !TSTAT.S.F05" + command: "readAttribute" + attribute: "FeatureMap" + response: + value: 0 + constraints: + type: bitmap32 + - label: "Read the global attribute: FeatureMap" PICS: TSTAT.S.F00 || TSTAT.S.F01 || TSTAT.S.F02 || TSTAT.S.F03 || diff --git a/src/app/tests/suites/certification/Test_TC_TSTAT_3_1.yaml b/src/app/tests/suites/certification/Test_TC_TSTAT_3_1.yaml index 5ee9d5d49fae27..90989264ca2dff 100644 --- a/src/app/tests/suites/certification/Test_TC_TSTAT_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_TSTAT_3_1.yaml @@ -28,6 +28,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT reads all supported mandatory attributes from TH one at a time in a manufacturer specific order" diff --git a/src/app/tests/suites/certification/Test_TC_TSTAT_3_2.yaml b/src/app/tests/suites/certification/Test_TC_TSTAT_3_2.yaml index 1aaa744557356c..ab6f0e52bac81c 100644 --- a/src/app/tests/suites/certification/Test_TC_TSTAT_3_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_TSTAT_3_2.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT increases the temperature by sending a SetpointRaiseLower command to the Test Harness, with a valid Mode argument (0, 1 or 2) and a diff --git a/src/app/tests/suites/certification/Test_TC_TSUIC_3_1.yaml b/src/app/tests/suites/certification/Test_TC_TSUIC_3_1.yaml index b1667296ad68a5..93899e3ed8eb66 100644 --- a/src/app/tests/suites/certification/Test_TC_TSUIC_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_TSUIC_3_1.yaml @@ -28,6 +28,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT reads all supported mandatory attributes from TH one at a time in a manufacturer specific order" diff --git a/src/app/tests/suites/certification/Test_TC_ULABEL_3_1.yaml b/src/app/tests/suites/certification/Test_TC_ULABEL_3_1.yaml index 099a68415e1279..391fa07689121e 100644 --- a/src/app/tests/suites/certification/Test_TC_ULABEL_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_ULABEL_3_1.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT reads LabelList from the TH" PICS: ULABEL.C.A0000 verification: | diff --git a/src/app/tests/suites/certification/Test_TC_WNCV_5_1.yaml b/src/app/tests/suites/certification/Test_TC_WNCV_5_1.yaml index d1b9f4360ea558..ad1a9212f3c838 100644 --- a/src/app/tests/suites/certification/Test_TC_WNCV_5_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_WNCV_5_1.yaml @@ -24,12 +24,17 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "Check Attribute defining the cluster Features" verification: | verification step to be updated. disabled: true - - label: "DUT reads the (65532) _FeatureMap_ attribute from T" + - label: "DUT reads the (65532) _FeatureMap_ attribute from TH" PICS: WNCV.C.Afffc verification: | On TestHarnes (all-cluster-app) a received read of feature-map looks like this: diff --git a/src/app/tests/suites/certification/Test_TC_WNCV_6_1.yaml b/src/app/tests/suites/certification/Test_TC_WNCV_6_1.yaml index 5a5ca6f749440f..7e077c22b70943 100644 --- a/src/app/tests/suites/certification/Test_TC_WNCV_6_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_WNCV_6_1.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "Check UpOrOpen command" verification: | verification step to be updated. diff --git a/src/app/tests/suites/certification/Test_TC_WNCV_7_1.yaml b/src/app/tests/suites/certification/Test_TC_WNCV_7_1.yaml index 9140778f02ca5c..c2d60eb96c7982 100644 --- a/src/app/tests/suites/certification/Test_TC_WNCV_7_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_WNCV_7_1.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "Check GoToLiftPercentage command 50%" verification: | verification step to be updated. diff --git a/src/app/tests/suites/certification/ci-pics-values b/src/app/tests/suites/certification/ci-pics-values index 67322305f85885..1e7cf4e8e128fa 100644 --- a/src/app/tests/suites/certification/ci-pics-values +++ b/src/app/tests/suites/certification/ci-pics-values @@ -1668,3 +1668,15 @@ MCORE.IDM.C.SubscribeRequest.Attribute.DataType_Integer=1 MCORE.IDM.C.SubscribeRequest.Attribute.DataType_FloatingPoint=1 MCORE.IDM.C.SubscribeRequest.Attribute.DataType_List=1 MCORE.IDM.S.LargeData=1 +MCORE.IDM.C.WriteRequest.Attribute.DataType_Bool=1 +MCORE.IDM.C.WriteRequest.Attribute.DataType_String=1 +MCORE.IDM.C.WriteRequest.Attribute.DataType_UnsignedInteger=1 +MCORE.IDM.C.WriteRequest.Attribute.DataType_SignedInteger=1 +MCORE.IDM.C.WriteRequest.Attribute.DataType_Struct=1 +MCORE.IDM.C.WriteRequest.Attribute.DataType_FloatingPoint=1 +MCORE.IDM.C.WriteRequest.Attribute.DataType_List=1 +MCORE.IDM.C.WriteRequest.Attribute.DataType_OctetString=1 +MCORE.IDM.C.WriteRequest.Attribute.DataType_Enum=1 +MCORE.IDM.C.WriteRequest.Attribute.DataType_Bitmap=1 +MCORE.IDM.C.SubscribeRequest.Attribute.DataType_Bool=1 +MCORE.IDM.C.SubscribeRequest.MultipleAttributes=1 diff --git a/src/app/tests/suites/manualTests.json b/src/app/tests/suites/manualTests.json index bfa3a7e67cf84e..0dbf826cca2bee 100644 --- a/src/app/tests/suites/manualTests.json +++ b/src/app/tests/suites/manualTests.json @@ -245,8 +245,7 @@ "Test_TC_OCC_2_2", "Test_TC_OCC_2_3", "Test_TC_OCC_2_4", - "Test_TC_OCC_3_1", - "Test_TC_OCC_3_2" + "Test_TC_OCC_3_1" ], "PressureMeasurement": ["Test_TC_PRS_3_1"], "PowerSource": ["Test_TC_PS_2_2", "Test_TC_PS_3_1"], diff --git a/src/app/zap-templates/zcl/data-model/chip/fault-injection-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/fault-injection-cluster.xml index f8c764d8e139c6..e4e92aee68ea0c 100644 --- a/src/app/zap-templates/zcl/data-model/chip/fault-injection-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/fault-injection-cluster.xml @@ -39,5 +39,12 @@ limitations under the License. + + Configure a fault to be triggered randomly, with a given probability defined as a percentage + + + + + diff --git a/src/controller/CHIPDeviceController.h b/src/controller/CHIPDeviceController.h index f5a4ddf281618a..62f97c0c30e80d 100644 --- a/src/controller/CHIPDeviceController.h +++ b/src/controller/CHIPDeviceController.h @@ -656,6 +656,11 @@ class DLL_EXPORT DeviceCommissioner : public DeviceController, mDeviceAttestationVerifier = deviceAttestationVerifier; } + Optional GetCommissioningParameters() + { + return mDefaultCommissioner == nullptr ? NullOptional : MakeOptional(mDefaultCommissioner->GetCommissioningParameters()); + } + private: DevicePairingDelegate * mPairingDelegate; diff --git a/src/controller/ExampleOperationalCredentialsIssuer.cpp b/src/controller/ExampleOperationalCredentialsIssuer.cpp index cc8cd8fbcdb404..9c0b376b13716c 100644 --- a/src/controller/ExampleOperationalCredentialsIssuer.cpp +++ b/src/controller/ExampleOperationalCredentialsIssuer.cpp @@ -39,6 +39,127 @@ using namespace Credentials; using namespace Crypto; using namespace TLV; +namespace { + +enum CertType : uint8_t +{ + kRcac = 0, + kIcac = 1, + kNoc = 2 +}; + +CHIP_ERROR IssueX509Cert(uint32_t now, uint32_t validity, ChipDN issuerDn, ChipDN desiredDn, CertType certType, bool maximizeSize, + const Crypto::P256PublicKey & subjectPublicKey, Crypto::P256Keypair & issuerKeypair, + MutableByteSpan & outX509Cert) +{ + constexpr size_t kDERCertDnEncodingOverhead = 11; + constexpr size_t kTLVCertDnEncodingOverhead = 3; + constexpr size_t kMaxCertPaddingLength = 150; + constexpr size_t kTLVDesiredSize = kMaxCHIPCertLength - 50; + + Platform::ScopedMemoryBuffer derBuf; + ReturnErrorCodeIf(!derBuf.Alloc(kMaxDERCertLength), CHIP_ERROR_NO_MEMORY); + MutableByteSpan derSpan{ derBuf.Get(), kMaxDERCertLength }; + + int64_t serialNumber = 1; + + switch (certType) + { + case CertType::kRcac: { + X509CertRequestParams rcacRequest = { serialNumber, now, now + validity, desiredDn, desiredDn }; + ReturnErrorOnFailure(NewRootX509Cert(rcacRequest, issuerKeypair, derSpan)); + break; + } + case CertType::kIcac: { + X509CertRequestParams icacRequest = { serialNumber, now, now + validity, desiredDn, issuerDn }; + ReturnErrorOnFailure(NewICAX509Cert(icacRequest, subjectPublicKey, issuerKeypair, derSpan)); + break; + } + case CertType::kNoc: { + X509CertRequestParams nocRequest = { serialNumber, now, now + validity, desiredDn, issuerDn }; + ReturnErrorOnFailure(NewNodeOperationalX509Cert(nocRequest, subjectPublicKey, issuerKeypair, derSpan)); + break; + } + default: + return CHIP_ERROR_INVALID_ARGUMENT; + } + + if (maximizeSize && (desiredDn.RDNCount() < CHIP_CONFIG_CERT_MAX_RDN_ATTRIBUTES)) + { + Platform::ScopedMemoryBuffer paddedTlvBuf; + ReturnErrorCodeIf(!paddedTlvBuf.Alloc(kMaxCHIPCertLength + kMaxCertPaddingLength), CHIP_ERROR_NO_MEMORY); + MutableByteSpan paddedTlvSpan{ paddedTlvBuf.Get(), kMaxCHIPCertLength + kMaxCertPaddingLength }; + ReturnErrorOnFailure(ConvertX509CertToChipCert(derSpan, paddedTlvSpan)); + + Platform::ScopedMemoryBuffer paddedDerBuf; + ReturnErrorCodeIf(!paddedDerBuf.Alloc(kMaxDERCertLength + kMaxCertPaddingLength), CHIP_ERROR_NO_MEMORY); + MutableByteSpan paddedDerSpan{ paddedDerBuf.Get(), kMaxDERCertLength + kMaxCertPaddingLength }; + + Platform::ScopedMemoryBuffer fillerBuf; + ReturnErrorCodeIf(!fillerBuf.Alloc(kMaxCertPaddingLength), CHIP_ERROR_NO_MEMORY); + memset(fillerBuf.Get(), 'A', kMaxCertPaddingLength); + + int derPaddingLen = static_cast(kMaxDERCertLength - kDERCertDnEncodingOverhead - derSpan.size()); + int tlvPaddingLen = static_cast(kTLVDesiredSize - kTLVCertDnEncodingOverhead - paddedTlvSpan.size()); + if (certType == CertType::kRcac) + { + // For RCAC the issuer/subject DN are the same so padding will be present in both + derPaddingLen = (derPaddingLen - static_cast(kDERCertDnEncodingOverhead)) / 2; + tlvPaddingLen = (tlvPaddingLen - static_cast(kTLVCertDnEncodingOverhead)) / 2; + } + + size_t paddingLen = 0; + if (derPaddingLen >= 1 && tlvPaddingLen >= 1) + { + paddingLen = std::min(static_cast(std::min(derPaddingLen, tlvPaddingLen)), kMaxCertPaddingLength); + } + + for (; paddingLen > 0; paddingLen--) + { + paddedDerSpan = MutableByteSpan{ paddedDerBuf.Get(), kMaxDERCertLength + kMaxCertPaddingLength }; + paddedTlvSpan = MutableByteSpan{ paddedTlvBuf.Get(), kMaxCHIPCertLength + kMaxCertPaddingLength }; + + ChipDN certDn = desiredDn; + // Fill the padding in the DomainNameQualifier DN + certDn.AddAttribute_DNQualifier(CharSpan(fillerBuf.Get(), paddingLen), false); + + switch (certType) + { + case CertType::kRcac: { + X509CertRequestParams rcacRequest = { serialNumber, now, now + validity, certDn, certDn }; + ReturnErrorOnFailure(NewRootX509Cert(rcacRequest, issuerKeypair, paddedDerSpan)); + break; + } + case CertType::kIcac: { + X509CertRequestParams icacRequest = { serialNumber, now, now + validity, certDn, issuerDn }; + ReturnErrorOnFailure(NewICAX509Cert(icacRequest, subjectPublicKey, issuerKeypair, paddedDerSpan)); + break; + } + case CertType::kNoc: { + X509CertRequestParams nocRequest = { serialNumber, now, now + validity, certDn, issuerDn }; + ReturnErrorOnFailure(NewNodeOperationalX509Cert(nocRequest, subjectPublicKey, issuerKeypair, paddedDerSpan)); + break; + } + default: + return CHIP_ERROR_INVALID_ARGUMENT; + } + + ReturnErrorOnFailure(ConvertX509CertToChipCert(paddedDerSpan, paddedTlvSpan)); + + ChipLogProgress(Controller, "Generated maximized certificate with %u DER bytes, %u TLV bytes", + static_cast(paddedDerSpan.size()), static_cast(paddedTlvSpan.size())); + if (paddedDerSpan.size() <= kMaxDERCertLength && paddedTlvSpan.size() <= kMaxCHIPCertLength) + { + return CopySpanToMutableSpan(paddedDerSpan, outX509Cert); + } + } + } + + return CopySpanToMutableSpan(derSpan, outX509Cert); +} + +} // namespace + CHIP_ERROR ExampleOperationalCredentialsIssuer::Initialize(PersistentStorageDelegate & storage) { using namespace ASN1; @@ -122,6 +243,12 @@ CHIP_ERROR ExampleOperationalCredentialsIssuer::GenerateNOCChainAfterValidation( uint16_t rcacBufLen = static_cast(std::min(rcac.size(), static_cast(UINT16_MAX))); PERSISTENT_KEY_OP(mIndex, kOperationalCredentialsRootCertificateStorage, key, err = mStorage->SyncGetKeyValue(key, rcac.data(), rcacBufLen)); + // Always regenerate RCAC on maximally sized certs. The keys remain the same, so everything is fine. + if (mUseMaximallySizedCerts) + { + err = CHIP_ERROR_PERSISTED_STORAGE_VALUE_NOT_FOUND; + } + if (err == CHIP_NO_ERROR) { uint64_t rcacId; @@ -137,10 +264,14 @@ CHIP_ERROR ExampleOperationalCredentialsIssuer::GenerateNOCChainAfterValidation( ReturnErrorOnFailure(rcac_dn.AddAttribute_MatterRCACId(mIssuerId)); ChipLogProgress(Controller, "Generating RCAC"); - X509CertRequestParams rcac_request = { 0, mNow, mNow + mValidity, rcac_dn, rcac_dn }; - ReturnErrorOnFailure(NewRootX509Cert(rcac_request, mIssuer, rcac)); - + ReturnErrorOnFailure(IssueX509Cert(mNow, mValidity, rcac_dn, rcac_dn, CertType::kRcac, mUseMaximallySizedCerts, + mIssuer.Pubkey(), mIssuer, rcac)); VerifyOrReturnError(CanCastTo(rcac.size()), CHIP_ERROR_INTERNAL); + + // Re-extract DN based on final generated cert + rcac_dn = ChipDN{}; + ReturnErrorOnFailure(ExtractSubjectDNFromX509Cert(rcac, rcac_dn)); + PERSISTENT_KEY_OP(mIndex, kOperationalCredentialsRootCertificateStorage, key, ReturnErrorOnFailure(mStorage->SyncSetKeyValue(key, rcac.data(), static_cast(rcac.size())))); } @@ -149,6 +280,11 @@ CHIP_ERROR ExampleOperationalCredentialsIssuer::GenerateNOCChainAfterValidation( uint16_t icacBufLen = static_cast(std::min(icac.size(), static_cast(UINT16_MAX))); PERSISTENT_KEY_OP(mIndex, kOperationalCredentialsIntermediateCertificateStorage, key, err = mStorage->SyncGetKeyValue(key, icac.data(), icacBufLen)); + // Always regenerate ICAC on maximally sized certs. The keys remain the same, so everything is fine. + if (mUseMaximallySizedCerts) + { + err = CHIP_ERROR_PERSISTED_STORAGE_VALUE_NOT_FOUND; + } if (err == CHIP_NO_ERROR) { uint64_t icacId; @@ -164,10 +300,14 @@ CHIP_ERROR ExampleOperationalCredentialsIssuer::GenerateNOCChainAfterValidation( ReturnErrorOnFailure(icac_dn.AddAttribute_MatterICACId(mIntermediateIssuerId)); ChipLogProgress(Controller, "Generating ICAC"); - X509CertRequestParams icac_request = { 0, mNow, mNow + mValidity, icac_dn, rcac_dn }; - ReturnErrorOnFailure(NewICAX509Cert(icac_request, mIntermediateIssuer.Pubkey(), mIssuer, icac)); - + ReturnErrorOnFailure(IssueX509Cert(mNow, mValidity, rcac_dn, icac_dn, CertType::kIcac, mUseMaximallySizedCerts, + mIntermediateIssuer.Pubkey(), mIssuer, icac)); VerifyOrReturnError(CanCastTo(icac.size()), CHIP_ERROR_INTERNAL); + + // Re-extract DN based on final generated cert + icac_dn = ChipDN{}; + ReturnErrorOnFailure(ExtractSubjectDNFromX509Cert(icac, icac_dn)); + PERSISTENT_KEY_OP(mIndex, kOperationalCredentialsIntermediateCertificateStorage, key, ReturnErrorOnFailure(mStorage->SyncSetKeyValue(key, icac.data(), static_cast(icac.size())))); } @@ -178,8 +318,8 @@ CHIP_ERROR ExampleOperationalCredentialsIssuer::GenerateNOCChainAfterValidation( ReturnErrorOnFailure(noc_dn.AddCATs(cats)); ChipLogProgress(Controller, "Generating NOC"); - X509CertRequestParams noc_request = { 1, mNow, mNow + mValidity, noc_dn, icac_dn }; - return NewNodeOperationalX509Cert(noc_request, pubkey, mIntermediateIssuer, noc); + return IssueX509Cert(mNow, mValidity, icac_dn, noc_dn, CertType::kNoc, mUseMaximallySizedCerts, pubkey, mIntermediateIssuer, + noc); } CHIP_ERROR ExampleOperationalCredentialsIssuer::GenerateNOCChain(const ByteSpan & csrElements, const ByteSpan & csrNonce, @@ -227,16 +367,16 @@ CHIP_ERROR ExampleOperationalCredentialsIssuer::GenerateNOCChain(const ByteSpan ReturnErrorOnFailure(VerifyCertificateSigningRequest(csr.data(), csr.size(), pubkey)); chip::Platform::ScopedMemoryBuffer noc; - ReturnErrorCodeIf(!noc.Alloc(kMaxCHIPDERCertLength), CHIP_ERROR_NO_MEMORY); - MutableByteSpan nocSpan(noc.Get(), kMaxCHIPDERCertLength); + ReturnErrorCodeIf(!noc.Alloc(kMaxDERCertLength), CHIP_ERROR_NO_MEMORY); + MutableByteSpan nocSpan(noc.Get(), kMaxDERCertLength); chip::Platform::ScopedMemoryBuffer icac; - ReturnErrorCodeIf(!icac.Alloc(kMaxCHIPDERCertLength), CHIP_ERROR_NO_MEMORY); - MutableByteSpan icacSpan(icac.Get(), kMaxCHIPDERCertLength); + ReturnErrorCodeIf(!icac.Alloc(kMaxDERCertLength), CHIP_ERROR_NO_MEMORY); + MutableByteSpan icacSpan(icac.Get(), kMaxDERCertLength); chip::Platform::ScopedMemoryBuffer rcac; - ReturnErrorCodeIf(!rcac.Alloc(kMaxCHIPDERCertLength), CHIP_ERROR_NO_MEMORY); - MutableByteSpan rcacSpan(rcac.Get(), kMaxCHIPDERCertLength); + ReturnErrorCodeIf(!rcac.Alloc(kMaxDERCertLength), CHIP_ERROR_NO_MEMORY); + MutableByteSpan rcacSpan(rcac.Get(), kMaxDERCertLength); ReturnErrorOnFailure( GenerateNOCChainAfterValidation(assignedId, mNextFabricId, chip::kUndefinedCATs, pubkey, rcacSpan, icacSpan, nocSpan)); diff --git a/src/controller/ExampleOperationalCredentialsIssuer.h b/src/controller/ExampleOperationalCredentialsIssuer.h index a85684cf6957e2..6e3b1e554d4288 100644 --- a/src/controller/ExampleOperationalCredentialsIssuer.h +++ b/src/controller/ExampleOperationalCredentialsIssuer.h @@ -65,6 +65,8 @@ class DLL_EXPORT ExampleOperationalCredentialsIssuer : public OperationalCredent mNodeIdRequested = true; } + void SetMaximallyLargeCertsUsed(bool areMaximallyLargeCertsUsed) { mUseMaximallySizedCerts = areMaximallyLargeCertsUsed; } + void SetFabricIdForNextNOCRequest(FabricId fabricId) override { mNextFabricId = fabricId; } /** @@ -108,8 +110,8 @@ class DLL_EXPORT ExampleOperationalCredentialsIssuer : public OperationalCredent Crypto::P256Keypair mIssuer; Crypto::P256Keypair mIntermediateIssuer; bool mInitialized = false; - uint32_t mIssuerId = 0; - uint32_t mIntermediateIssuerId = 1; + uint32_t mIssuerId = 1; + uint32_t mIntermediateIssuerId = 2; uint32_t mNow = 0; // By default, let's set validity to 10 years @@ -117,6 +119,7 @@ class DLL_EXPORT ExampleOperationalCredentialsIssuer : public OperationalCredent NodeId mNextAvailableNodeId = 1; PersistentStorageDelegate * mStorage = nullptr; + bool mUseMaximallySizedCerts = false; NodeId mNextRequestedNodeId = 1; FabricId mNextFabricId = 1; diff --git a/src/controller/java/AndroidDeviceControllerWrapper.cpp b/src/controller/java/AndroidDeviceControllerWrapper.cpp index 8b28896a701d44..ada814133734fc 100644 --- a/src/controller/java/AndroidDeviceControllerWrapper.cpp +++ b/src/controller/java/AndroidDeviceControllerWrapper.cpp @@ -425,7 +425,7 @@ void AndroidDeviceControllerWrapper::OnCommissioningStatusUpdate(PeerId peerId, JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread(); jmethodID onCommissioningStatusUpdateMethod; CHIP_ERROR err = JniReferences::GetInstance().FindMethod(env, mJavaObjectRef, "onCommissioningStatusUpdate", - "(JLjava/lang/string;I)V", &onCommissioningStatusUpdateMethod); + "(JLjava/lang/String;I)V", &onCommissioningStatusUpdateMethod); VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Controller, "Error finding Java method: %" CHIP_ERROR_FORMAT, err.Format())); UtfString jStageCompleted(env, StageToString(stageCompleted)); diff --git a/src/controller/java/AndroidOperationalCredentialsIssuer.cpp b/src/controller/java/AndroidOperationalCredentialsIssuer.cpp index 59872b01486b52..e9808409da5d3c 100644 --- a/src/controller/java/AndroidOperationalCredentialsIssuer.cpp +++ b/src/controller/java/AndroidOperationalCredentialsIssuer.cpp @@ -378,7 +378,7 @@ CHIP_ERROR AndroidOperationalCredentialsIssuer::LocalGenerateNOCChain(const Byte return CHIP_NO_ERROR; } -CHIP_ERROR N2J_CSRInfo(JNIEnv * env, jbyteArray nonce, jbyteArray elements, jbyteArray elementsSignature, jbyteArray csr, +CHIP_ERROR N2J_CSRInfo(JNIEnv * env, jbyteArray nonce, jbyteArray elements, jbyteArray csrElementsSignature, jbyteArray csr, jobject & outCSRInfo) { CHIP_ERROR err = CHIP_NO_ERROR; @@ -393,7 +393,7 @@ CHIP_ERROR N2J_CSRInfo(JNIEnv * env, jbyteArray nonce, jbyteArray elements, jbyt constructor = env->GetMethodID(infoClass, "", "([B[B[B[B)V"); VerifyOrExit(constructor != nullptr, err = CHIP_JNI_ERROR_METHOD_NOT_FOUND); - outCSRInfo = (jobject) env->NewObject(infoClass, constructor, nonce, elements, elementsSignature, csr); + outCSRInfo = (jobject) env->NewObject(infoClass, constructor, nonce, elements, csrElementsSignature, csr); VerifyOrExit(!env->ExceptionCheck(), err = CHIP_JNI_ERROR_EXCEPTION_THROWN); exit: diff --git a/src/controller/java/src/chip/devicecontroller/ChipDeviceController.java b/src/controller/java/src/chip/devicecontroller/ChipDeviceController.java index 97627b56c4ce1f..47c87b364143e3 100644 --- a/src/controller/java/src/chip/devicecontroller/ChipDeviceController.java +++ b/src/controller/java/src/chip/devicecontroller/ChipDeviceController.java @@ -44,12 +44,11 @@ public static void loadJni() { return; } - /** Returns a new {@link ChipDeviceController} with default parameters. */ - public ChipDeviceController() { - this(ControllerParams.newBuilder().build()); - } - - /** Returns a new {@link ChipDeviceController} with the specified parameters. */ + /** + * Returns a new {@link ChipDeviceController} with the specified parameters. you must set a vendor + * ID, ControllerParams.newBuilder().setControllerVendorId(0xFFF4).build() 0xFFF4 is a test vendor + * ID + */ public ChipDeviceController(ControllerParams params) { deviceControllerPtr = newDeviceController(params); } diff --git a/src/controller/java/src/chip/devicecontroller/ControllerParams.java b/src/controller/java/src/chip/devicecontroller/ControllerParams.java index 42fd04f42907de..b0413cf4a8abf0 100644 --- a/src/controller/java/src/chip/devicecontroller/ControllerParams.java +++ b/src/controller/java/src/chip/devicecontroller/ControllerParams.java @@ -86,7 +86,8 @@ public static Builder newBuilder() { /** * Returns parameters which uses the provided {@code operationalKeyConfig} as its operating - * credentials. + * credentials. You must set a vendor ID, 0xFFF4 is a test vendor ID + * ControllerParams.newBuilder().setControllerVendorId(0xFFF4).build() */ public static Builder newBuilder(OperationalKeyConfig operationalKeyConfig) { return newBuilder() diff --git a/src/controller/python/BUILD.gn b/src/controller/python/BUILD.gn index ab84ff86c864cf..21897af175f92d 100644 --- a/src/controller/python/BUILD.gn +++ b/src/controller/python/BUILD.gn @@ -185,6 +185,7 @@ chip_python_wheel_action("chip-core") { { src_dir = "." sources = [ + "chip/CertificateAuthority.py", "chip/ChipBleBase.py", "chip/ChipBleUtility.py", "chip/ChipBluezMgr.py", diff --git a/src/controller/python/ChipDeviceController-ScriptBinding.cpp b/src/controller/python/ChipDeviceController-ScriptBinding.cpp index 7a4189a52680d2..6e74ded2cd8a32 100644 --- a/src/controller/python/ChipDeviceController-ScriptBinding.cpp +++ b/src/controller/python/ChipDeviceController-ScriptBinding.cpp @@ -100,7 +100,6 @@ chip::Controller::CommissioningParameters sCommissioningParameters; chip::Controller::ScriptDevicePairingDelegate sPairingDelegate; chip::Controller::ScriptPairingDeviceDiscoveryDelegate sPairingDeviceDiscoveryDelegate; -chip::Controller::Python::StorageAdapter * sStorageAdapter = nullptr; chip::Credentials::GroupDataProviderImpl sGroupDataProvider; chip::Credentials::PersistentStorageOpCertStore sPersistentStorageOpCertStore; @@ -111,7 +110,7 @@ chip::NodeId kDefaultLocalDeviceId = chip::kTestControllerNodeId; chip::NodeId kRemoteDeviceId = chip::kTestDeviceNodeId; extern "C" { -ChipError::StorageType pychip_DeviceController_StackInit(); +ChipError::StorageType pychip_DeviceController_StackInit(Controller::Python::StorageAdapter * storageAdapter); ChipError::StorageType pychip_DeviceController_StackShutdown(); ChipError::StorageType pychip_DeviceController_NewDeviceController(chip::Controller::DeviceCommissioner ** outDevCtrl, @@ -205,43 +204,40 @@ chip::ChipError::StorageType pychip_InteractionModel_ShutdownSubscription(Subscr // // Storage // -void pychip_Storage_InitializeStorageAdapter(chip::Controller::Python::PyObject * context, - chip::Controller::Python::SyncSetKeyValueCb setCb, - chip::Controller::Python::SetGetKeyValueCb getCb, - chip::Controller::Python::SyncDeleteKeyValueCb deleteCb); -void pychip_Storage_ShutdownAdapter(); +void * pychip_Storage_InitializeStorageAdapter(chip::Controller::Python::PyObject * context, + chip::Controller::Python::SyncSetKeyValueCb setCb, + chip::Controller::Python::SetGetKeyValueCb getCb, + chip::Controller::Python::SyncDeleteKeyValueCb deleteCb); +void pychip_Storage_ShutdownAdapter(chip::Controller::Python::StorageAdapter * storageAdapter); } -void pychip_Storage_InitializeStorageAdapter(chip::Controller::Python::PyObject * context, - chip::Controller::Python::SyncSetKeyValueCb setCb, - chip::Controller::Python::SetGetKeyValueCb getCb, - chip::Controller::Python::SyncDeleteKeyValueCb deleteCb) +void * pychip_Storage_InitializeStorageAdapter(chip::Controller::Python::PyObject * context, + chip::Controller::Python::SyncSetKeyValueCb setCb, + chip::Controller::Python::SetGetKeyValueCb getCb, + chip::Controller::Python::SyncDeleteKeyValueCb deleteCb) { - sStorageAdapter = new chip::Controller::Python::StorageAdapter(context, setCb, getCb, deleteCb); + auto ptr = new chip::Controller::Python::StorageAdapter(context, setCb, getCb, deleteCb); + return ptr; } -void pychip_Storage_ShutdownAdapter() +void pychip_Storage_ShutdownAdapter(chip::Controller::Python::StorageAdapter * storageAdapter) { - delete sStorageAdapter; + delete storageAdapter; } -chip::Controller::Python::StorageAdapter * pychip_Storage_GetStorageAdapter() +ChipError::StorageType pychip_DeviceController_StackInit(Controller::Python::StorageAdapter * storageAdapter) { - return sStorageAdapter; -} - -ChipError::StorageType pychip_DeviceController_StackInit() -{ - VerifyOrDie(sStorageAdapter != nullptr); + VerifyOrDie(storageAdapter != nullptr); FactoryInitParams factoryParams; - factoryParams.fabricIndependentStorage = sStorageAdapter; - sGroupDataProvider.SetStorageDelegate(sStorageAdapter); + factoryParams.fabricIndependentStorage = storageAdapter; + + sGroupDataProvider.SetStorageDelegate(storageAdapter); ReturnErrorOnFailure(sGroupDataProvider.Init().AsInteger()); factoryParams.groupDataProvider = &sGroupDataProvider; - ReturnErrorOnFailure(sPersistentStorageOpCertStore.Init(sStorageAdapter).AsInteger()); + ReturnErrorOnFailure(sPersistentStorageOpCertStore.Init(storageAdapter).AsInteger()); factoryParams.opCertStore = &sPersistentStorageOpCertStore; factoryParams.enableServerInteractions = true; diff --git a/src/controller/python/OpCredsBinding.cpp b/src/controller/python/OpCredsBinding.cpp index a17f726a314bc4..cb714ae7385fc3 100644 --- a/src/controller/python/OpCredsBinding.cpp +++ b/src/controller/python/OpCredsBinding.cpp @@ -77,6 +77,8 @@ class OperationalCredentialsAdapter : public OperationalCredentialsDelegate return mExampleOpCredsIssuer.GenerateNOCChainAfterValidation(nodeId, fabricId, cats, pubKey, rcac, icac, noc); } + void SetMaximallyLargeCertsUsed(bool enabled) { mExampleOpCredsIssuer.SetMaximallyLargeCertsUsed(enabled); } + private: CHIP_ERROR GenerateNOCChain(const ByteSpan & csrElements, const ByteSpan & csrNonce, const ByteSpan & attestationSignature, const ByteSpan & attestationChallenge, const ByteSpan & DAC, const ByteSpan & PAI, @@ -97,7 +99,6 @@ class OperationalCredentialsAdapter : public OperationalCredentialsDelegate } // namespace Controller } // namespace chip -extern chip::Controller::Python::StorageAdapter * pychip_Storage_GetStorageAdapter(); extern chip::Credentials::GroupDataProviderImpl sGroupDataProvider; extern chip::Controller::ScriptDevicePairingDelegate sPairingDelegate; @@ -291,17 +292,13 @@ struct OpCredsContext void * mPyContext; }; -void * pychip_OpCreds_InitializeDelegate(void * pyContext, uint32_t fabricCredentialsIndex) +void * pychip_OpCreds_InitializeDelegate(void * pyContext, uint32_t fabricCredentialsIndex, + Controller::Python::StorageAdapter * storageAdapter) { auto context = Platform::MakeUnique(); context->mAdapter = Platform::MakeUnique(fabricCredentialsIndex); - if (pychip_Storage_GetStorageAdapter() == nullptr) - { - return nullptr; - } - - if (context->mAdapter->Initialize(*pychip_Storage_GetStorageAdapter()) != CHIP_NO_ERROR) + if (context->mAdapter->Initialize(*storageAdapter) != CHIP_NO_ERROR) { return nullptr; } @@ -326,7 +323,8 @@ void pychip_OnCommissioningStatusUpdate(chip::PeerId peerId, chip::Controller::C ChipError::StorageType pychip_OpCreds_AllocateController(OpCredsContext * context, chip::Controller::DeviceCommissioner ** outDevCtrl, FabricId fabricId, chip::NodeId nodeId, chip::VendorId adminVendorId, - const char * paaTrustStorePath, bool useTestCommissioner) + const char * paaTrustStorePath, bool useTestCommissioner, + CASEAuthTag * caseAuthTags, uint32_t caseAuthTagLen) { ChipLogDetail(Controller, "Creating New Device Controller"); @@ -339,6 +337,7 @@ ChipError::StorageType pychip_OpCreds_AllocateController(OpCredsContext * contex { paaTrustStorePath = "./credentials/development/paa-root-certs"; } + ChipLogProgress(Support, "Using device attestation PAA trust store path %s.", paaTrustStorePath); // Initialize device attestation verifier @@ -361,8 +360,18 @@ ChipError::StorageType pychip_OpCreds_AllocateController(OpCredsContext * contex ReturnErrorCodeIf(!rcac.Alloc(Controller::kMaxCHIPDERCertLength), CHIP_ERROR_NO_MEMORY.AsInteger()); MutableByteSpan rcacSpan(rcac.Get(), Controller::kMaxCHIPDERCertLength); - err = context->mAdapter->GenerateNOCChain(nodeId, fabricId, chip::kUndefinedCATs, ephemeralKey.Pubkey(), rcacSpan, icacSpan, - nocSpan); + CATValues catValues; + + if (caseAuthTagLen > kMaxSubjectCATAttributeCount) + { + ChipLogError(Controller, "Too many of CASE Tags (%u) exceeds kMaxSubjectCATAttributeCount", + static_cast(caseAuthTagLen)); + return CHIP_ERROR_INVALID_ARGUMENT.AsInteger(); + } + + memcpy(catValues.values.data(), caseAuthTags, caseAuthTagLen * sizeof(CASEAuthTag)); + + err = context->mAdapter->GenerateNOCChain(nodeId, fabricId, catValues, ephemeralKey.Pubkey(), rcacSpan, icacSpan, nocSpan); VerifyOrReturnError(err == CHIP_NO_ERROR, err.AsInteger()); Controller::SetupParams initParams; @@ -408,6 +417,15 @@ ChipError::StorageType pychip_OpCreds_AllocateController(OpCredsContext * contex return CHIP_NO_ERROR.AsInteger(); } +ChipError::StorageType pychip_OpCreds_SetMaximallyLargeCertsUsed(OpCredsContext * context, bool enabled) +{ + VerifyOrReturnError(context != nullptr && context->mAdapter != nullptr, CHIP_ERROR_INCORRECT_STATE.AsInteger()); + + context->mAdapter->SetMaximallyLargeCertsUsed(enabled); + + return CHIP_NO_ERROR.AsInteger(); +} + void pychip_OpCreds_FreeDelegate(OpCredsContext * context) { Platform::Delete(context); diff --git a/src/controller/python/chip/CertificateAuthority.py b/src/controller/python/chip/CertificateAuthority.py new file mode 100644 index 00000000000000..7f40f0cd016100 --- /dev/null +++ b/src/controller/python/chip/CertificateAuthority.py @@ -0,0 +1,311 @@ +# +# Copyright (c) 2021 Project CHIP Authors +# All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Needed to use types in type hints before they are fully defined. +from __future__ import annotations + +import ctypes +from dataclasses import dataclass, field +from typing import * +from ctypes import * +from rich.pretty import pprint +import json +import logging +import builtins +import base64 +import chip.exceptions +from chip import ChipDeviceCtrl +from chip import ChipStack +from chip import FabricAdmin +from chip.storage import PersistentStorage + + +class CertificateAuthority: + ''' This represents an operational Root Certificate Authority (CA) with a root key key pair with associated public key (i.e "Root PK") . This manages + a set of FabricAdmin objects, each administering a fabric identified by a unique FabricId scoped to it. + + Each CertificateAuthority instance is tied to a 'CA index' that is used to look-up the list of fabrics already setup previously + in the provided PersistentStorage object. + + >> C++ Binding Details + + Each CertificateAuthority instance is associated with a single instance of the OperationalCredentialsAdapter. This adapter instance implements + the OperationalCredentialsDelegate and is meant to provide a Python adapter to the functions in that delegate. It relies on the in-built + ExampleOperationalCredentialsIssuer to then generate certificate material for the CA. This instance also uses the 'CA index' to + store/look-up the associated credential material from the provided PersistentStorage object. + ''' + @classmethod + def _Handle(cls): + return chip.native.GetLibraryHandle() + + @classmethod + def logger(cls): + return logging.getLogger('CertificateAuthority') + + def __init__(self, chipStack: ChipStack.ChipStack, caIndex: int, persistentStorage: PersistentStorage = None): + ''' Initializes the CertificateAuthority. This will set-up the associated C++ OperationalCredentialsAdapter + as well. + + Arguments: + chipStack: A reference to a chip.ChipStack object. + caIndex: An index used to look-up details about stored credential material and fabrics from persistent storage. + persistentStorage: An optional reference to a PersistentStorage object. If one is provided, it will pick that over + the default PersistentStorage object retrieved from the chipStack. + ''' + self.logger().warning(f"New CertificateAuthority at index {caIndex}") + + self._chipStack = chipStack + self._caIndex = caIndex + + self._Handle().pychip_OpCreds_InitializeDelegate.restype = c_void_p + self._Handle().pychip_OpCreds_InitializeDelegate.argtypes = [ctypes.py_object, ctypes.c_uint32, ctypes.c_void_p] + + self._Handle().pychip_OpCreds_SetMaximallyLargeCertsUsed.restype = c_uint32 + self._Handle().pychip_OpCreds_SetMaximallyLargeCertsUsed.argtypes = [ctypes.c_void_p, ctypes.c_bool] + + if (persistentStorage is None): + persistentStorage = self._chipStack.GetStorageManager() + + self._persistentStorage = persistentStorage + self._maximizeCertChains = False + + self._closure = self._chipStack.Call( + lambda: self._Handle().pychip_OpCreds_InitializeDelegate( + ctypes.py_object(self), ctypes.c_uint32(self._caIndex), self._persistentStorage.GetSdkStorageObject()) + ) + + if (self._closure is None): + raise ValueError("Encountered error initializing OpCreds adapter") + + self._isActive = True + self._activeAdmins = [] + + def LoadFabricAdminsFromStorage(self): + ''' If FabricAdmins had been setup previously, this re-creates them using information from persistent storage. + Otherwise, it initializes the REPL keys in persistent storage to sane defaults. This includes a top-level + key identifying the CA (using the associated CA Index) initialized to an empty list. + + This expects a 'caList' key to be present in the REPL config. + + Each FabricAdmin that is added there-after will insert a dictionary item into that list containing + 'fabricId' and 'vendorId' keys. + ''' + if (not(self._isActive)): + raise RuntimeError("Object isn't active") + + self.logger().warning("Loading fabric admins from storage...") + + caList = self._persistentStorage.GetReplKey(key='caList') + if (str(self._caIndex) not in caList): + caList[str(self._caIndex)] = [] + self._persistentStorage.SetReplKey(key='caList', value=caList) + + fabricAdminMetadataList = self._persistentStorage.GetReplKey(key='caList')[str(self._caIndex)] + for adminMetadata in fabricAdminMetadataList: + self.NewFabricAdmin(vendorId=int(adminMetadata['vendorId']), fabricId=int(adminMetadata['fabricId'])) + + def NewFabricAdmin(self, vendorId: int, fabricId: int): + ''' Creates a new FabricAdmin object initialized with the provided vendorId and fabricId values. + + This will update the REPL keys in persistent storage IF a 'caList' key is present. If it isn't, + will avoid making any updates. + ''' + if (not(self._isActive)): + raise RuntimeError( + f"CertificateAuthority object was previously shutdown and is no longer valid!") + + if (vendorId is None or fabricId is None): + raise ValueError(f"Invalid values for fabricId and vendorId") + + for existingAdmin in self._activeAdmins: + if (existingAdmin.fabricId == fabricId): + raise ValueError(f"Provided fabricId of {fabricId} collides with an existing FabricAdmin instance!") + + fabricAdmin = FabricAdmin.FabricAdmin(self, vendorId=vendorId, fabricId=fabricId) + + caList = self._persistentStorage.GetReplKey('caList') + if (caList is not None): + replFabricEntry = {'fabricId': fabricId, 'vendorId': vendorId} + + if (replFabricEntry not in caList[str(self._caIndex)]): + caList[str(self._caIndex)].append(replFabricEntry) + + self._persistentStorage.SetReplKey(key='caList', value=caList) + + self._activeAdmins.append(fabricAdmin) + + return fabricAdmin + + def Shutdown(self): + ''' Shuts down all active FabricAdmin objects managed by this CertificateAuthority before + shutting itself down. + + You cannot interact with this object there-after. + ''' + if (self._isActive): + for admin in self._activeAdmins: + admin.Shutdown() + + self._activeAdmins = [] + self._Handle().pychip_OpCreds_FreeDelegate.argtypes = [ctypes.c_void_p] + self._chipStack.Call( + lambda: self._Handle().pychip_OpCreds_FreeDelegate( + ctypes.c_void_p(self._closure)) + ) + + self._isActive = False + + def GetOpCredsContext(self): + ''' Returns a pointer to the underlying C++ OperationalCredentialsAdapter. + ''' + if (not(self._isActive)): + raise RuntimeError("Object isn't active") + + return self._closure + + @property + def caIndex(self) -> int: + return self._caIndex + + @property + def adminList(self) -> list[FabricAdmin.FabricAdmin]: + return self._activeAdmins + + @property + def maximizeCertChains(self) -> bool: + return self._maximizeCertChains + + @maximizeCertChains.setter + def maximizeCertChains(self, enabled: bool): + res = self._chipStack.Call( + lambda: self._Handle().pychip_OpCreds_SetMaximallyLargeCertsUsed(ctypes.c_void_p(self._closure), ctypes.c_bool(enabled)) + ) + + if res != 0: + raise self._chipStack.ErrorToException(res) + + self._maximizeCertChains = enabled + + def __del__(self): + self.Shutdown() + + +class CertificateAuthorityManager: + ''' Manages a set of CertificateAuthority instances. + ''' + @classmethod + def _Handle(cls): + return chip.native.GetLibraryHandle() + + @classmethod + def logger(cls): + return logging.getLogger('CertificateAuthorityManager') + + def __init__(self, chipStack: ChipStack.ChipStack, persistentStorage: PersistentStorage = None): + ''' Initializes the manager. + + chipStack: Reference to a chip.ChipStack object that is used to initialize + CertificateAuthority instances. + + persistentStorage: If provided, over-rides the default instance in the provided chipStack + when initializing CertificateAuthority instances. + ''' + self._activeCaIndexList = [] + self._chipStack = chipStack + + if (persistentStorage is None): + persistentStorage = self._chipStack.GetStorageManager() + + self._persistentStorage = persistentStorage + self._activeCaList = [] + self._isActive = True + + def _AllocateNextCaIndex(self): + ''' Allocate the next un-used CA index. + ''' + nextCaIndex = 1 + for ca in self._activeCaList: + nextCaIndex = ca.caIndex + 1 + return nextCaIndex + + def LoadAuthoritiesFromStorage(self): + ''' Loads any existing CertificateAuthority instances present in persistent storage. + If the 'caList' key is not present in the REPL config, it will create one. + ''' + if (not(self._isActive)): + raise RuntimeError("Object is not active") + + self.logger().warning("Loading certificate authorities from storage...") + + # + # Persist details to storage (read modify write). + # + caList = self._persistentStorage.GetReplKey('caList') + if (caList is None): + caList = {} + + for caIndex in caList: + ca = self.NewCertificateAuthority(int(caIndex)) + ca.LoadFabricAdminsFromStorage() + + def NewCertificateAuthority(self, caIndex: int = None, maximizeCertChains: bool = False): + ''' Creates a new CertificateAuthority instance with the provided CA Index and the PersistentStorage + instance previously setup in the constructor. + + This will write to the REPL keys in persistent storage to setup an empty list for the 'CA Index' + item. + ''' + if (not(self._isActive)): + raise RuntimeError("Object is not active") + + if (caIndex is None): + caIndex = self._AllocateNextCaIndex() + + # + # Persist details to storage (read modify write). + # + caList = self._persistentStorage.GetReplKey('caList') + if (caList is None): + caList = {} + + if (str(caIndex) not in caList): + caList[str(caIndex)] = [] + self._persistentStorage.SetReplKey(key='caList', value=caList) + + ca = CertificateAuthority(chipStack=self._chipStack, caIndex=caIndex, persistentStorage=self._persistentStorage) + ca.maximizeCertChains = maximizeCertChains + self._activeCaList.append(ca) + + return ca + + def Shutdown(self): + ''' Shuts down all active CertificateAuthority instances tracked by this manager, before shutting itself down. + + You cannot interact with this object there-after. + ''' + for ca in self._activeCaList: + ca.Shutdown() + + self._activeCaList = [] + self._isActive = False + + @property + def activeCaList(self) -> List[CertificateAuthority]: + return self._activeCaList + + def __del__(self): + self.Shutdown() diff --git a/src/controller/python/chip/ChipDeviceCtrl.py b/src/controller/python/chip/ChipDeviceCtrl.py index 30064a1695ace7..8e11f27a953b16 100644 --- a/src/controller/python/chip/ChipDeviceCtrl.py +++ b/src/controller/python/chip/ChipDeviceCtrl.py @@ -157,7 +157,7 @@ class DiscoveryFilterType(enum.IntEnum): class ChipDeviceController(): activeList = set() - def __init__(self, opCredsContext: ctypes.c_void_p, fabricId: int, nodeId: int, adminVendorId: int, paaTrustStorePath: str = "", useTestCommissioner: bool = False, fabricAdmin: FabricAdmin = None, name: str = None): + def __init__(self, opCredsContext: ctypes.c_void_p, fabricId: int, nodeId: int, adminVendorId: int, catTags: typing.List[int] = [], paaTrustStorePath: str = "", useTestCommissioner: bool = False, fabricAdmin: FabricAdmin = None, name: str = None): self.state = DCState.NOT_INITIALIZED self.devCtrl = None self._ChipStack = builtins.chipStack @@ -169,9 +169,18 @@ def __init__(self, opCredsContext: ctypes.c_void_p, fabricId: int, nodeId: int, devCtrl = c_void_p(None) + c_catTags = (c_uint32 * len(catTags))() + + for i, item in enumerate(catTags): + c_catTags[i] = item + + self._dmLib.pychip_OpCreds_AllocateController.argtypes = [c_void_p, POINTER( + c_void_p), c_uint64, c_uint64, c_uint16, c_char_p, c_bool, POINTER(c_uint32), c_uint32] + self._dmLib.pychip_OpCreds_AllocateController.restype = c_uint32 + res = self._ChipStack.Call( - lambda: self._dmLib.pychip_OpCreds_AllocateController(ctypes.c_void_p( - opCredsContext), pointer(devCtrl), fabricId, nodeId, adminVendorId, ctypes.c_char_p(None if len(paaTrustStorePath) == 0 else str.encode(paaTrustStorePath)), useTestCommissioner) + lambda: self._dmLib.pychip_OpCreds_AllocateController(c_void_p( + opCredsContext), pointer(devCtrl), fabricId, nodeId, adminVendorId, c_char_p(None if len(paaTrustStorePath) == 0 else str.encode(paaTrustStorePath)), useTestCommissioner, c_catTags, len(catTags)) ) if res != 0: @@ -181,10 +190,10 @@ def __init__(self, opCredsContext: ctypes.c_void_p, fabricId: int, nodeId: int, self._fabricAdmin = fabricAdmin self._fabricId = fabricId self._nodeId = nodeId - self._adminIndex = fabricAdmin.adminIndex + self._caIndex = fabricAdmin.caIndex if name is None: - self._name = "adminIndex(%x)/fabricId(0x%016X)/nodeId(0x%016X)" % (fabricAdmin.adminIndex, fabricId, nodeId) + self._name = "caIndex(%x)/fabricId(0x%016X)/nodeId(0x%016X)" % (fabricAdmin.caIndex, fabricId, nodeId) else: self._name = name @@ -233,7 +242,7 @@ def HandlePASEEstablishmentComplete(err): self.devCtrl, self.cbHandleCommissioningCompleteFunct) self.state = DCState.IDLE - self.isActive = True + self._isActive = True # Validate FabricID/NodeID followed from NOC Chain self._fabricId = self.GetFabricIdInternal() @@ -249,17 +258,15 @@ def fabricAdmin(self) -> FabricAdmin: @property def nodeId(self) -> int: - self.CheckIsActive() return self._nodeId @property def fabricId(self) -> int: - self.CheckIsActive() return self._fabricId @property - def adminIndex(self) -> int: - return self._adminIndex + def caIndex(self) -> int: + return self._caIndex @property def name(self) -> str: @@ -269,11 +276,15 @@ def name(self) -> str: def name(self, new_name: str): self._name = new_name + @property + def isActive(self) -> bool: + return self._isActive + def Shutdown(self): ''' Shuts down this controller and reclaims any used resources, including the bound C++ constructor instance in the SDK. ''' - if (self.isActive): + if (self._isActive): if self.devCtrl != None: self._ChipStack.Call( lambda: self._dmLib.pychip_DeviceController_DeleteDeviceController( @@ -282,7 +293,7 @@ def Shutdown(self): self.devCtrl = None ChipDeviceController.activeList.remove(self) - self.isActive = False + self._isActive = False def ShutdownAll(): ''' Shut down all active controllers and reclaim any used resources. @@ -304,7 +315,7 @@ def ShutdownAll(): ChipDeviceController.activeList.clear() def CheckIsActive(self): - if (not self.isActive): + if (not self._isActive): raise RuntimeError( "DeviceCtrl instance was already shutdown previously!") diff --git a/src/controller/python/chip/ChipReplStartup.py b/src/controller/python/chip/ChipReplStartup.py index cb38cc37032c92..519c292ba9d9d8 100644 --- a/src/controller/python/chip/ChipReplStartup.py +++ b/src/controller/python/chip/ChipReplStartup.py @@ -12,6 +12,7 @@ import argparse import builtins import chip.FabricAdmin +import chip.CertificateAuthority import chip.native from chip.utils import CommissioningBuildingBlocks import atexit @@ -19,60 +20,6 @@ _fabricAdmins = None -def LoadFabricAdmins(): - global _fabricAdmins - - # - # Shutdown any fabric admins we had before as well as active controllers. This ensures we - # relinquish some resources if this is called multiple times (e.g in a Jupyter notebook) - # - chip.FabricAdmin.FabricAdmin.ShutdownAll() - ChipDeviceCtrl.ChipDeviceController.ShutdownAll() - - _fabricAdmins = [] - storageMgr = builtins.chipStack.GetStorageManager() - - console = Console() - - try: - adminList = storageMgr.GetReplKey('fabricAdmins') - except KeyError: - console.print( - "\n[purple]No previous fabric admins discovered in persistent storage - creating a new one...") - - # - # Initialite a FabricAdmin with a VendorID of TestVendor1 (0xfff1) - # - _fabricAdmins.append(chip.FabricAdmin.FabricAdmin(0XFFF1)) - return _fabricAdmins - - console.print('\n') - - for k in adminList: - console.print( - f"[purple]Restoring FabricAdmin from storage to manage FabricId {adminList[k]['fabricId']}, AdminIndex {k}...") - _fabricAdmins.append(chip.FabricAdmin.FabricAdmin(vendorId=int(adminList[k]['vendorId']), - fabricId=adminList[k]['fabricId'], adminIndex=int(k))) - - console.print( - '\n[blue]Fabric Admins have been loaded and are available at [red]fabricAdmins') - return _fabricAdmins - - -def CreateDefaultDeviceController(): - global _fabricAdmins - - if (len(_fabricAdmins) == 0): - raise RuntimeError("Was called before calling LoadFabricAdmins()") - - console = Console() - - console.print('\n') - console.print( - f"[purple]Creating default device controller on fabric {_fabricAdmins[0]._fabricId}...") - return _fabricAdmins[0].NewController() - - def ReplInit(debug): # # Install the pretty printer that rich provides to replace the existing @@ -105,9 +52,11 @@ def ReplInit(debug): logging.getLogger().setLevel(logging.WARN) +certificateAuthorityManager = None + + def StackShutdown(): - chip.FabricAdmin.FabricAdmin.ShutdownAll() - ChipDeviceCtrl.ChipDeviceController.ShutdownAll() + certificateAuthorityManager.Shutdown() builtins.chipStack.Shutdown() @@ -145,12 +94,30 @@ def mattersetdebug(enableDebugMode: bool = True): ReplInit(args.debug) chipStack = ChipStack(persistentStoragePath=args.storagepath) -fabricAdmins = LoadFabricAdmins() -devCtrl = CreateDefaultDeviceController() +certificateAuthorityManager = chip.CertificateAuthority.CertificateAuthorityManager(chipStack, chipStack.GetStorageManager()) +certificateAuthorityManager.LoadAuthoritiesFromStorage() + +if (len(certificateAuthorityManager.activeCaList) == 0): + ca = certificateAuthorityManager.NewCertificateAuthority() + ca.NewFabricAdmin(vendorId=0xFFF1, fabricId=1) +elif (len(certificateAuthorityManager.activeCaList[0].adminList) == 0): + certificateAuthorityManager.activeCaList[0].NewFabricAdmin(vendorId=0xFFF1, fabricId=1) + +caList = certificateAuthorityManager.activeCaList + +devCtrl = caList[0].adminList[0].NewController() builtins.devCtrl = devCtrl atexit.register(StackShutdown) console.print( - '\n\n[blue]Default CHIP Device Controller has been initialized to manage [bold red]fabricAdmins[0][blue], and is available as [bold red]devCtrl') + '\n\n[blue]The following objects have been created:') + +console.print( + '''\t[red]certificateAuthorityManager[blue]:\tManages a list of CertificateAuthority instances. +\t[red]caList[blue]:\t\t\t\tThe list of CertificateAuthority instances. +\t[red]caList\[n]\[m][blue]:\t\t\tA specific FabricAdmin object at index m for the nth CertificateAuthority instance.''') + +console.print( + f'\n\n[blue]Default CHIP Device Controller (NodeId: {devCtrl.nodeId}): has been initialized to manage [bold red]caList[0].adminList[0][blue] (FabricId = {caList[0].adminList[0].fabricId}), and is available as [bold red]devCtrl') diff --git a/src/controller/python/chip/ChipStack.py b/src/controller/python/chip/ChipStack.py index 5120e68fb8b3b2..cfdeeaef9a5785 100644 --- a/src/controller/python/chip/ChipStack.py +++ b/src/controller/python/chip/ChipStack.py @@ -266,7 +266,7 @@ def HandleChipThreadRun(callback): self._persistentStorage = PersistentStorage(persistentStoragePath) # Initialize the chip stack. - res = self._ChipStackLib.pychip_DeviceController_StackInit() + res = self._ChipStackLib.pychip_DeviceController_StackInit(self._persistentStorage.GetSdkStorageObject()) if res != 0: raise self.ErrorToException(res) @@ -440,7 +440,7 @@ def _loadLib(self): self._ChipStackLib = chip.native.GetLibraryHandle() self._chipDLLPath = chip.native.FindNativeLibraryPath() - self._ChipStackLib.pychip_DeviceController_StackInit.argtypes = [] + self._ChipStackLib.pychip_DeviceController_StackInit.argtypes = [c_void_p] self._ChipStackLib.pychip_DeviceController_StackInit.restype = c_uint32 self._ChipStackLib.pychip_DeviceController_StackShutdown.argtypes = [] self._ChipStackLib.pychip_DeviceController_StackShutdown.restype = c_uint32 diff --git a/src/controller/python/chip/FabricAdmin.py b/src/controller/python/chip/FabricAdmin.py index d44175819ba16a..97a729035f811e 100644 --- a/src/controller/python/chip/FabricAdmin.py +++ b/src/controller/python/chip/FabricAdmin.py @@ -30,70 +30,29 @@ import chip.exceptions from chip import ChipDeviceCtrl import copy +from .storage import PersistentStorage +from chip.CertificateAuthority import CertificateAuthority class FabricAdmin: - ''' Administers a specific fabric as identified by the tuple of RCAC subject public key and Fabric ID. - The Fabric ID can be passed into the constructor while the RCAC and ICAC are generated. - The Fabric ID *does not* have to be unique across multiple FabricAdmin instances as - it is scoped to the key pair used by the root CA and whose public key is in the RCAC. - - Each admin is identified by an 'admin index' that is unique to the running - process. This is used to store credential information to disk so that - it can be easily loaded later if neccessary (see 'Persistence' below for more details) - - When vending ChipDeviceController instances on a given fabric, each controller instance - is associated with a unique fabric index. In the underlying FabricTable, each FabricInfo - instance can be treated as unique identities that can collide on the same logical fabric. - - >> C++ Binding Details - - Each instance of the fabric admin is associated with a single instance - of the OperationalCredentialsAdapter. This adapter instance implements - the OperationalCredentialsDelegate and is meant to provide a Python - adapter to the functions in that delegate so that the fabric admin - can in turn, provide users the ability to generate their own NOCs for devices - on the network (not implemented yet). For now, it relies on the in-built - ExampleOperationalCredentialsIssuer to do that. - - TODO: Add support for FabricAdmin to permit callers to hook up their own GenerateNOC - logic. - - >> Persistence - - Specifically, each instance persists its fabric ID and admin - index to storage. This is in addition to the persistence built into the ExampleOperationalCredentialsIssuer that persists details - about the RCAC/ICAC and associated keys as well. This facilitates re-construction of a fabric admin on subsequent - boot for a given fabric and ensuring it automatically picks up the right ICAC/RCAC details as well. + ''' Administers a fabric associated with a unique FabricID under a given CertificateAuthority + instance. ''' - - activeAdminIndexList = set() - activeAdmins = set() - @classmethod def _Handle(cls): return chip.native.GetLibraryHandle() - def AllocateNextAdminIndex(self): - ''' Allocate the next un-used admin index. - ''' - nextAdminIndex = 1 - while nextAdminIndex in FabricAdmin.activeAdminIndexList: - nextAdminIndex = nextAdminIndex + 1 - return nextAdminIndex - - def __init__(self, vendorId: int, adminIndex: int = None, fabricId: int = 1): - ''' Creates a valid FabricAdmin object with valid RCAC/ICAC, and registers itself as an OperationalCredentialsDelegate - for other parts of the system (notably, DeviceController) to vend NOCs. - - vendorId: Valid operational Vendor ID associated with this fabric. - adminIndex: Local index to be associated with this fabric. This is NOT the fabric index. Each controller on the fabric - is assigned a unique fabric index. + @classmethod + def logger(cls): + return logging.getLogger('FabricAdmin') - If omitted, one will be automatically assigned. + def __init__(self, certificateAuthority: CertificateAuthority, vendorId: int, fabricId: int = 1): + ''' Initializes the object. - fabricId: Fabric ID to be associated with this fabric. This is scoped to the public key of the resultant - root generated by the underlying ExampleOperationalCredentialsIssuer. + certificateAuthority: CertificateAuthority instance that will be used to vend NOCs for both + DeviceControllers and commissionable nodes on this fabric. + vendorId: Valid operational Vendor ID associated with this fabric. + fabricId: Fabric ID to be associated with this fabric. ''' self._handle = chip.native.GetLibraryHandle() @@ -101,104 +60,69 @@ def __init__(self, vendorId: int, adminIndex: int = None, fabricId: int = 1): raise ValueError( f"Invalid VendorID ({vendorId}) provided!") + if (fabricId is None or fabricId == 0): + raise ValueError( + f"Invalid FabricId ({fabricId}) provided!") + self._vendorId = vendorId self._fabricId = fabricId + self._certificateAuthority = certificateAuthority - if (adminIndex is None): - self._adminIndex = self.AllocateNextAdminIndex() - else: - if (adminIndex in FabricAdmin.activeAdminIndexList): - raise ValueError( - f"AdminIndex {adminIndex} is already being managed by an existing FabricAdmin object!") - - self._adminIndex = adminIndex - - FabricAdmin.activeAdminIndexList.add(self._adminIndex) - - print( - f"New FabricAdmin: FabricId: 0x{self._fabricId:016X}, AdminIndex: {self._adminIndex}, VendorId = 0x{self.vendorId:04X}") - self._Handle().pychip_OpCreds_InitializeDelegate.restype = c_void_p - - self.closure = builtins.chipStack.Call( - lambda: self._Handle().pychip_OpCreds_InitializeDelegate( - ctypes.py_object(self), ctypes.c_uint32(self._adminIndex)) - ) - - if (self.closure is None): - raise ValueError("Encountered error initializing OpCreds adapter") + self.logger().warning(f"New FabricAdmin: FabricId: 0x{self._fabricId:016X}, VendorId = 0x{self.vendorId:04X}") - # - # Persist details to storage (read modify write). - # - try: - adminList = builtins.chipStack.GetStorageManager().GetReplKey('fabricAdmins') - except KeyError: - adminList = {str(self._adminIndex): {'fabricId': self._fabricId}} - builtins.chipStack.GetStorageManager().SetReplKey('fabricAdmins', adminList) + self._isActive = True + self._activeControllers = [] - adminList[str(self._adminIndex)] = {'fabricId': self._fabricId, 'vendorId': self.vendorId} - builtins.chipStack.GetStorageManager().SetReplKey('fabricAdmins', adminList) + def NewController(self, nodeId: int = None, paaTrustStorePath: str = "", useTestCommissioner: bool = False, catTags: List[int] = []): + ''' Create a new chip.ChipDeviceCtrl.ChipDeviceController instance on this fabric. - self._isActive = True - self.nextControllerId = 112233 + When vending ChipDeviceController instances on a given fabric, each controller instance + is associated with a unique fabric index local to the running process. In the underlying FabricTable, each FabricInfo + instance can be treated as unique identities that can collide on the same logical fabric. - FabricAdmin.activeAdmins.add(self) + nodeId: NodeID to be assigned to the controller. Automatically allocates one starting from 112233 if one + is not provided. - def NewController(self, nodeId: int = None, paaTrustStorePath: str = "", useTestCommissioner: bool = False): - ''' Vend a new controller on this fabric seeded with the right fabric details. + paaTrustStorePath: Path to the PAA trust store. If one isn't provided, a suitable default is selected. + useTestCommissioner: If a test commmisioner is to be created. + catTags: A list of 32-bit CAT tags that will added to the NOC generated for this controller. ''' if (not(self._isActive)): raise RuntimeError( f"FabricAdmin object was previously shutdown and is no longer valid!") + nodeIdList = [controller.nodeId for controller in self._activeControllers if controller.isActive] if (nodeId is None): - nodeId = self.nextControllerId - self.nextControllerId = self.nextControllerId + 1 - - print( - f"Allocating new controller with FabricId: 0x{self._fabricId:016X}, NodeId: 0x{nodeId:016X}") - - controller = ChipDeviceCtrl.ChipDeviceController( - self.closure, self._fabricId, nodeId, self.vendorId, paaTrustStorePath, useTestCommissioner, fabricAdmin=self) - return controller + if (len(nodeIdList) != 0): + nodeId = max(nodeIdList) + 1 + else: + nodeId = 112233 + else: + if (nodeId in nodeIdList): + raise RuntimeError(f"Provided NodeId {nodeId} collides with an existing controller instance!") - def ShutdownAll(): - ''' Shuts down all active fabrics, but without deleting them from storage. - ''' - activeAdmins = copy.copy(FabricAdmin.activeAdmins) + self.logger().warning( + f"Allocating new controller with CaIndex: {self._certificateAuthority.caIndex}, FabricId: 0x{self._fabricId:016X}, NodeId: 0x{nodeId:016X}, CatTags: {catTags}") - for admin in activeAdmins: - admin.Shutdown(False) + controller = ChipDeviceCtrl.ChipDeviceController(opCredsContext=self._certificateAuthority.GetOpCredsContext(), fabricId=self._fabricId, nodeId=nodeId, + adminVendorId=self._vendorId, paaTrustStorePath=paaTrustStorePath, useTestCommissioner=useTestCommissioner, fabricAdmin=self, catTags=catTags) - FabricAdmin.activeAdmins.clear() + self._activeControllers.append(controller) + return controller - def Shutdown(self, deleteFromStorage: bool = True): - ''' Shutdown this fabric and free up its resources. This is important since relying - solely on the destructor will not guarantee relishining of C++-side resources. + def Shutdown(self): + ''' Shutdown all active controllers on the fabric before shutting down the fabric itself. - deleteFromStorage: Whether to delete this fabric's details from persistent storage. + You cannot interact with this object there-after. ''' if (self._isActive): - builtins.chipStack.Call( - lambda: self._Handle().pychip_OpCreds_FreeDelegate( - ctypes.c_void_p(self.closure)) - ) - - FabricAdmin.activeAdminIndexList.remove(self._adminIndex) - - if (deleteFromStorage): - adminList = builtins.chipStack.GetStorageManager().GetReplKey('fabricAdmins') - del(adminList[str(self._adminIndex)]) - if (len(adminList) == 0): - adminList = None + for controller in self._activeControllers: + controller.Shutdown() - builtins.chipStack.GetStorageManager().SetReplKey('fabricAdmins', adminList) - - FabricAdmin.activeAdmins.remove(self) self._isActive = False def __del__(self): - self.Shutdown(False) + self.Shutdown() @property def vendorId(self) -> int: @@ -209,5 +133,9 @@ def fabricId(self) -> int: return self._fabricId @property - def adminIndex(self) -> int: - return self._adminIndex + def caIndex(self) -> int: + return self._certificateAuthority.caIndex + + @property + def certificateAuthority(self) -> CertificateAuthority: + return self._certificateAuthority diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py index 4397258fed9dcb..d8032d8f508063 100644 --- a/src/controller/python/chip/clusters/Objects.py +++ b/src/controller/python/chip/clusters/Objects.py @@ -29040,6 +29040,25 @@ def descriptor(cls) -> ClusterObjectDescriptor: numCallsToFail: 'uint' = 0 takeMutex: 'bool' = False + @dataclass + class FailRandomlyAtFault(ClusterCommand): + cluster_id: typing.ClassVar[int] = 0xFFF1FC06 + command_id: typing.ClassVar[int] = 0x0001 + is_client: typing.ClassVar[bool] = True + + @ChipUtility.classproperty + def descriptor(cls) -> ClusterObjectDescriptor: + return ClusterObjectDescriptor( + Fields = [ + ClusterObjectFieldDescriptor(Label="type", Tag=0, Type=FaultInjection.Enums.FaultType), + ClusterObjectFieldDescriptor(Label="id", Tag=1, Type=uint), + ClusterObjectFieldDescriptor(Label="percentage", Tag=2, Type=uint), + ]) + + type: 'FaultInjection.Enums.FaultType' = 0 + id: 'uint' = 0 + percentage: 'uint' = 0 + class Attributes: @dataclass diff --git a/src/controller/python/chip/storage/__init__.py b/src/controller/python/chip/storage/__init__.py index 362abda084075c..ad51c75754f9f4 100644 --- a/src/controller/python/chip/storage/__init__.py +++ b/src/controller/python/chip/storage/__init__.py @@ -51,11 +51,7 @@ def _OnSyncGetKeyValueCb(storageObj, key: str, value, size, is_found): this method to the requirements of PersistentStorageDelegate::SyncGetKeyValue. ''' - try: - keyValue = storageObj.GetSdkKey(key.decode("utf-8")) - except Exception as ex: - keyValue = None - + keyValue = storageObj.GetSdkKey(key.decode("utf-8")) if (keyValue is not None): sizeOfValue = size[0] sizeToCopy = min(sizeOfValue, len(keyValue)) @@ -85,37 +81,94 @@ def _OnSyncDeleteKeyValueCb(storageObj, key): class PersistentStorage: + ''' Class that provided persistent storage to back both native Python and + SDK configuration key/value pairs. + + Configuration native to the Python libraries is organized under the top-level + 'repl-config' key while configuration native to the SDK and owned by the various + C++ logic is organized under the top-level 'sdk-config' key. + + This interfaces with a C++ adapter that implements the PersistentStorageDelegate interface + and can be passed into C++ logic that needs an instance of that interface. + ''' + @classmethod + def logger(cls): + return logging.getLogger('PersistentStorage') + + def __init__(self, path: str = None, jsonData: Dict = None): + ''' Initializes the object with either a path to a JSON file that contains the configuration OR + a JSON dictionary that contains an in-memory representation of the configuration. + + In either case, if there are no valid configurations that already exist, empty Python + and SDK configuration records will be created upon construction. + ''' + if (path is None and jsonData is None): + raise ValueError("Need to provide at least one of path or jsonData") + + if (path is not None and jsonData is not None): + raise ValueError("Can't provide both a valid path and jsonData") + + if (path is not None): + self.logger().warn(f"Initializing persistent storage from file: {path}") + else: + self.logger().warn(f"Initializing persistent storage from dict") - def __init__(self, path: str): - self._path = path self._handle = chip.native.GetLibraryHandle() self._isActive = True + self._path = path - try: - self._file = open(path, 'r') - self._file.seek(0, 2) - size = self._file.tell() - self._file.seek(0) + if (self._path): + try: + self._file = open(path, 'r') + self._file.seek(0, 2) + size = self._file.tell() + self._file.seek(0) - if (size != 0): - logging.critical(f"Loading configuration from {path}...") - self.jsonData = json.load(self._file) - else: - logging.warn( - f"No valid configuration present at {path} - clearing out configuration") - self.jsonData = {'repl-config': {}, 'sdk-config': {}} + if (size != 0): + self.logger().warn(f"Loading configuration from {path}...") + self._jsonData = json.load(self._file) + else: + self._jsonData = {} - except Exception as ex: - logging.error(ex) - logging.warn( - f"Could not load configuration from {path} - resetting configuration...") - self.jsonData = {'repl-config': {}, 'sdk-config': {}} + except Exception as ex: + logging.error(ex) + logging.critical(f"Could not load configuration from {path} - resetting configuration...") + self._jsonData = {} + else: + self._jsonData = jsonData + + if ('sdk-config' not in self._jsonData): + logging.warn(f"No valid SDK configuration present - clearing out configuration") + self._jsonData['sdk-config'] = {} + + if ('repl-config' not in self._jsonData): + logging.warn(f"No valid REPL configuration present - clearing out configuration") + self._jsonData['repl-config'] = {} + # Clear out the file so that calling 'Commit' will re-open the file at that time in write mode. self._file = None - self._handle.pychip_Storage_InitializeStorageAdapter(ctypes.py_object( + + self._handle.pychip_Storage_InitializeStorageAdapter.restype = c_void_p + self._handle.pychip_Storage_InitializeStorageAdapter.argtypes = [ctypes.py_object, + _SyncSetKeyValueCbFunct, _SyncGetKeyValueCbFunct, _SyncDeleteKeyValueCbFunct] + + self._closure = self._handle.pychip_Storage_InitializeStorageAdapter(ctypes.py_object( self), _OnSyncSetKeyValueCb, _OnSyncGetKeyValueCb, _OnSyncDeleteKeyValueCb) - def Sync(self): + def GetSdkStorageObject(self): + ''' Returns a ctypes c_void_p reference to the SDK-side adapter instance. + ''' + return self._closure + + def Commit(self): + ''' Commits the cached JSON configuration to file (if one was provided in the constructor). + Otherwise, this is a no-op. + ''' + self.logger().info("Committing...") + + if (self._path is None): + return + if (self._file is None): try: self._file = open(self._path, 'w') @@ -126,28 +179,38 @@ def Sync(self): return self._file.seek(0) - json.dump(self.jsonData, self._file, ensure_ascii=True, indent=4) + json.dump(self._jsonData, self._file, ensure_ascii=True, indent=4) self._file.truncate() self._file.flush() def SetReplKey(self, key: str, value): - logging.info(f"SetReplKey: {key} = {value}") + ''' Set a REPL key to a specific value. Creates the key if one doesn't exist already. + ''' + self.logger().info(f"SetReplKey: {key} = {value}") if (key is None or key == ''): raise ValueError("Invalid Key") if (value is None): - del(self.jsonData['repl-config'][key]) + del(self._jsonData['repl-config'][key]) else: - self.jsonData['repl-config'][key] = value + self._jsonData['repl-config'][key] = value - self.Sync() + self.Commit() def GetReplKey(self, key: str): - return copy.deepcopy(self.jsonData['repl-config'][key]) + ''' Retrieves the value of a REPL key. Returns 'None' if the key + doesn't exist. + ''' + if (key not in self._jsonData['repl-config']): + return None + + return copy.deepcopy(self._jsonData['repl-config'][key]) def SetSdkKey(self, key: str, value: bytes): - logging.info(f"SetSdkKey: {key} = {value}") + ''' Set an SDK key to a specific value. Creates the key if one doesn't exist already. + ''' + self.logger().info(f"SetSdkKey: {key} = {value}") if (key is None or key == ''): raise ValueError("Invalid Key") @@ -155,28 +218,45 @@ def SetSdkKey(self, key: str, value: bytes): if (value is None): raise ValueError('value is not expected to be None') else: - self.jsonData['sdk-config'][key] = base64.b64encode( + self._jsonData['sdk-config'][key] = base64.b64encode( value).decode("utf-8") - self.Sync() + self.Commit() def GetSdkKey(self, key: str): - return base64.b64decode(self.jsonData['sdk-config'][key]) + ''' Returns the SDK key if one exist. Otherwise, returns 'None'. + ''' + if (key not in self._jsonData['sdk-config']): + return None + + return base64.b64decode(self._jsonData['sdk-config'][key]) def DeleteSdkKey(self, key: str): - del(self.jsonData['sdk-config'][key]) - self.Sync() + ''' Deletes an SDK key if one exists. + ''' + self.logger().info(f"DeleteSdkKey: {key}") - def GetUnderlyingStorageAdapter(self): - return self._storageAdapterObj + del(self._jsonData['sdk-config'][key]) + self.Commit() def Shutdown(self): + ''' Shuts down the object by free'ing up the associated adapter instance. + + You cannot interact with this object there-after. + ''' + self._handle.pychip_Storage_ShutdownAdapter.argtypes = [c_void_p] builtins.chipStack.Call( - lambda: self._handle.pychip_Storage_ShutdownAdapter() + lambda: self._handle.pychip_Storage_ShutdownAdapter(self._closure) ) self._isActive = False + @property + def jsonData(self) -> Dict: + ''' Returns a copy of the internal cached JSON data. + ''' + return copy.deepcopy(self._jsonData) + def __del__(self): if (self._isActive): builtins.chipStack.Call( diff --git a/src/controller/python/chip/utils/CommissioningBuildingBlocks.py b/src/controller/python/chip/utils/CommissioningBuildingBlocks.py index ae4da4a4ee1fa8..20dbcd6441a746 100644 --- a/src/controller/python/chip/utils/CommissioningBuildingBlocks.py +++ b/src/controller/python/chip/utils/CommissioningBuildingBlocks.py @@ -30,7 +30,7 @@ _UINT16_MAX = 65535 -logger = logging.getLogger() +logger = logging.getLogger('CommissioningBuildingBlocks') async def _IsNodeInFabricList(devCtrl, nodeId): @@ -43,7 +43,7 @@ async def _IsNodeInFabricList(devCtrl, nodeId): return False -async def GrantPrivilege(adminCtrl: ChipDeviceController, grantedCtrl: ChipDeviceController, privilege: Clusters.AccessControl.Enums.Privilege, targetNodeId: int): +async def GrantPrivilege(adminCtrl: ChipDeviceController, grantedCtrl: ChipDeviceController, privilege: Clusters.AccessControl.Enums.Privilege, targetNodeId: int, targetCatTags: typing.List[int] = []): ''' Given an existing controller with admin privileges over a target node, grants the specified privilege to the new ChipDeviceController instance to the entire Node. This is achieved by updating the ACL entries on the target. @@ -53,20 +53,29 @@ async def GrantPrivilege(adminCtrl: ChipDeviceController, grantedCtrl: ChipDevic Args: adminCtrl: ChipDeviceController instance with admin privileges over the target node grantedCtrl: ChipDeviceController instance that is being granted the new privilege. - privilege: Privilege to grant to the granted controller + privilege: Privilege to grant to the granted controller. If None, no privilege is granted. targetNodeId: Target node to which the controller is granted privilege. + targetCatTag: Target 32-bit CAT tag that is granted privilege. If provided, this will be used in the subject list instead of the nodeid of that of grantedCtrl. ''' - data = await adminCtrl.ReadAttribute(targetNodeId, [(Clusters.AccessControl.Attributes.Acl)]) if 0 not in data: raise ValueError("Did not get back any data (possible cause: controller has no access..") currentAcls = data[0][Clusters.AccessControl][Clusters.AccessControl.Attributes.Acl] + if len(targetCatTags) != 0: + # Convert to an ACL subject format in CAT range + targetSubjects = [tag | 0xFFFF_FFFD_0000_0000 for tag in targetCatTags] + else: + targetSubjects = [grantedCtrl.nodeId] + + if (len(targetSubjects) > 4): + raise ValueError(f"List of target subjects of len {len(targetSubjects)} exceeeded the minima of 4!") + # Step 1: Wipe the subject from all existing ACLs. for acl in currentAcls: if (acl.subjects != NullValue): - acl.subjects = [subject for subject in acl.subjects if subject != grantedCtrl.nodeId] + acl.subjects = [subject for subject in acl.subjects if subject not in targetSubjects] if (privilege): addedPrivilege = False @@ -75,9 +84,11 @@ async def GrantPrivilege(adminCtrl: ChipDeviceController, grantedCtrl: ChipDevic # the existing privilege in that entry matches our desired privilege. for acl in currentAcls: if acl.privilege == privilege: - if grantedCtrl.nodeId not in acl.subjects: - acl.subjects.append(grantedCtrl.nodeId) + subjectSet = set(acl.subjects) + subjectSet.update(targetSubjects) + acl.subjects = list(subjectSet) addedPrivilege = True + break # Step 3: If there isn't an existing entry to add to, make a new one. if (not(addedPrivilege)): @@ -86,14 +97,16 @@ async def GrantPrivilege(adminCtrl: ChipDeviceController, grantedCtrl: ChipDevic f"Cannot add another ACL entry to grant privilege to existing count of {currentAcls} ACLs -- will exceed minimas!") currentAcls.append(Clusters.AccessControl.Structs.AccessControlEntry(privilege=privilege, authMode=Clusters.AccessControl.Enums.AuthMode.kCase, - subjects=[grantedCtrl.nodeId])) + subjects=targetSubjects)) # Step 4: Prune ACLs which have empty subjects. currentAcls = [acl for acl in currentAcls if acl.subjects != NullValue and len(acl.subjects) != 0] + + logger.info(f'GrantPrivilege: Writing acls: {currentAcls}') await adminCtrl.WriteAttribute(targetNodeId, [(0, Clusters.AccessControl.Attributes.Acl(currentAcls))]) -async def CreateControllersOnFabric(fabricAdmin: FabricAdmin, adminDevCtrl: ChipDeviceController, controllerNodeIds: typing.List[int], privilege: Clusters.AccessControl.Enums.Privilege, targetNodeId: int) -> typing.List[ChipDeviceController]: +async def CreateControllersOnFabric(fabricAdmin: FabricAdmin, adminDevCtrl: ChipDeviceController, controllerNodeIds: typing.List[int], privilege: Clusters.AccessControl.Enums.Privilege, targetNodeId: int, catTags: typing.List[int] = []) -> typing.List[ChipDeviceController]: ''' Create new ChipDeviceController instances on a given fabric with a specific privilege on a target node. Args: @@ -102,13 +115,14 @@ async def CreateControllersOnFabric(fabricAdmin: FabricAdmin, adminDevCtrl: Chip controllerNodeIds: List of desired nodeIds for the controllers. privilege: The specific ACL privilege to grant to the newly minted controllers. targetNodeId: The Node ID of the target. + catTags: CAT Tags to include in the NOC of controller, as well as when setting up the ACLs on the target. ''' controllerList = [] for nodeId in controllerNodeIds: - newController = fabricAdmin.NewController(nodeId=nodeId) - await GrantPrivilege(adminDevCtrl, newController, privilege, targetNodeId) + newController = fabricAdmin.NewController(nodeId=nodeId, catTags=catTags) + await GrantPrivilege(adminDevCtrl, newController, privilege, targetNodeId, catTags) controllerList.append(newController) return controllerList diff --git a/src/controller/python/test/test_scripts/base.py b/src/controller/python/test/test_scripts/base.py index 90bc43cb064781..8665c288276603 100644 --- a/src/controller/python/test/test_scripts/base.py +++ b/src/controller/python/test/test_scripts/base.py @@ -36,9 +36,11 @@ from chip.ChipStack import * import chip.native import chip.FabricAdmin +import chip.CertificateAuthority import copy import secrets import faulthandler +import ipdb logger = logging.getLogger('PythonMatterControllerTEST') logger.setLevel(logging.INFO) @@ -193,8 +195,9 @@ def __init__(self, nodeid: int, paaTrustStorePath: str, testCommissioner: bool = chip.native.Init() self.chipStack = ChipStack('/tmp/repl_storage.json') - self.fabricAdmin = chip.FabricAdmin.FabricAdmin(vendorId=0XFFF1, - fabricId=1, adminIndex=1) + self.certificateAuthorityManager = chip.CertificateAuthority.CertificateAuthorityManager(chipStack=self.chipStack) + self.certificateAuthority = self.certificateAuthorityManager.NewCertificateAuthority() + self.fabricAdmin = self.certificateAuthority.NewFabricAdmin(vendorId=0xFFF1, fabricId=1) self.devCtrl = self.fabricAdmin.NewController( nodeid, paaTrustStorePath, testCommissioner) self.controllerNodeId = nodeid @@ -384,6 +387,34 @@ def TestFailsafe(self, nodeid: int): return True return False + async def TestControllerCATValues(self, nodeid: int): + ''' This tests controllers using CAT Values + ''' + # Allocate a new controller instance with a CAT tag. + newControllers = await CommissioningBuildingBlocks.CreateControllersOnFabric(fabricAdmin=self.fabricAdmin, adminDevCtrl=self.devCtrl, controllerNodeIds=[300], targetNodeId=nodeid, privilege=None, catTags=[0x0001_0001]) + + # Read out an attribute using the new controller. It has no privileges, so this should fail with an UnsupportedAccess error. + res = await newControllers[0].ReadAttribute(nodeid=nodeid, attributes=[(0, Clusters.AccessControl.Attributes.Acl)]) + if(res[0][Clusters.AccessControl][Clusters.AccessControl.Attributes.Acl].Reason.status != IM.Status.UnsupportedAccess): + self.logger.error(f"1: Received data instead of an error:{res}") + return False + + # Grant the new controller privilege by adding the CAT tag to the subject. + await CommissioningBuildingBlocks.GrantPrivilege(adminCtrl=self.devCtrl, grantedCtrl=newControllers[0], privilege=Clusters.AccessControl.Enums.Privilege.kAdminister, targetNodeId=nodeid, targetCatTags=[0x0001_0001]) + + # Read out the attribute again - this time, it should succeed. + res = await newControllers[0].ReadAttribute(nodeid=nodeid, attributes=[(0, Clusters.AccessControl.Attributes.Acl)]) + if (type(res[0][Clusters.AccessControl][Clusters.AccessControl.Attributes.Acl][0]) != Clusters.AccessControl.Structs.AccessControlEntry): + self.logger.error(f"2: Received something other than data:{res}") + return False + + # Reset the privilege back to pre-test. + await CommissioningBuildingBlocks.GrantPrivilege(adminCtrl=self.devCtrl, grantedCtrl=newControllers[0], privilege=None, targetNodeId=nodeid) + + newControllers[0].Shutdown() + + return True + async def TestMultiControllerFabric(self, nodeid: int): ''' This tests having multiple controller instances on the same fabric. ''' @@ -463,7 +494,8 @@ async def TestAddUpdateRemoveFabric(self, nodeid: int): self.logger.info("Waiting for attribute read for CommissionedFabrics") startOfTestFabricCount = await self._GetCommissonedFabricCount(nodeid) - tempFabric = chip.FabricAdmin.FabricAdmin(vendorId=0xFFF1) + tempCertificateAuthority = self.certificateAuthorityManager.NewCertificateAuthority() + tempFabric = tempCertificateAuthority.NewFabricAdmin(vendorId=0xFFF1, fabricId=1) tempDevCtrl = tempFabric.NewController(self.controllerNodeId, self.paaTrustStorePath) self.logger.info("Starting AddNOC using same node ID") @@ -628,8 +660,7 @@ async def TestMultiFabric(self, ip: str, setuppin: int, nodeid: int): await self.devCtrl.SendCommand(nodeid, 0, Clusters.AdministratorCommissioning.Commands.OpenBasicCommissioningWindow(180), timedRequestTimeoutMs=10000) self.logger.info("Creating 2nd Fabric Admin") - self.fabricAdmin2 = chip.FabricAdmin.FabricAdmin(vendorId=0xFFF1, - fabricId=2, adminIndex=2) + self.fabricAdmin2 = self.certificateAuthority.NewFabricAdmin(vendorId=0xFFF1, fabricId=2) self.logger.info("Creating Device Controller on 2nd Fabric") self.devCtrl2 = self.fabricAdmin2.NewController( @@ -646,15 +677,15 @@ async def TestMultiFabric(self, ip: str, setuppin: int, nodeid: int): self.logger.info( "Shutting down controllers & fabrics and re-initing stack...") - ChipDeviceCtrl.ChipDeviceController.ShutdownAll() - chip.FabricAdmin.FabricAdmin.ShutdownAll() + self.certificateAuthorityManager.Shutdown() self.logger.info("Shutdown completed, starting new controllers...") - self.fabricAdmin = chip.FabricAdmin.FabricAdmin(vendorId=0XFFF1, - fabricId=1, adminIndex=1) - fabricAdmin2 = chip.FabricAdmin.FabricAdmin(vendorId=0xFFF1, - fabricId=2, adminIndex=2) + self.certificateAuthorityManager = chip.CertificateAuthority.CertificateAuthorityManager(chipStack=self.chipStack) + self.certificateAuthority = self.certificateAuthorityManager.NewCertificateAuthority() + self.fabricAdmin = self.certificateAuthority.NewFabricAdmin(vendorId=0xFFF1, fabricId=1) + + fabricAdmin2 = self.certificateAuthority.NewFabricAdmin(vendorId=0xFFF1, fabricId=2) self.devCtrl = self.fabricAdmin.NewController( self.controllerNodeId, self.paaTrustStorePath) diff --git a/src/controller/python/test/test_scripts/cluster_objects.py b/src/controller/python/test/test_scripts/cluster_objects.py index deae10c2cd6962..5a9db3dd6ba28c 100644 --- a/src/controller/python/test/test_scripts/cluster_objects.py +++ b/src/controller/python/test/test_scripts/cluster_objects.py @@ -313,8 +313,6 @@ async def _TriggerEvent(cls, devCtrl): await devCtrl.SendCommand(nodeid=NODE_ID, endpoint=1, payload=Clusters.TestCluster.Commands.TestEmitTestEventRequest()) await devCtrl.SendCommand(nodeid=NODE_ID, endpoint=1, payload=Clusters.TestCluster.Commands.TestEmitTestEventRequest()) await devCtrl.SendCommand(nodeid=NODE_ID, endpoint=1, payload=Clusters.TestCluster.Commands.TestEmitTestEventRequest()) - await devCtrl.SendCommand(nodeid=NODE_ID, endpoint=1, payload=Clusters.TestCluster.Commands.TestEmitTestFabricScopedEventRequest(arg1=0)) - await devCtrl.SendCommand(nodeid=NODE_ID, endpoint=1, payload=Clusters.TestCluster.Commands.TestEmitTestFabricScopedEventRequest(arg1=1)) @classmethod async def _RetryForContent(cls, request, until, retryCount=10, intervalSeconds=1): @@ -335,11 +333,19 @@ async def TriggerAndWaitForEvents(cls, devCtrl, req): @base.test_case async def TestGenerateUndefinedFabricScopedEventRequests(cls, devCtrl): logger.info("Running TestGenerateUndefinedFabricScopedEventRequests") - await devCtrl.SendCommand(nodeid=NODE_ID, endpoint=1, payload=Clusters.TestCluster.Commands.TestEmitTestFabricScopedEventRequest(arg1=0)) + try: + res = await devCtrl.SendCommand(nodeid=NODE_ID, endpoint=1, payload=Clusters.TestCluster.Commands.TestEmitTestFabricScopedEventRequest(arg1=0)) + raise ValueError(f"Unexpected Failure") + except chip.interaction_model.InteractionModelError as ex: + logger.info(f"Recevied {ex} from server.") res = await devCtrl.ReadEvent(nodeid=NODE_ID, events=[ - (1, Clusters.TestCluster.Events.TestEvent, 0), + (1, Clusters.TestCluster.Events.TestFabricScopedEvent, 0), ]) logger.info(f"return result is {res}") + if len(res) != 0: + raise AssertionError("failure: not expect to receive fabric-scoped event when fabric is undefined") + else: + logger.info("TestGenerateUndefinedFabricScopedEventRequests: Success") @classmethod @base.test_case diff --git a/src/controller/python/test/test_scripts/mobile-device-test.py b/src/controller/python/test/test_scripts/mobile-device-test.py index ffea217fa526c9..99f17aabe27363 100755 --- a/src/controller/python/test/test_scripts/mobile-device-test.py +++ b/src/controller/python/test/test_scripts/mobile-device-test.py @@ -77,6 +77,9 @@ def ethernet_commissioning(test: BaseTestHelper, discriminator: int, setup_pin: logger.info("Testing multi-controller setup on the same fabric") FailIfNot(asyncio.run(test.TestMultiControllerFabric(nodeid=device_nodeid)), "Failed the multi-controller test") + logger.info("Testing CATs used on controllers") + FailIfNot(asyncio.run(test.TestControllerCATValues(nodeid=device_nodeid)), "Failed the controller CAT test") + ok = asyncio.run(test.TestMultiFabric(ip=address, setuppin=20202021, nodeid=1)) diff --git a/src/credentials/DeviceAttestationConstructor.h b/src/credentials/DeviceAttestationConstructor.h index 242171a5c9e9db..87f1095792c0f9 100644 --- a/src/credentials/DeviceAttestationConstructor.h +++ b/src/credentials/DeviceAttestationConstructor.h @@ -31,12 +31,12 @@ constexpr size_t kExpectedAttestationNonceSize = 32; * All output data stays valid while attestationElements buffer is valid. * * @param[in] attestationElements ByteSpan containing source of Attestation Elements data. - * @param[out] certificationDeclaration - * @param[out] attestationNonce - * @param[out] timestamp + * @param[out] certificationDeclaration Valid Certification Declaration data. + * @param[out] attestationNonce Attestation Nonce - 32 octets required. + * @param[out] timestamp Timestamp data in epoch time format. * @param[out] firmwareInfo ByteSpan containing Firmware Information data if present within attestationElements. * Empty ByteSpan if not present in attestationElements. - * @param[out] VendorReserved Placeholder to for client to examine VendorReserved elements later + * @param[out] vendorReserved Placeholder to for client to examine vendorReserved elements later */ CHIP_ERROR DeconstructAttestationElements(const ByteSpan & attestationElements, ByteSpan & certificationDeclaration, ByteSpan & attestationNonce, uint32_t & timestamp, ByteSpan & firmwareInfo, @@ -49,7 +49,7 @@ CHIP_ERROR DeconstructAttestationElements(const ByteSpan & attestationElements, * @param[in] attestationNonce Attestation Nonce - 32 octets required. * @param[in] timestamp Timestamp data in epoch time format. * @param[in] firmwareInfo Optional Firmware Information data - Can be empty. - * @param[in] VendorReserved Prefilled-in vendor reserved elements to be put into DA elements. + * @param[in] vendorReserved Prefilled-in vendor reserved elements to be put into DA elements. * @param[out] attestationElements Buffer used to write all AttestationElements data, formed with all the data fields above. * Provided buffer needs to be capable to handle all data fields + tags. */ @@ -62,7 +62,7 @@ CHIP_ERROR ConstructAttestationElements(const ByteSpan & certificationDeclaratio * @brief Count the number of VendorReservedElements in a DeviceAttestation blob * * @param[in] attestationElements ByeSpan conitaining source of Attestation Elements data - * @param[out] + * @param[out] numElements Count of vendor reserved elements in the DeviceAttestation * @returns CHIP_NO_ERROR on success */ CHIP_ERROR CountVendorReservedElementsInDA(const ByteSpan & attestationElements, size_t & numElements); diff --git a/src/credentials/DeviceAttestationVendorReserved.h b/src/credentials/DeviceAttestationVendorReserved.h index d05bd4d9d25a59..7c77000e5884ce 100644 --- a/src/credentials/DeviceAttestationVendorReserved.h +++ b/src/credentials/DeviceAttestationVendorReserved.h @@ -211,7 +211,7 @@ class DeviceAttestationVendorReservedConstructor // first lowest tagNum for this vendorId/profileNum uint64_t minTagNum = UINT64_MAX; - size_t lowestIndex; + size_t lowestIndex = SIZE_MAX; for (i = starting; i < mNumEntriesUsed; i++) { if (mElements[i].vendorId == minVendor && mElements[i].profileNum == minProfile) diff --git a/src/crypto/CHIPCryptoPAL.cpp b/src/crypto/CHIPCryptoPAL.cpp index ec2e415806c23b..859f5809e4b742 100644 --- a/src/crypto/CHIPCryptoPAL.cpp +++ b/src/crypto/CHIPCryptoPAL.cpp @@ -1092,5 +1092,28 @@ CHIP_ERROR GenerateCertificateSigningRequest(const P256Keypair * keypair, Mutabl return err; } +CHIP_ERROR VerifyCertificateSigningRequestFormat(const uint8_t * csr, size_t csr_length) +{ + // Ensure we have enough size to validate header + VerifyOrReturnError((csr_length >= 16) && (csr_length <= kMAX_CSR_Length), CHIP_ERROR_UNSUPPORTED_CERT_FORMAT); + + Reader reader(csr, csr_length); + + // Ensure we have an outermost SEQUENCE + uint8_t seq_header = 0; + ReturnErrorOnFailure(reader.Read8(&seq_header).StatusCode()); + VerifyOrReturnError(seq_header == kSeqTag, CHIP_ERROR_UNSUPPORTED_CERT_FORMAT); + + uint8_t seq_length = 0; + VerifyOrReturnError(ReadDerLength(reader, seq_length) == CHIP_NO_ERROR, CHIP_ERROR_UNSUPPORTED_CERT_FORMAT); + + // Ensure that outer length matches sequence length + tag overhead, otherwise + // we have trailing garbage + size_t header_overhead = (seq_length <= 127) ? 2 : 3; + VerifyOrReturnError(csr_length == (seq_length + header_overhead), CHIP_ERROR_UNSUPPORTED_CERT_FORMAT); + + return CHIP_NO_ERROR; +} + } // namespace Crypto } // namespace chip diff --git a/src/crypto/CHIPCryptoPAL.h b/src/crypto/CHIPCryptoPAL.h index ea67c59a5765c1..544a554dcb31eb 100644 --- a/src/crypto/CHIPCryptoPAL.h +++ b/src/crypto/CHIPCryptoPAL.h @@ -640,8 +640,23 @@ CHIP_ERROR AES_CCM_decrypt(const uint8_t * ciphertext, size_t ciphertext_length, **/ CHIP_ERROR GenerateCertificateSigningRequest(const P256Keypair * keypair, MutableByteSpan & csr_span); +/** + * @brief Common code to validate ASN.1 format/size of a CSR, used by VerifyCertificateSigningRequest. + * + * Ensures it's not obviously malformed and doesn't have trailing garbage. + * + * @param csr CSR in DER format + * @param csr_length The length of the CSR buffer + * @return CHIP_ERROR_UNSUPPORTED_CERT_FORMAT on invalid format, CHIP_NO_ERROR otherwise. + */ +CHIP_ERROR VerifyCertificateSigningRequestFormat(const uint8_t * csr, size_t csr_length); + /** * @brief Verify the Certificate Signing Request (CSR). If successfully verified, it outputs the public key from the CSR. + * + * The CSR is valid if the format is correct, the signature validates with the embedded public + * key, and there is no trailing garbage data. + * * @param csr CSR in DER format * @param csr_length The length of the CSR * @param pubkey The public key from the verified CSR diff --git a/src/crypto/CHIPCryptoPALOpenSSL.cpp b/src/crypto/CHIPCryptoPALOpenSSL.cpp index 761294d0cc84ee..d1211bccbc5da2 100644 --- a/src/crypto/CHIPCryptoPALOpenSSL.cpp +++ b/src/crypto/CHIPCryptoPALOpenSSL.cpp @@ -1254,6 +1254,8 @@ CHIP_ERROR P256Keypair::NewCertificateSigningRequest(uint8_t * out_csr, size_t & CHIP_ERROR VerifyCertificateSigningRequest(const uint8_t * csr, size_t csr_length, P256PublicKey & pubkey) { + ReturnErrorOnFailure(VerifyCertificateSigningRequestFormat(csr, csr_length)); + ERR_clear_error(); CHIP_ERROR error = CHIP_NO_ERROR; int result = 0; diff --git a/src/crypto/CHIPCryptoPALTinyCrypt.cpp b/src/crypto/CHIPCryptoPALTinyCrypt.cpp index ae166a294744fc..aa9df451cc692a 100644 --- a/src/crypto/CHIPCryptoPALTinyCrypt.cpp +++ b/src/crypto/CHIPCryptoPALTinyCrypt.cpp @@ -777,6 +777,8 @@ CHIP_ERROR P256Keypair::NewCertificateSigningRequest(uint8_t * out_csr, size_t & CHIP_ERROR VerifyCertificateSigningRequest(const uint8_t * csr_buf, size_t csr_length, P256PublicKey & pubkey) { #if defined(MBEDTLS_X509_CSR_PARSE_C) + ReturnErrorOnFailure(VerifyCertificateSigningRequestFormat(csr_buf, csr_length)); + // TODO: For some embedded targets, mbedTLS library doesn't have mbedtls_x509_csr_parse_der, and mbedtls_x509_csr_parse_free. // Taking a step back, embedded targets likely will not process CSR requests. Adding this action item to reevaluate // this if there's a need for this processing for embedded targets. diff --git a/src/crypto/CHIPCryptoPALmbedTLS.cpp b/src/crypto/CHIPCryptoPALmbedTLS.cpp index 9bce7e94430796..dfbd993f023d8d 100644 --- a/src/crypto/CHIPCryptoPALmbedTLS.cpp +++ b/src/crypto/CHIPCryptoPALmbedTLS.cpp @@ -889,6 +889,8 @@ CHIP_ERROR P256Keypair::NewCertificateSigningRequest(uint8_t * out_csr, size_t & CHIP_ERROR VerifyCertificateSigningRequest(const uint8_t * csr_buf, size_t csr_length, P256PublicKey & pubkey) { #if defined(MBEDTLS_X509_CSR_PARSE_C) + ReturnErrorOnFailure(VerifyCertificateSigningRequestFormat(csr_buf, csr_length)); + // TODO: For some embedded targets, mbedTLS library doesn't have mbedtls_x509_csr_parse_der, and mbedtls_x509_csr_parse_free. // Taking a step back, embedded targets likely will not process CSR requests. Adding this action item to reevaluate // this if there's a need for this processing for embedded targets. diff --git a/src/crypto/tests/CHIPCryptoPALTest.cpp b/src/crypto/tests/CHIPCryptoPALTest.cpp index 8c76468e6158ea..485ead2cf99322 100644 --- a/src/crypto/tests/CHIPCryptoPALTest.cpp +++ b/src/crypto/tests/CHIPCryptoPALTest.cpp @@ -1034,6 +1034,170 @@ static void TestP256_Keygen(nlTestSuite * inSuite, void * inContext) NL_TEST_ASSERT(inSuite, keypair.Pubkey().ECDSA_validate_msg_signature(test_msg, msglen, test_sig) == CHIP_NO_ERROR); } +void TestCSR_Verify(nlTestSuite * inSuite, void * inContext) +{ + Crypto::P256PublicKey pubKey; + CHIP_ERROR err; + + // First case: there is trailing garbage in the CSR + { + const uint8_t kBadTrailingGarbageCsr[255] = { + 0x30, 0x81, 0xda, 0x30, 0x81, 0x81, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x0c, 0x03, 0x43, 0x53, 0x41, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, + 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x72, 0x48, 0xc0, 0x36, 0xf0, 0x12, 0x5f, 0xd1, + 0x68, 0x92, 0x2d, 0xee, 0x57, 0x2b, 0x8e, 0x20, 0x9d, 0x97, 0xfa, 0x73, 0x92, 0xf1, 0xa0, 0x91, 0x0e, 0xfd, 0x04, 0x93, + 0x66, 0x47, 0x3c, 0xa3, 0xf0, 0xa8, 0x47, 0xa1, 0xa3, 0x1e, 0x13, 0x3b, 0x67, 0x3b, 0x18, 0xca, 0x77, 0xd1, 0xea, 0xe3, + 0x74, 0x93, 0x49, 0x8b, 0x9d, 0xdc, 0xef, 0xf9, 0xd5, 0x9b, 0x27, 0x19, 0xad, 0x6e, 0x90, 0xd2, 0xa0, 0x11, 0x30, 0x0f, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x0e, 0x31, 0x02, 0x30, 0x00, 0x30, 0x0a, 0x06, 0x08, 0x2a, + 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x03, 0x48, 0x00, 0x30, 0x45, 0x02, 0x20, 0x6a, 0x2e, 0x15, 0x34, 0x1b, 0xde, + 0xcb, 0x8f, 0xd2, 0xfd, 0x35, 0x03, 0x89, 0x0e, 0xed, 0x23, 0x54, 0xff, 0xcb, 0x79, 0xf9, 0xcb, 0x40, 0x33, 0x59, 0xb4, + 0x27, 0x69, 0xeb, 0x07, 0x3b, 0xd5, 0x02, 0x21, 0x00, 0xb0, 0x25, 0xc9, 0xc2, 0x21, 0xe8, 0x54, 0xcc, 0x08, 0x12, 0xf5, + 0x10, 0x3a, 0x0b, 0x25, 0x20, 0x0a, 0x61, 0x38, 0xc8, 0x6f, 0x82, 0xa7, 0x51, 0x84, 0x61, 0xae, 0x93, 0x69, 0xe4, 0x74, + 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; + + Crypto::ClearSecretData(pubKey.Bytes(), pubKey.Length()); + + err = VerifyCertificateSigningRequest(&kBadTrailingGarbageCsr[0], sizeof(kBadTrailingGarbageCsr), pubKey); + + // On first test case, check if CSRs are supported at all, and skip test if they are not. + if (err == CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE) + { + ChipLogError(Crypto, "The current platform does not support CSR parsing."); + return; + } + + NL_TEST_ASSERT(inSuite, err != CHIP_NO_ERROR); + + err = VerifyCertificateSigningRequestFormat(&kBadTrailingGarbageCsr[0], sizeof(kBadTrailingGarbageCsr)); + NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_UNSUPPORTED_CERT_FORMAT); + } + + // Second case: correct CSR + { + const uint8_t kGoodCsr[205] = { + 0x30, 0x81, 0xca, 0x30, 0x70, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0a, + 0x0c, 0x03, 0x43, 0x53, 0x52, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, + 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0xa3, 0xbe, 0xa1, 0xf5, 0x42, 0x01, + 0x07, 0x3c, 0x4b, 0x75, 0x85, 0xd8, 0xe2, 0x98, 0xac, 0x2f, 0xf6, 0x98, 0xdb, 0xd9, 0x5b, 0xe0, 0x7e, 0xc1, 0x04, + 0xd5, 0x73, 0xc5, 0xb0, 0x90, 0x77, 0x27, 0x00, 0x1e, 0x22, 0xc7, 0x89, 0x5e, 0x4d, 0x75, 0x07, 0x89, 0x82, 0x0f, + 0x49, 0xb6, 0x59, 0xd5, 0xc5, 0x15, 0x7d, 0x93, 0xe6, 0x80, 0x5c, 0x70, 0x89, 0x0a, 0x43, 0x10, 0x3d, 0xeb, 0x3d, + 0x4a, 0xa0, 0x00, 0x30, 0x0c, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x05, 0x00, 0x03, 0x48, + 0x00, 0x30, 0x45, 0x02, 0x20, 0x1d, 0x86, 0x21, 0xb4, 0xc2, 0xe1, 0xa9, 0xf3, 0xbc, 0xc8, 0x7c, 0xda, 0xb4, 0xb9, + 0xc6, 0x8c, 0xd0, 0xe4, 0x9a, 0x9c, 0xef, 0x02, 0x93, 0x98, 0x27, 0x7e, 0x81, 0x21, 0x5d, 0x20, 0x9d, 0x32, 0x02, + 0x21, 0x00, 0x8b, 0x6b, 0x49, 0xb6, 0x7d, 0x3e, 0x67, 0x9e, 0xb1, 0x22, 0xd3, 0x63, 0x82, 0x40, 0x4f, 0x49, 0xa4, + 0xdc, 0x17, 0x35, 0xac, 0x4b, 0x7a, 0xbf, 0x52, 0x05, 0x58, 0x68, 0xe0, 0xaa, 0xd2, 0x8e, + }; + const uint8_t kGoodCsrSubjectPublicKey[65] = { + 0x04, 0xa3, 0xbe, 0xa1, 0xf5, 0x42, 0x01, 0x07, 0x3c, 0x4b, 0x75, 0x85, 0xd8, 0xe2, 0x98, 0xac, 0x2f, + 0xf6, 0x98, 0xdb, 0xd9, 0x5b, 0xe0, 0x7e, 0xc1, 0x04, 0xd5, 0x73, 0xc5, 0xb0, 0x90, 0x77, 0x27, 0x00, + 0x1e, 0x22, 0xc7, 0x89, 0x5e, 0x4d, 0x75, 0x07, 0x89, 0x82, 0x0f, 0x49, 0xb6, 0x59, 0xd5, 0xc5, 0x15, + 0x7d, 0x93, 0xe6, 0x80, 0x5c, 0x70, 0x89, 0x0a, 0x43, 0x10, 0x3d, 0xeb, 0x3d, 0x4a, + }; + + Crypto::ClearSecretData(pubKey.Bytes(), pubKey.Length()); + + err = VerifyCertificateSigningRequestFormat(&kGoodCsr[0], sizeof(kGoodCsr)); + NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + + err = VerifyCertificateSigningRequest(&kGoodCsr[0], sizeof(kGoodCsr), pubKey); + NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + + Crypto::P256PublicKey expected(kGoodCsrSubjectPublicKey); + NL_TEST_ASSERT(inSuite, pubKey.Matches(expected)); + } + + // Third case: bad signature + { + const uint8_t kBadSignatureSignatureCsr[205] = { + 0x30, 0x81, 0xca, 0x30, 0x70, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0a, + 0x0c, 0x03, 0x43, 0x53, 0x52, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, + 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0xa3, 0xbe, 0xa1, 0xf5, 0x42, 0x01, + 0x07, 0x3c, 0x4b, 0x75, 0x85, 0xd8, 0xe2, 0x98, 0xac, 0x2f, 0xf6, 0x98, 0xdb, 0xd9, 0x5b, 0xe0, 0x7e, 0xc1, 0x04, + 0xd5, 0x73, 0xc5, 0xb0, 0x90, 0x77, 0x27, 0x00, 0x1e, 0x22, 0xc7, 0x89, 0x5e, 0x4d, 0x75, 0x07, 0x89, 0x82, 0x0f, + 0x49, 0xb6, 0x59, 0xd5, 0xc5, 0x15, 0x7d, 0x93, 0xe6, 0x80, 0x5c, 0x70, 0x89, 0x0a, 0x43, 0x10, 0x3d, 0xeb, 0x3d, + 0x4a, 0xa0, 0x00, 0x30, 0x0c, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x05, 0x00, 0x03, 0x48, + 0x00, 0x30, 0x45, 0x02, 0x20, 0x1d, 0x86, 0x21, 0xb4, 0xc2, 0xe1, 0xa9, 0xf3, 0xbc, 0xc8, 0x7c, 0xda, 0xb4, 0xb9, + 0xc6, 0x8c, 0xd0, 0xe4, 0x9a, 0x9c, 0xef, 0x02, 0x93, 0x98, 0x27, 0x7e, 0x81, 0x21, 0x5d, 0x20, 0x9d, 0x32, 0x02, + 0x21, 0x00, 0x8b, 0x6b, 0x49, 0xb6, 0x7d, 0x3e, 0x67, 0x9e, 0xb1, 0x21, 0xd3, 0x63, 0x82, 0x40, 0x4f, 0x49, 0xa4, + 0xdc, 0x17, 0x35, 0xac, 0x4b, 0x7a, 0xbf, 0x52, 0x05, 0x58, 0x68, 0xe0, 0xaa, 0xd2, 0x8e, + }; + + Crypto::ClearSecretData(pubKey.Bytes(), pubKey.Length()); + + err = VerifyCertificateSigningRequestFormat(&kBadSignatureSignatureCsr[0], sizeof(kBadSignatureSignatureCsr)); + NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + + err = VerifyCertificateSigningRequest(&kBadSignatureSignatureCsr[0], sizeof(kBadSignatureSignatureCsr), pubKey); + NL_TEST_ASSERT(inSuite, err != CHIP_NO_ERROR); + } + + // Fourth case: CSR too big + { + const uint8_t kBadTooBigCsr[256] = { + 0x30, 0x81, 0xda, 0x30, 0x81, 0x81, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x0c, 0x03, 0x43, 0x53, 0x41, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, + 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x72, 0x48, 0xc0, 0x36, 0xf0, 0x12, 0x5f, 0xd1, + 0x68, 0x92, 0x2d, 0xee, 0x57, 0x2b, 0x8e, 0x20, 0x9d, 0x97, 0xfa, 0x73, 0x92, 0xf1, 0xa0, 0x91, 0x0e, 0xfd, 0x04, 0x93, + 0x66, 0x47, 0x3c, 0xa3, 0xf0, 0xa8, 0x47, 0xa1, 0xa3, 0x1e, 0x13, 0x3b, 0x67, 0x3b, 0x18, 0xca, 0x77, 0xd1, 0xea, 0xe3, + 0x74, 0x93, 0x49, 0x8b, 0x9d, 0xdc, 0xef, 0xf9, 0xd5, 0x9b, 0x27, 0x19, 0xad, 0x6e, 0x90, 0xd2, 0xa0, 0x11, 0x30, 0x0f, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x0e, 0x31, 0x02, 0x30, 0x00, 0x30, 0x0a, 0x06, 0x08, 0x2a, + 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x03, 0x48, 0x00, 0x30, 0x45, 0x02, 0x20, 0x6a, 0x2e, 0x15, 0x34, 0x1b, 0xde, + 0xcb, 0x8f, 0xd2, 0xfd, 0x35, 0x03, 0x89, 0x0e, 0xed, 0x23, 0x54, 0xff, 0xcb, 0x79, 0xf9, 0xcb, 0x40, 0x33, 0x59, 0xb4, + 0x27, 0x69, 0xeb, 0x07, 0x3b, 0xd5, 0x02, 0x21, 0x00, 0xb0, 0x25, 0xc9, 0xc2, 0x21, 0xe8, 0x54, 0xcc, 0x08, 0x12, 0xf5, + 0x10, 0x3a, 0x0b, 0x25, 0x20, 0x0a, 0x61, 0x38, 0xc8, 0x6f, 0x82, 0xa7, 0x51, 0x84, 0x61, 0xae, 0x93, 0x69, 0xe4, 0x74, + 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + }; + + Crypto::ClearSecretData(pubKey.Bytes(), pubKey.Length()); + err = VerifyCertificateSigningRequestFormat(&kBadTooBigCsr[0], sizeof(kBadTooBigCsr)); + NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_UNSUPPORTED_CERT_FORMAT); + + err = VerifyCertificateSigningRequest(&kBadTooBigCsr[0], sizeof(kBadTooBigCsr), pubKey); + NL_TEST_ASSERT(inSuite, err != CHIP_NO_ERROR); + } + + // Fifth case: obviously invalid CSR (1/2) + { + const uint8_t kTooSmallCsr[10] = { 0x30, 0x81, 0xda, 0x30, 0x81, 0x81, 0x02, 0x01, 0x00, 0x30 }; + + Crypto::ClearSecretData(pubKey.Bytes(), pubKey.Length()); + + err = VerifyCertificateSigningRequestFormat(&kTooSmallCsr[0], sizeof(kTooSmallCsr)); + NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_UNSUPPORTED_CERT_FORMAT); + + err = VerifyCertificateSigningRequest(&kTooSmallCsr[0], sizeof(kTooSmallCsr), pubKey); + NL_TEST_ASSERT(inSuite, err != CHIP_NO_ERROR); + } + + // Sixth case: obviously invalid CSR (2/2) + { + const uint8_t kNotSequenceCsr[205] = { + 0x31, 0x81, 0xca, 0x30, 0x70, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0a, + 0x0c, 0x03, 0x43, 0x53, 0x52, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, + 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0xa3, 0xbe, 0xa1, 0xf5, 0x42, 0x01, + 0x07, 0x3c, 0x4b, 0x75, 0x85, 0xd8, 0xe2, 0x98, 0xac, 0x2f, 0xf6, 0x98, 0xdb, 0xd9, 0x5b, 0xe0, 0x7e, 0xc1, 0x04, + 0xd5, 0x73, 0xc5, 0xb0, 0x90, 0x77, 0x27, 0x00, 0x1e, 0x22, 0xc7, 0x89, 0x5e, 0x4d, 0x75, 0x07, 0x89, 0x82, 0x0f, + 0x49, 0xb6, 0x59, 0xd5, 0xc5, 0x15, 0x7d, 0x93, 0xe6, 0x80, 0x5c, 0x70, 0x89, 0x0a, 0x43, 0x10, 0x3d, 0xeb, 0x3d, + 0x4a, 0xa0, 0x00, 0x30, 0x0c, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x05, 0x00, 0x03, 0x48, + 0x00, 0x30, 0x45, 0x02, 0x20, 0x1d, 0x86, 0x21, 0xb4, 0xc2, 0xe1, 0xa9, 0xf3, 0xbc, 0xc8, 0x7c, 0xda, 0xb4, 0xb9, + 0xc6, 0x8c, 0xd0, 0xe4, 0x9a, 0x9c, 0xef, 0x02, 0x93, 0x98, 0x27, 0x7e, 0x81, 0x21, 0x5d, 0x20, 0x9d, 0x32, 0x02, + 0x21, 0x00, 0x8b, 0x6b, 0x49, 0xb6, 0x7d, 0x3e, 0x67, 0x9e, 0xb1, 0x22, 0xd3, 0x63, 0x82, 0x40, 0x4f, 0x49, 0xa4, + 0xdc, 0x17, 0x35, 0xac, 0x4b, 0x7a, 0xbf, 0x52, 0x05, 0x58, 0x68, 0xe0, 0xaa, 0xd2, 0x8e, + }; + + Crypto::ClearSecretData(pubKey.Bytes(), pubKey.Length()); + + err = VerifyCertificateSigningRequestFormat(&kNotSequenceCsr[0], sizeof(kNotSequenceCsr)); + NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_UNSUPPORTED_CERT_FORMAT); + + err = VerifyCertificateSigningRequest(&kNotSequenceCsr[0], sizeof(kNotSequenceCsr), pubKey); + NL_TEST_ASSERT(inSuite, err != CHIP_NO_ERROR); + } +} + void TestCSR_GenDirect(nlTestSuite * inSuite, void * inContext) { uint8_t csrBuf[kMAX_CSR_Length]; @@ -2136,6 +2300,7 @@ static const nlTest sTests[] = { NL_TEST_DEF("Test adding entropy sources", TestAddEntropySources), NL_TEST_DEF("Test PBKDF2 SHA256", TestPBKDF2_SHA256_TestVectors), NL_TEST_DEF("Test P256 Keygen", TestP256_Keygen), + NL_TEST_DEF("Test CSR Verification + PK extraction", TestCSR_Verify), NL_TEST_DEF("Test CSR Generation via P256Keypair method", TestCSR_GenByKeypair), NL_TEST_DEF("Test Direct CSR Generation", TestCSR_GenDirect), NL_TEST_DEF("Test Keypair Serialize", TestKeypair_Serialize), diff --git a/src/darwin/Framework/CHIP/MTRAttestationInfo.h b/src/darwin/Framework/CHIP/MTRAttestationInfo.h new file mode 100644 index 00000000000000..a31c181b0daebd --- /dev/null +++ b/src/darwin/Framework/CHIP/MTRAttestationInfo.h @@ -0,0 +1,55 @@ +/** + * + * Copyright (c) 2022 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * Represents information relating to product attestation. + * + */ +@interface AttestationInfo : NSObject + +@property (nonatomic, copy) NSData * challenge; + +@property (nonatomic, copy) NSData * nonce; + +@property (nonatomic, copy) NSData * elements; + +@property (nonatomic, copy) NSData * elementsSignature; + +@property (nonatomic, copy) NSData * dac; + +@property (nonatomic, copy) NSData * pai; + +@property (nonatomic, copy) NSData * certificationDeclaration; + +@property (nonatomic, copy) NSData * firmwareInfo; + +- (instancetype)initWithChallenge:(NSData *)challenge + nonce:(NSData *)nonce + elements:(NSData *)elements + elementsSignature:(NSData *)elementsSignature + dac:(NSData *)dac + pai:(NSData *)pai + certificationDeclaration:(NSData *)certificationDeclaration + firmwareInfo:(NSData *)firmwareInfo; + +@end + +NS_ASSUME_NONNULL_END diff --git a/src/darwin/Framework/CHIP/MTRAttestationInfo.m b/src/darwin/Framework/CHIP/MTRAttestationInfo.m new file mode 100644 index 00000000000000..93b9483cce6fe0 --- /dev/null +++ b/src/darwin/Framework/CHIP/MTRAttestationInfo.m @@ -0,0 +1,48 @@ +/** + * + * Copyright (c) 2022 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "MTRAttestationInfo.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation AttestationInfo : NSObject + +- (instancetype)initWithChallenge:(NSData *)challenge + nonce:(NSData *)nonce + elements:(NSData *)elements + elementsSignature:(NSData *)elementsSignature + dac:(NSData *)dac + pai:(NSData *)pai + certificationDeclaration:(NSData *)certificationDeclaration + firmwareInfo:(NSData *)firmwareInfo +{ + if (self = [super init]) { + _challenge = challenge; + _nonce = nonce; + _elements = elements; + _elementsSignature = elementsSignature; + _dac = dac; + _pai = pai; + _certificationDeclaration = certificationDeclaration; + _firmwareInfo = firmwareInfo; + } + return self; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/src/darwin/Framework/CHIP/MTRCSRInfo.h b/src/darwin/Framework/CHIP/MTRCSRInfo.h new file mode 100644 index 00000000000000..8971bfd6fbd294 --- /dev/null +++ b/src/darwin/Framework/CHIP/MTRCSRInfo.h @@ -0,0 +1,43 @@ +/** + * + * Copyright (c) 2022 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * Represents information relating to NOC CSR. + * + */ +@interface CSRInfo : NSObject + +@property (nonatomic, copy) NSData * nonce; + +@property (nonatomic, copy) NSData * elements; + +@property (nonatomic, copy) NSData * elementsSignature; + +@property (nonatomic, copy) NSData * csr; + +- (instancetype)initWithNonce:(NSData *)nonce + elements:(NSData *)elements + elementsSignature:(NSData *)elementsSignature + csr:(NSData *)csr; + +@end + +NS_ASSUME_NONNULL_END diff --git a/examples/platform/efr32/lcd.h b/src/darwin/Framework/CHIP/MTRCSRInfo.m similarity index 52% rename from examples/platform/efr32/lcd.h rename to src/darwin/Framework/CHIP/MTRCSRInfo.m index b3702305d40f69..676aa1ed36e5b4 100644 --- a/examples/platform/efr32/lcd.h +++ b/src/darwin/Framework/CHIP/MTRCSRInfo.m @@ -1,7 +1,6 @@ -/* +/** * - * Copyright (c) 2020 Project CHIP Authors - * All rights reserved. + * Copyright (c) 2022 Project CHIP Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,23 +15,25 @@ * limitations under the License. */ -#pragma once +#import "MTRCSRInfo.h" -#include "AppConfig.h" +NS_ASSUME_NONNULL_BEGIN -#ifdef __cplusplus -extern "C" { -#endif +@implementation CSRInfo : NSObject -#define MAX_STR_LEN 48 - -void initLCD(void); -void * LCDContext(); -int LCD_clear(void * pContext); -int LCD_drawPixel(void * pContext, int32_t x, int32_t y); -int LCD_update(void); -void LCDWriteQRCode(uint8_t * str); - -#ifdef __cplusplus +- (instancetype)initWithNonce:(NSData *)nonce + elements:(NSData *)elements + elementsSignature:(NSData *)elementsSignature + csr:(NSData *)csr +{ + if (self = [super init]) { + _nonce = nonce; + _elements = elements; + _elementsSignature = elementsSignature; + _csr = csr; + } + return self; } -#endif +@end + +NS_ASSUME_NONNULL_END diff --git a/src/darwin/Framework/CHIP/MTRDeviceController.h b/src/darwin/Framework/CHIP/MTRDeviceController.h index 61db4061896d10..faca45ddde863b 100644 --- a/src/darwin/Framework/CHIP/MTRDeviceController.h +++ b/src/darwin/Framework/CHIP/MTRDeviceController.h @@ -17,6 +17,7 @@ #import +#import #import @class MTRBaseDevice; @@ -119,6 +120,16 @@ typedef void (^MTRDeviceConnectionCallback)(MTRBaseDevice * _Nullable device, NS */ - (void)setPairingDelegate:(id)delegate queue:(dispatch_queue_t)queue; +/** + * Sets this MTRDeviceController to use the given issuer for issuing operational certs. By default, the MTRDeviceController uses an + * internal issuer. + * + * @param[in] nocChainIssuer the NOC Chain issuer to use for issuer operational certs + * + * @param[in] queue The queue on which the callbacks will be delivered + */ +- (void)setNocChainIssuer:(id)nocChainIssuer queue:(dispatch_queue_t)queue; + /** * Shutdown the controller. Calls to shutdown after the first one are NO-OPs. */ diff --git a/src/darwin/Framework/CHIP/MTRDeviceController.mm b/src/darwin/Framework/CHIP/MTRDeviceController.mm index 425be4e5a1ac26..b170771f77ad0b 100644 --- a/src/darwin/Framework/CHIP/MTRDeviceController.mm +++ b/src/darwin/Framework/CHIP/MTRDeviceController.mm @@ -106,6 +106,7 @@ - (instancetype)initWithFactory:(MTRControllerFactory *)factory queue:(dispatch_ if ([self checkForInitError:(_operationalCredentialsDelegate != nullptr) logMsg:kErrorOperationalCredentialsInit]) { return nil; } + _operationalCredentialsDelegate->setChipWorkQueue(_chipWorkQueue); } return self; } @@ -229,6 +230,8 @@ - (BOOL)startup:(MTRDeviceControllerStartupParamsInternal *)startupParams commissionerParams.pairingDelegate = _pairingDelegateBridge; + _operationalCredentialsDelegate->SetDeviceCommissioner(_cppCommissioner); + commissionerParams.operationalCredentialsDelegate = _operationalCredentialsDelegate; commissionerParams.controllerRCAC = _operationalCredentialsDelegate->RootCertSpan(); @@ -654,6 +657,17 @@ - (void)setPairingDelegate:(id)delegate queue:(dispatc }); } +- (void)setNocChainIssuer:(id)nocChainIssuer queue:(dispatch_queue_t)queue +{ + VerifyOrReturn([self checkIsRunning]); + + dispatch_sync(_chipWorkQueue, ^{ + VerifyOrReturn([self checkIsRunning]); + + self->_operationalCredentialsDelegate->SetNocChainIssuer(nocChainIssuer, queue); + }); +} + - (BOOL)checkForInitError:(BOOL)condition logMsg:(NSString *)logMsg { if (condition) { diff --git a/src/darwin/Framework/CHIP/MTRNOCChainIssuer.h b/src/darwin/Framework/CHIP/MTRNOCChainIssuer.h new file mode 100644 index 00000000000000..2ef76670532118 --- /dev/null +++ b/src/darwin/Framework/CHIP/MTRNOCChainIssuer.h @@ -0,0 +1,52 @@ +/** + * + * Copyright (c) 2022 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol MTRNOCChainIssuer +@required + +/** + * @brief When a MTRNOCChainIssuer is set for the MTRDeviceController, then onNOCChainGenerationNeeded will be + * called when the NOC CSR needs to be signed. This allows for custom credentials issuer + * implementations, for example, when a proprietary cloud API will perform the CSR signing. + + * The commissioning workflow will stop upon the onNOCChainGenerationNeeded callback and + * resume once onNOCChainGenerationComplete is called + + * The following fields MUST be passed to onNOCChainGenerationComplete with non-nil values: + * rootCertificate, intermediateCertificate, operationalCertificate. + * If ipk and adminSubject are passed, then they will be used in + * the AddNOC command sent to the commissionee. If they are not passed, then the values + * provided in the MTRDeviceController initialization will be used. + * + * All csr and attestation fields are provided to allow for custom attestestation checks. + */ +- (void)onNOCChainGenerationNeeded:(CSRInfo *)csrInfo + attestationInfo:(AttestationInfo *)attestationInfo + onNOCChainGenerationComplete:(void (^)(NSData * operationalCertificate, NSData * intermediateCertificate, + NSData * rootCertificate, NSData * ipk, NSNumber * adminSubject, + NSError * __autoreleasing * error))onNOCChainGenerationComplete; + +@end + +NS_ASSUME_NONNULL_END diff --git a/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.h b/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.h index cb812ddc41e67a..ce59ff7922bdec 100644 --- a/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.h +++ b/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.h @@ -24,8 +24,7 @@ NS_ASSUME_NONNULL_BEGIN typedef NS_ENUM(NSUInteger, MTROnboardingPayloadType) { MTROnboardingPayloadTypeQRCode = 0, MTROnboardingPayloadTypeManualCode, - MTROnboardingPayloadTypeNFC, - MTROnboardingPayloadTypeAdmin, + MTROnboardingPayloadTypeNFC }; @interface MTROnboardingPayloadParser : NSObject diff --git a/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.m b/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.m index 3af4fe1a38bb9c..df68311d700914 100644 --- a/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.m +++ b/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.m @@ -29,7 +29,6 @@ + (nullable MTRSetupPayload *)setupPayloadForOnboardingPayload:(NSString *)onboa MTRSetupPayload * payload; switch (type) { case MTROnboardingPayloadTypeManualCode: - case MTROnboardingPayloadTypeAdmin: payload = [self setupPayloadForManualCodeOnboardingPayload:onboardingPayload error:error]; break; case MTROnboardingPayloadTypeQRCode: diff --git a/src/darwin/Framework/CHIP/MTROperationalCredentialsDelegate.h b/src/darwin/Framework/CHIP/MTROperationalCredentialsDelegate.h index d7580bce7e9e87..803e19eee30eed 100644 --- a/src/darwin/Framework/CHIP/MTROperationalCredentialsDelegate.h +++ b/src/darwin/Framework/CHIP/MTROperationalCredentialsDelegate.h @@ -22,9 +22,11 @@ #import "MTRError_Internal.h" #import "MTRKeypair.h" +#import "MTRNOCChainIssuer.h" #import "MTRP256KeypairBridge.h" #import "MTRPersistentStorageDelegateBridge.h" +#include #include #include #include @@ -55,6 +57,24 @@ class MTROperationalCredentialsDelegate : public chip::Controller::OperationalCr void SetDeviceID(chip::NodeId deviceId) { mDeviceBeingPaired = deviceId; } void ResetDeviceID() { mDeviceBeingPaired = chip::kUndefinedNodeId; } + void SetDeviceCommissioner(chip::Controller::DeviceCommissioner * cppCommissioner) { mCppCommissioner = cppCommissioner; } + + chip::Optional GetCommissioningParameters() + { + return mCppCommissioner == nullptr ? chip::NullOptional : mCppCommissioner->GetCommissioningParameters(); + } + + void setChipWorkQueue(dispatch_queue_t chipWorkQueue) { mChipWorkQueue = chipWorkQueue; } + + void SetNocChainIssuer(id nocChainIssuer, dispatch_queue_t nocChainIssuerQueue) + { + mNocChainIssuer = nocChainIssuer; + mNocChainIssuerQueue = nocChainIssuerQueue; + } + + CHIP_ERROR NOCChainGenerated(CHIP_ERROR status, const chip::ByteSpan & noc, const chip::ByteSpan & icac, + const chip::ByteSpan & rcac, chip::Optional ipk, chip::Optional adminSubject); + CHIP_ERROR GenerateNOC(chip::NodeId nodeId, chip::FabricId fabricId, const chip::CATValues & cats, const chip::Crypto::P256PublicKey & pubkey, chip::MutableByteSpan & noc); @@ -97,6 +117,29 @@ class MTROperationalCredentialsDelegate : public chip::Controller::OperationalCr chip::FabricId fabricId, const chip::CATValues & cats, const chip::Crypto::P256PublicKey & pubkey, chip::MutableByteSpan & noc); + /** + * When a NOCChainIssuer is set, then onNOCChainGenerationNeeded will be called when the NOC CSR needs to be + * signed. This allows for custom credentials issuer implementations, for example, when a proprietary cloud API will perform the + * CSR signing. The commissioning workflow will stop upon the onNOCChainGenerationNeeded callback and resume once + * onNOCChainGenerationComplete is called. + * + * Caller must pass a non-nil value for the rootCertificate, intermediateCertificate, operationalCertificate + * If ipk and adminSubject are non nil, then they will be used in the AddNOC command sent to the commissionee. If they are not + * populated, then the values provided in the MTRDeviceController initialization will be used. + */ + void onNOCChainGenerationComplete(NSData * operationalCertificate, NSData * intermediateCertificate, NSData * rootCertificate, + NSData * _Nullable ipk, NSNumber * _Nullable adminSubject, NSError * __autoreleasing * error); + + void setNSError(CHIP_ERROR err, NSError * __autoreleasing * outError); + + CHIP_ERROR CallbackGenerateNOCChain(const chip::ByteSpan & csrElements, const chip::ByteSpan & csrNonce, + const chip::ByteSpan & attestationSignature, const chip::ByteSpan & attestationChallenge, const chip::ByteSpan & DAC, + const chip::ByteSpan & PAI, chip::Callback::Callback * onCompletion); + + CHIP_ERROR LocalGenerateNOCChain(const chip::ByteSpan & csrElements, const chip::ByteSpan & csrNonce, + const chip::ByteSpan & attestationSignature, const chip::ByteSpan & attestationChallenge, const chip::ByteSpan & DAC, + const chip::ByteSpan & PAI, chip::Callback::Callback * onCompletion); + ChipP256KeypairPtr mIssuerKey; chip::Crypto::AesCcm128Key mIPK; @@ -115,6 +158,12 @@ class MTROperationalCredentialsDelegate : public chip::Controller::OperationalCr // have a root cert, and at that point it gets initialized to nil. NSData * _Nullable mRootCert; NSData * _Nullable mIntermediateCert; + + chip::Controller::DeviceCommissioner * mCppCommissioner = nullptr; + id _Nullable mNocChainIssuer; + dispatch_queue_t _Nullable mNocChainIssuerQueue; + dispatch_queue_t _Nullable mChipWorkQueue; + chip::Callback::Callback * mOnNOCCompletionCallback = nullptr; }; NS_ASSUME_NONNULL_END diff --git a/src/darwin/Framework/CHIP/MTROperationalCredentialsDelegate.mm b/src/darwin/Framework/CHIP/MTROperationalCredentialsDelegate.mm index 3688c9a08f7433..1113ad18505086 100644 --- a/src/darwin/Framework/CHIP/MTROperationalCredentialsDelegate.mm +++ b/src/darwin/Framework/CHIP/MTROperationalCredentialsDelegate.mm @@ -27,7 +27,10 @@ #import "MTRLogging.h" #import "NSDataSpanConversion.h" +#include #include +#include +#include #include #include #include @@ -112,9 +115,171 @@ return NewNodeOperationalX509Cert(noc_request, pubkey, signingKeypair, noc); } +CHIP_ERROR MTROperationalCredentialsDelegate::NOCChainGenerated(CHIP_ERROR status, const ByteSpan & noc, const ByteSpan & icac, + const ByteSpan & rcac, Optional ipk, Optional adminSubject) +{ + ReturnErrorCodeIf(mOnNOCCompletionCallback == nullptr, CHIP_ERROR_INCORRECT_STATE); + + Callback::Callback * onCompletion = mOnNOCCompletionCallback; + mOnNOCCompletionCallback = nullptr; + + // Call-back into commissioner with the generated data. + dispatch_sync(mChipWorkQueue, ^{ + onCompletion->mCall(onCompletion->mContext, status, noc, icac, rcac, ipk, adminSubject); + }); + + return CHIP_NO_ERROR; +} + CHIP_ERROR MTROperationalCredentialsDelegate::GenerateNOCChain(const chip::ByteSpan & csrElements, const chip::ByteSpan & csrNonce, const chip::ByteSpan & attestationSignature, const chip::ByteSpan & attestationChallenge, const chip::ByteSpan & DAC, const chip::ByteSpan & PAI, chip::Callback::Callback * onCompletion) +{ + if (mNocChainIssuer != nil) { + return CallbackGenerateNOCChain(csrElements, csrNonce, attestationSignature, attestationChallenge, DAC, PAI, onCompletion); + } else { + return LocalGenerateNOCChain(csrElements, csrNonce, attestationSignature, attestationChallenge, DAC, PAI, onCompletion); + } +} + +CHIP_ERROR MTROperationalCredentialsDelegate::CallbackGenerateNOCChain(const chip::ByteSpan & csrElements, + const chip::ByteSpan & csrNonce, const chip::ByteSpan & csrElementsSignature, const chip::ByteSpan & attestationChallenge, + const chip::ByteSpan & DAC, const chip::ByteSpan & PAI, + chip::Callback::Callback * onCompletion) +{ + mOnNOCCompletionCallback = onCompletion; + + TLVReader reader; + reader.Init(csrElements); + + if (reader.GetType() == kTLVType_NotSpecified) { + ReturnErrorOnFailure(reader.Next()); + } + + VerifyOrReturnError(reader.GetType() == kTLVType_Structure, CHIP_ERROR_WRONG_TLV_TYPE); + VerifyOrReturnError(reader.GetTag() == AnonymousTag(), CHIP_ERROR_UNEXPECTED_TLV_ELEMENT); + + TLVType containerType; + ReturnErrorOnFailure(reader.EnterContainer(containerType)); + ReturnErrorOnFailure(reader.Next(kTLVType_ByteString, TLV::ContextTag(1))); + + chip::ByteSpan csr; + reader.Get(csr); + reader.ExitContainer(containerType); + + CSRInfo * csrInfo = [[CSRInfo alloc] initWithNonce:AsData(csrNonce) + elements:AsData(csrElements) + elementsSignature:AsData(csrElementsSignature) + csr:AsData(csr)]; + + chip::ByteSpan certificationDeclarationSpan; + chip::ByteSpan attestationNonceSpan; + uint32_t timestampDeconstructed; + chip::ByteSpan firmwareInfoSpan; + chip::Credentials::DeviceAttestationVendorReservedDeconstructor vendorReserved; + + __block chip::Optional commissioningParameters; + // Dereferencing mCppCommissioner as it would be set to point to a valid Cpp commissioner by now, as we are in the middle of + // commissioning + dispatch_sync(mChipWorkQueue, ^{ + commissioningParameters = mCppCommissioner->GetCommissioningParameters(); + }); + VerifyOrReturnError(commissioningParameters.HasValue(), CHIP_ERROR_INCORRECT_STATE); + + // Attestation Elements, nonce and signature will have a value in Commissioning Params as the CSR needs a signature or else we + // cannot trust it + ReturnErrorOnFailure( + chip::Credentials::DeconstructAttestationElements(commissioningParameters.Value().GetAttestationElements().Value(), + certificationDeclarationSpan, attestationNonceSpan, timestampDeconstructed, firmwareInfoSpan, vendorReserved)); + + AttestationInfo * attestationInfo = + [[AttestationInfo alloc] initWithChallenge:AsData(attestationChallenge) + nonce:AsData(commissioningParameters.Value().GetAttestationNonce().Value()) + elements:AsData(commissioningParameters.Value().GetAttestationElements().Value()) + elementsSignature:AsData(commissioningParameters.Value().GetAttestationSignature().Value()) + dac:AsData(DAC) + pai:AsData(PAI) + certificationDeclaration:AsData(certificationDeclarationSpan) + firmwareInfo:AsData(firmwareInfoSpan)]; + + dispatch_sync(mNocChainIssuerQueue, ^{ + [mNocChainIssuer onNOCChainGenerationNeeded:csrInfo + attestationInfo:attestationInfo + onNOCChainGenerationComplete:^void(NSData * operationalCertificate, NSData * intermediateCertificate, + NSData * rootCertificate, NSData * ipk, NSNumber * adminSubject, NSError * __autoreleasing * error) { + onNOCChainGenerationComplete( + operationalCertificate, intermediateCertificate, rootCertificate, ipk, adminSubject, error); + }]; + }); + + return CHIP_NO_ERROR; +} + +void MTROperationalCredentialsDelegate::setNSError(CHIP_ERROR err, NSError * __autoreleasing * outError) +{ + if (outError) { + *outError = [MTRError errorForCHIPErrorCode:err]; + } +} + +void MTROperationalCredentialsDelegate::onNOCChainGenerationComplete(NSData * operationalCertificate, + NSData * intermediateCertificate, NSData * rootCertificate, NSData * _Nullable ipk, NSNumber * _Nullable adminSubject, + NSError * __autoreleasing * error) +{ + if (operationalCertificate == nil || intermediateCertificate == nil || rootCertificate == nil) { + setNSError(CHIP_ERROR_INVALID_ARGUMENT, error); + return; + } + + // use ipk and adminSubject from CommissioningParameters if not passed in. + // Dereferencing mCppCommissioner as it would be set to point to a valid Cpp commissioner by now, as we are in the middle of + // commissioning + __block chip::Optional commissioningParameters; + dispatch_sync(mChipWorkQueue, ^{ + commissioningParameters = mCppCommissioner->GetCommissioningParameters(); + }); + if (!commissioningParameters.HasValue()) { + setNSError(CHIP_ERROR_INCORRECT_STATE, error); + return; + } + + chip::Optional ipkOptional; + uint8_t ipkValue[chip::CHIP_CRYPTO_SYMMETRIC_KEY_LENGTH_BYTES]; + chip::Crypto::AesCcm128KeySpan ipkTempSpan(ipkValue); + if (ipk != nil) { + if ([ipk length] != sizeof(ipkValue)) { + setNSError(CHIP_ERROR_INCORRECT_STATE, error); + return; + } + memcpy(&ipkValue[0], [ipk bytes], [ipk length]); + ipkOptional.SetValue(ipkTempSpan); + } else if (commissioningParameters.Value().GetIpk().HasValue()) { + ipkOptional.SetValue(commissioningParameters.Value().GetIpk().Value()); + } + + chip::Optional adminSubjectOptional; + if (adminSubject != nil) { + adminSubjectOptional.SetValue(adminSubject.unsignedLongLongValue); + } else { + adminSubjectOptional = commissioningParameters.Value().GetAdminSubject(); + } + + // This could potentially be done as an async operation as a future optimization. But it ultimately calls + // DeviceCommissioner::OnDeviceNOCChainGeneration which sends the AddNoc message to the target. The call returns without + // blocking as it is. + CHIP_ERROR err = NOCChainGenerated(CHIP_NO_ERROR, AsByteSpan(operationalCertificate), AsByteSpan(intermediateCertificate), + AsByteSpan(rootCertificate), ipkOptional, adminSubjectOptional); + + if (err != CHIP_NO_ERROR) { + MTR_LOG_ERROR("Failed to SetNocChain for the device: %" CHIP_ERROR_FORMAT, err.Format()); + setNSError(CHIP_ERROR_INCORRECT_STATE, error); + } +} + +CHIP_ERROR MTROperationalCredentialsDelegate::LocalGenerateNOCChain(const chip::ByteSpan & csrElements, + const chip::ByteSpan & csrNonce, const chip::ByteSpan & attestationSignature, const chip::ByteSpan & attestationChallenge, + const chip::ByteSpan & DAC, const chip::ByteSpan & PAI, + chip::Callback::Callback * onCompletion) { chip::NodeId assignedId; if (mNodeIdRequested) { diff --git a/src/darwin/Framework/CHIP/MTRSetupPayload.h b/src/darwin/Framework/CHIP/MTRSetupPayload.h index 73fd981bde4265..926e344fa06f90 100644 --- a/src/darwin/Framework/CHIP/MTRSetupPayload.h +++ b/src/darwin/Framework/CHIP/MTRSetupPayload.h @@ -61,7 +61,7 @@ typedef NS_ENUM(NSUInteger, MTROptionalQRCodeInfoType) { * * Otherwise its value is made up of the MTRDiscoveryCapabilities flags. */ -@property (nonatomic, assign, nullable) NSNumber * rendezvousInformation; +@property (nonatomic, copy, nullable) NSNumber * rendezvousInformation; @property (nonatomic, copy) NSNumber * discriminator; @property (nonatomic, assign) BOOL hasShortDiscriminator; @property (nonatomic, copy) NSNumber * setUpPINCode; diff --git a/src/darwin/Framework/CHIP/Matter.h b/src/darwin/Framework/CHIP/Matter.h index 9c5af0634a904f..d702cb7c4f21fc 100644 --- a/src/darwin/Framework/CHIP/Matter.h +++ b/src/darwin/Framework/CHIP/Matter.h @@ -18,9 +18,11 @@ #import #import +#import #import #import #import +#import #import #import #import @@ -37,6 +39,7 @@ #import #import #import +#import #import #import #import diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h index 43e1ddc4bf0516..201b0844d66305 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h +++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h @@ -21998,6 +21998,8 @@ NS_ASSUME_NONNULL_BEGIN - (void)failAtFaultWithParams:(MTRFaultInjectionClusterFailAtFaultParams *)params completionHandler:(StatusCompletion)completionHandler; +- (void)failRandomlyAtFaultWithParams:(MTRFaultInjectionClusterFailRandomlyAtFaultParams *)params + completionHandler:(StatusCompletion)completionHandler; - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler; diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm index e043a252d51acc..1d1c90e8e4359c 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm @@ -93615,6 +93615,36 @@ new MTRCommandSuccessCallbackBridge( }); } +- (void)failRandomlyAtFaultWithParams:(MTRFaultInjectionClusterFailRandomlyAtFaultParams *)params + completionHandler:(StatusCompletion)completionHandler +{ + // Make a copy of params before we go async. + params = [params copy]; + new MTRCommandSuccessCallbackBridge( + self.callbackQueue, self.device, + ^(id _Nullable value, NSError * _Nullable error) { + completionHandler(error); + }, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + chip::Optional timedInvokeTimeoutMs; + ListFreer listFreer; + FaultInjection::Commands::FailRandomlyAtFault::Type request; + if (params != nil) { + if (params.timedInvokeTimeoutMs != nil) { + timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue); + } + } + request.type = static_cast>(params.type.unsignedCharValue); + request.id = params.id.unsignedIntValue; + request.percentage = params.percentage.unsignedCharValue; + + auto successFn = Callback::FromCancelable(success); + auto failureFn = Callback::FromCancelable(failure); + chip::Controller::FaultInjectionCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + }); +} + - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler { diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h b/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h index dbcc34b4f7e45f..869f034e3b2b92 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h +++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h @@ -1702,6 +1702,7 @@ typedef NS_ENUM(uint32_t, MTRClusterCommandIDType) { // Cluster FaultInjection commands MTRClusterFaultInjectionCommandFailAtFaultID = 0x00000000, + MTRClusterFaultInjectionCommandFailRandomlyAtFaultID = 0x00000001, }; diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h index 38664c17e71687..bd815031aa0bc2 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h +++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h @@ -5297,6 +5297,10 @@ NS_ASSUME_NONNULL_BEGIN expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completionHandler:(StatusCompletion)completionHandler; +- (void)failRandomlyAtFaultWithParams:(MTRFaultInjectionClusterFailRandomlyAtFaultParams *)params + expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries + expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs + completionHandler:(StatusCompletion)completionHandler; - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params; diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm index 26f39666023990..32d77c731b7dc3 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm @@ -22088,6 +22088,41 @@ new MTRCommandSuccessCallbackBridge( [self.device setExpectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs]; } +- (void)failRandomlyAtFaultWithParams:(MTRFaultInjectionClusterFailRandomlyAtFaultParams *)params + expectedValues:(NSArray *> *)expectedValues + expectedValueInterval:(NSNumber *)expectedValueIntervalMs + completionHandler:(StatusCompletion)completionHandler +{ + // Make a copy of params before we go async. + params = [params copy]; + MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; + new MTRCommandSuccessCallbackBridge( + self.callbackQueue, baseDevice, + ^(id _Nullable value, NSError * _Nullable error) { + completionHandler(error); + }, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + chip::Optional timedInvokeTimeoutMs; + ListFreer listFreer; + FaultInjection::Commands::FailRandomlyAtFault::Type request; + if (params != nil) { + if (params.timedInvokeTimeoutMs != nil) { + timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue); + } + } + request.type = static_cast>(params.type.unsignedCharValue); + request.id = params.id.unsignedIntValue; + request.percentage = params.percentage.unsignedCharValue; + + auto successFn = Callback::FromCancelable(success); + auto failureFn = Callback::FromCancelable(failure); + chip::Controller::FaultInjectionCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + }); + + [self.device setExpectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs]; +} + - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params { return [self.device readAttributeWithEndpointID:@(_endpoint) diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h index bfdc4a5aecdfb3..bdd49c7c83214c 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h +++ b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h @@ -6075,6 +6075,32 @@ NS_ASSUME_NONNULL_BEGIN */ @property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs; +- (instancetype)init; +- (id)copyWithZone:(nullable NSZone *)zone; +@end +@interface MTRFaultInjectionClusterFailRandomlyAtFaultParams : NSObject + +@property (nonatomic, copy) NSNumber * _Nonnull type; + +@property (nonatomic, copy) NSNumber * _Nonnull id; + +@property (nonatomic, copy) NSNumber * _Nonnull percentage; +/** + * Controls whether the command is a timed command (using Timed Invoke). + * + * If nil (the default value), a regular invoke is done for commands that do + * not require a timed invoke and a timed invoke with some default timed request + * timeout is done for commands that require a timed invoke. + * + * If not nil, a timed invoke is done, with the provided value used as the timed + * request timeout. The value should be chosen small enough to provide the + * desired security properties but large enough that it will allow a round-trip + * from the sever to the client (for the status response and actual invoke + * request) within the timeout window. + * + */ +@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs; + - (instancetype)init; - (id)copyWithZone:(nullable NSZone *)zone; @end diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm index 004f2f29070299..9ea1ae5cf02d39 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm @@ -8157,6 +8157,41 @@ - (NSString *)description return descriptionString; } +@end +@implementation MTRFaultInjectionClusterFailRandomlyAtFaultParams +- (instancetype)init +{ + if (self = [super init]) { + + _type = @(0); + + _id = @(0); + + _percentage = @(0); + _timedInvokeTimeoutMs = nil; + } + return self; +} + +- (id)copyWithZone:(nullable NSZone *)zone; +{ + auto other = [[MTRFaultInjectionClusterFailRandomlyAtFaultParams alloc] init]; + + other.type = self.type; + other.id = self.id; + other.percentage = self.percentage; + other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs; + + return other; +} + +- (NSString *)description +{ + NSString * descriptionString = [NSString + stringWithFormat:@"<%@: type:%@; id:%@; percentage:%@; >", NSStringFromClass([self class]), _type, _id, _percentage]; + return descriptionString; +} + @end NS_ASSUME_NONNULL_END diff --git a/src/darwin/Framework/CHIPTests/MTRSetupPayloadParserTests.m b/src/darwin/Framework/CHIPTests/MTRSetupPayloadParserTests.m index aae5f60ead6575..beb638f777528c 100644 --- a/src/darwin/Framework/CHIPTests/MTRSetupPayloadParserTests.m +++ b/src/darwin/Framework/CHIPTests/MTRSetupPayloadParserTests.m @@ -66,26 +66,6 @@ - (void)testOnboardingPayloadParser_Manual_WrongType XCTAssertEqual(error.code, MTRErrorCodeInvalidArgument); } -- (void)testOnboardingPayloadParser_Admin_NoError -{ - NSError * error; - MTRSetupPayload * payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:@"636108753500001000015" - ofType:MTROnboardingPayloadTypeAdmin - error:&error]; - - XCTAssertNotNil(payload); - XCTAssertNil(error); - - XCTAssertTrue(payload.hasShortDiscriminator); - XCTAssertEqual(payload.discriminator.unsignedIntegerValue, 10); - XCTAssertEqual(payload.setUpPINCode.unsignedIntegerValue, 123456780); - XCTAssertEqual(payload.vendorID.unsignedIntegerValue, 1); - XCTAssertEqual(payload.productID.unsignedIntegerValue, 1); - XCTAssertEqual(payload.commissioningFlow, MTRCommissioningFlowCustom); - XCTAssertEqual(payload.version.unsignedIntegerValue, 0); - XCTAssertNil(payload.rendezvousInformation); -} - - (void)testOnboardingPayloadParser_Admin_WrongType { NSError * error; @@ -118,17 +98,6 @@ - (void)testOnboardingPayloadParser_QRCode_NoError XCTAssertEqual([payload.rendezvousInformation unsignedLongValue], MTRDiscoveryCapabilitiesSoftAP); } -- (void)testOnboardingPayloadParser_QRCode_WrongType -{ - NSError * error; - MTRSetupPayload * payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:@"MT:R5L90MP500K64J00000" - ofType:MTROnboardingPayloadTypeAdmin - error:&error]; - - XCTAssertNil(payload); - XCTAssertEqual(error.code, MTRErrorCodeIntegrityCheckFailed); -} - - (void)testOnboardingPayloadParser_NFC_NoError { NSError * error; diff --git a/src/darwin/Framework/Matter.xcodeproj/project.pbxproj b/src/darwin/Framework/Matter.xcodeproj/project.pbxproj index 47da9c8ee28e48..7102d13c7be998 100644 --- a/src/darwin/Framework/Matter.xcodeproj/project.pbxproj +++ b/src/darwin/Framework/Matter.xcodeproj/project.pbxproj @@ -33,6 +33,11 @@ 2CB7163C252E8A7C0026E2BB /* MTRDevicePairingDelegateBridge.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2CB71639252E8A7B0026E2BB /* MTRDevicePairingDelegateBridge.mm */; }; 2CB7163F252F731E0026E2BB /* MTRDevicePairingDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CB7163E252F731E0026E2BB /* MTRDevicePairingDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; 2FD775552695557E00FF4B12 /* error-mapping.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2FD775542695557E00FF4B12 /* error-mapping.cpp */; }; + 3CF134A7289D8ADA0017A19E /* MTRCSRInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CF134A6289D8AD90017A19E /* MTRCSRInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3CF134A9289D8D800017A19E /* MTRCSRInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CF134A8289D8D800017A19E /* MTRCSRInfo.m */; }; + 3CF134AB289D8DF70017A19E /* MTRAttestationInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CF134AA289D8DF70017A19E /* MTRAttestationInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3CF134AD289D8E570017A19E /* MTRAttestationInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CF134AC289D8E570017A19E /* MTRAttestationInfo.m */; }; + 3CF134AF289D90FF0017A19E /* MTRNOCChainIssuer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CF134AE289D90FF0017A19E /* MTRNOCChainIssuer.h */; settings = {ATTRIBUTES = (Public, ); }; }; 5112F606287CD2C100B827E7 /* privilege-storage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5112F605287CD2C100B827E7 /* privilege-storage.cpp */; }; 5129BCFD26A9EE3300122DDF /* MTRError.h in Headers */ = {isa = PBXBuildFile; fileRef = 5129BCFC26A9EE3300122DDF /* MTRError.h */; settings = {ATTRIBUTES = (Public, ); }; }; 5136661328067D550025EDAE /* MTRDeviceController_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 5136660F28067D540025EDAE /* MTRDeviceController_Internal.h */; }; @@ -164,6 +169,11 @@ 2CB71639252E8A7B0026E2BB /* MTRDevicePairingDelegateBridge.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MTRDevicePairingDelegateBridge.mm; sourceTree = ""; }; 2CB7163E252F731E0026E2BB /* MTRDevicePairingDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTRDevicePairingDelegate.h; sourceTree = ""; }; 2FD775542695557E00FF4B12 /* error-mapping.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "error-mapping.cpp"; path = "../../../app/util/error-mapping.cpp"; sourceTree = ""; }; + 3CF134A6289D8AD90017A19E /* MTRCSRInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MTRCSRInfo.h; sourceTree = ""; }; + 3CF134A8289D8D800017A19E /* MTRCSRInfo.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MTRCSRInfo.m; sourceTree = ""; }; + 3CF134AA289D8DF70017A19E /* MTRAttestationInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MTRAttestationInfo.h; sourceTree = ""; }; + 3CF134AC289D8E570017A19E /* MTRAttestationInfo.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MTRAttestationInfo.m; sourceTree = ""; }; + 3CF134AE289D90FF0017A19E /* MTRNOCChainIssuer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MTRNOCChainIssuer.h; sourceTree = ""; }; 5112F605287CD2C100B827E7 /* privilege-storage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "privilege-storage.cpp"; path = "../../../app/util/privilege-storage.cpp"; sourceTree = ""; }; 5129BCFC26A9EE3300122DDF /* MTRError.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MTRError.h; sourceTree = ""; }; 5136660F28067D540025EDAE /* MTRDeviceController_Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTRDeviceController_Internal.h; sourceTree = ""; }; @@ -427,6 +437,11 @@ 5A6FEC8F27B563D900F25F42 /* MTRDeviceControllerOverXPC.m */, 5A6FEC9427B5976200F25F42 /* MTRDeviceControllerXPCConnection.h */, 5A6FEC9527B5983000F25F42 /* MTRDeviceControllerXPCConnection.m */, + 3CF134A6289D8AD90017A19E /* MTRCSRInfo.h */, + 3CF134A8289D8D800017A19E /* MTRCSRInfo.m */, + 3CF134AA289D8DF70017A19E /* MTRAttestationInfo.h */, + 3CF134AC289D8E570017A19E /* MTRAttestationInfo.m */, + 3CF134AE289D90FF0017A19E /* MTRNOCChainIssuer.h */, ); path = CHIP; sourceTree = ""; @@ -495,7 +510,10 @@ 991DC0842475F45400C13860 /* MTRDeviceController.h in Headers */, AF1CB86E2874B03B00865A96 /* MTROTAProviderDelegate.h in Headers */, 754F3DF427FBB94B00E60580 /* MTREventTLVValueDecoder_Internal.h in Headers */, + 3CF134AF289D90FF0017A19E /* MTRNOCChainIssuer.h in Headers */, + 3CF134AB289D8DF70017A19E /* MTRAttestationInfo.h in Headers */, B2E0D7B2245B0B5C003C5B48 /* MTRManualSetupPayloadParser.h in Headers */, + 3CF134A7289D8ADA0017A19E /* MTRCSRInfo.h in Headers */, B2E0D7B1245B0B5C003C5B48 /* Matter.h in Headers */, 7596A84428762729004DAE0E /* MTRDevice.h in Headers */, B2E0D7B8245B0B5C003C5B48 /* MTRSetupPayload.h in Headers */, @@ -666,6 +684,7 @@ 51B22C262740CB32008D5055 /* MTRStructsObjc.mm in Sources */, 2C222AD1255C620600E446B9 /* MTRBaseDevice.mm in Sources */, 1EC3238D271999E2002A8BF0 /* cluster-objects.cpp in Sources */, + 3CF134A9289D8D800017A19E /* MTRCSRInfo.m in Sources */, 991DC0892475F47D00C13860 /* MTRDeviceController.mm in Sources */, B2E0D7B7245B0B5C003C5B48 /* MTRQRCodeSetupPayloadParser.mm in Sources */, 1EDCE546289049A100E41EC9 /* MTROTAHeaderParser.mm in Sources */, @@ -685,6 +704,7 @@ 5A6FEC9027B563D900F25F42 /* MTRDeviceControllerOverXPC.m in Sources */, B289D4222639C0D300D4E314 /* MTROnboardingPayloadParser.m in Sources */, 5112F606287CD2C100B827E7 /* privilege-storage.cpp in Sources */, + 3CF134AD289D8E570017A19E /* MTRAttestationInfo.m in Sources */, 2C1B027A2641DB4E00780EF1 /* MTROperationalCredentialsDelegate.mm in Sources */, 7560FD1C27FBBD3F005E85B3 /* MTREventTLVValueDecoder.mm in Sources */, 7596A84928762783004DAE0E /* MTRAsyncCallbackWorkQueue.mm in Sources */, diff --git a/src/inet/BUILD.gn b/src/inet/BUILD.gn index 5a85beb667c25b..a042007d02c5a3 100644 --- a/src/inet/BUILD.gn +++ b/src/inet/BUILD.gn @@ -88,7 +88,6 @@ static_library("inet") { "InetArgParser.h", "InetError.cpp", "InetError.h", - "InetFaultInjection.h", "InetInterface.cpp", "InetInterface.h", "InetLayer.h", @@ -108,7 +107,7 @@ static_library("inet") { } if (chip_system_config_use_open_thread_inet_endpoints) { - public_deps += [ "${chip_root}/third_party/openthread:openthread" ] + public_deps += [ "${chip_root}/third_party/openthread:openthread_device" ] } if (chip_inet_config_enable_tcp_endpoint) { @@ -132,17 +131,12 @@ static_library("inet") { } if (chip_with_nlfaultinjection) { - sources += [ "InetFaultInjection.cpp" ] + sources += [ + "InetFaultInjection.cpp", + "InetFaultInjection.h", + ] public_deps += [ "${nlfaultinjection_root}:nlfaultinjection" ] } cflags = [ "-Wconversion" ] - - include_dirs = [] - if (current_os == "android") { - include_dirs += [ - "${chip_root}/third_party/android/platform-libcore/android-platform-libcore/luni/src/main/native", - "${chip_root}/third_party/android/platform-libcore/android-platform-libcore/include", - ] - } } diff --git a/src/inet/tests/BUILD.gn b/src/inet/tests/BUILD.gn index 3946a798fa63c3..1788410bb6c6d3 100644 --- a/src/inet/tests/BUILD.gn +++ b/src/inet/tests/BUILD.gn @@ -35,8 +35,6 @@ static_library("helpers") { "TestInetCommonOptions.h", "TestInetCommonPosix.cpp", "TestInetLayerCommon.cpp", - "TestSetupFaultInjection.h", - "TestSetupFaultInjectionPosix.cpp", "TestSetupSignalling.h", "TestSetupSignallingPosix.cpp", ] @@ -45,6 +43,13 @@ static_library("helpers") { sources += [ "TestInetLayer.cpp" ] } + if (chip_with_nlfaultinjection) { + sources += [ + "TestSetupFaultInjection.h", + "TestSetupFaultInjectionPosix.cpp", + ] + } + cflags = [ "-Wconversion" ] public_deps = [ diff --git a/src/lib/support/PersistedCounter.h b/src/lib/support/PersistedCounter.h index f17434aab40305..9261da6ac9faff 100644 --- a/src/lib/support/PersistedCounter.h +++ b/src/lib/support/PersistedCounter.h @@ -30,6 +30,7 @@ #include #include #include +#include #include namespace chip { diff --git a/src/lwip/BUILD.gn b/src/lwip/BUILD.gn index 4490159793bbd0..830e82b3cb0e75 100644 --- a/src/lwip/BUILD.gn +++ b/src/lwip/BUILD.gn @@ -32,7 +32,7 @@ assert(lwip_platform == "external" || lwip_platform == "standalone" || lwip_platform == "cc13x2_26x2" || lwip_platform == "cc32xx" || lwip_platform == "efr32" || lwip_platform == "k32w0" || lwip_platform == "qpg" || lwip_platform == "mbed" || - lwip_platform == "p6" || lwip_platform == "cyw30739" || + lwip_platform == "psoc6" || lwip_platform == "cyw30739" || lwip_platform == "bl602" || lwip_platform == "mw320", "Unsupported lwIP platform: ${lwip_platform}") @@ -54,8 +54,8 @@ if (lwip_platform == "cc13x2_26x2") { import("${qpg_sdk_build_root}/qpg_sdk.gni") } else if (lwip_platform == "k32w0") { import("//build_overrides/k32w0_sdk.gni") -} else if (lwip_platform == "p6") { - import("//build_overrides/p6.gni") +} else if (lwip_platform == "psoc6") { + import("//build_overrides/psoc6.gni") } else if (lwip_platform == "cyw30739") { import("//build_overrides/cyw30739_sdk.gni") } else if (lwip_platform == "bl602") { @@ -95,11 +95,11 @@ if (current_os == "zephyr" || current_os == "mbed") { group("all") { deps = [ ":lwip" ] } -} else if (lwip_platform == "p6") { +} else if (lwip_platform == "psoc6") { group("lwip") { public_deps = [ ":lwip_buildconfig" ] public_configs = [ "${chip_root}/src:includes" ] - public_configs += [ "${p6_sdk_build_root}:p6_sdk_config" ] + public_configs += [ "${psoc6_sdk_build_root}:psoc6_sdk_config" ] } group("all") { diff --git a/src/platform/BUILD.gn b/src/platform/BUILD.gn index 31e25b41a6a5df..e5758593538fde 100644 --- a/src/platform/BUILD.gn +++ b/src/platform/BUILD.gn @@ -172,10 +172,10 @@ if (chip_device_platform != "none" && chip_device_platform != "external") { "CHIP_DEVICE_LAYER_TARGET_ESP32=1", "CHIP_DEVICE_LAYER_TARGET=ESP32", ] - } else if (chip_device_platform == "p6") { + } else if (chip_device_platform == "psoc6") { defines += [ - "CHIP_DEVICE_LAYER_TARGET_P6=1", - "CHIP_DEVICE_LAYER_TARGET=P6", + "CHIP_DEVICE_LAYER_TARGET_PSOC6=1", + "CHIP_DEVICE_LAYER_TARGET=Infineon/PSOC6", ] } else if (chip_device_platform == "linux") { defines += [ @@ -242,7 +242,7 @@ if (chip_device_platform != "none" && chip_device_platform != "external") { } else if (chip_device_platform == "cyw30739") { defines += [ "CHIP_DEVICE_LAYER_TARGET_CYW30739=1", - "CHIP_DEVICE_LAYER_TARGET=CYW30739", + "CHIP_DEVICE_LAYER_TARGET=Infineon/CYW30739", ] } else if (chip_device_platform == "webos") { defines += [ @@ -421,8 +421,8 @@ if (chip_device_platform != "none") { _platform_target = "android" } else if (chip_device_platform == "external") { _platform_target = chip_platform_target - } else if (chip_device_platform == "p6") { - _platform_target = "P6" + } else if (chip_device_platform == "psoc6") { + _platform_target = "Infineon/PSOC6" } else if (chip_device_platform == "ameba") { _platform_target = "Ameba" } else if (chip_device_platform == "webos") { @@ -432,7 +432,7 @@ if (chip_device_platform != "none") { } else if (chip_device_platform == "fake") { _platform_target = "fake" } else if (chip_device_platform == "cyw30739") { - _platform_target = "CYW30739" + _platform_target = "Infineon/CYW30739" } else if (chip_device_platform == "mw320") { _platform_target = "nxp/mw320" } else if (chip_device_platform == "zephyr") { diff --git a/src/platform/EFR32/BUILD.gn b/src/platform/EFR32/BUILD.gn index e406ce994eedee..eb73a6f80f85cf 100644 --- a/src/platform/EFR32/BUILD.gn +++ b/src/platform/EFR32/BUILD.gn @@ -98,9 +98,9 @@ static_library("EFR32") { "$dir_pw_kvs", ] if (chip_enable_openthread) { - public_deps += [ "${chip_root}/third_party/openthread:openthread" ] + public_deps += [ "${chip_root}/third_party/openthread:openthread_device" ] - deps += [ "${chip_root}/third_party/silabs:openthread_cli" ] + deps += [ "${chip_root}/third_party/openthread:openthread_cli" ] sources += [ "../OpenThread/OpenThreadUtils.cpp", diff --git a/src/platform/EFR32/CHIPCryptoPALPsaEfr32.cpp b/src/platform/EFR32/CHIPCryptoPALPsaEfr32.cpp index 6077681f19eb57..27289aeea069aa 100644 --- a/src/platform/EFR32/CHIPCryptoPALPsaEfr32.cpp +++ b/src/platform/EFR32/CHIPCryptoPALPsaEfr32.cpp @@ -894,12 +894,16 @@ P256Keypair::~P256Keypair() CHIP_ERROR P256Keypair::NewCertificateSigningRequest(uint8_t * out_csr, size_t & csr_length) const { MutableByteSpan csr(out_csr, csr_length); - return GenerateCertificateSigningRequest(this, csr); + CHIP_ERROR err = GenerateCertificateSigningRequest(this, csr); + csr_length = (CHIP_NO_ERROR == err) ? csr.size() : 0; + return err; } CHIP_ERROR VerifyCertificateSigningRequest(const uint8_t * csr_buf, size_t csr_length, P256PublicKey & pubkey) { #if defined(MBEDTLS_X509_CSR_PARSE_C) + ReturnErrorOnFailure(VerifyCertificateSigningRequestFormat(csr_buf, csr_length)); + // TODO: For some embedded targets, mbedTLS library doesn't have mbedtls_x509_csr_parse_der, and mbedtls_x509_csr_parse_free. // Taking a step back, embedded targets likely will not process CSR requests. Adding this action item to reevaluate // this if there's a need for this processing for embedded targets. diff --git a/src/platform/EFR32/CHIPPlatformConfig.h b/src/platform/EFR32/CHIPPlatformConfig.h index decc6c59602779..cffeb4645ec29d 100644 --- a/src/platform/EFR32/CHIPPlatformConfig.h +++ b/src/platform/EFR32/CHIPPlatformConfig.h @@ -57,7 +57,7 @@ #endif // CHIP_CONFIG_MAX_UNSOLICITED_MESSAGE_HANDLERS #ifndef CHIP_CONFIG_MAX_EXCHANGE_CONTEXTS -#define CHIP_CONFIG_MAX_EXCHANGE_CONTEXTS 8 +#define CHIP_CONFIG_MAX_EXCHANGE_CONTEXTS 20 #endif // CHIP_CONFIG_MAX_EXCHANGE_CONTEXTS #ifndef CHIP_LOG_FILTERING diff --git a/src/platform/EFR32/ConfigurationManagerImpl.cpp b/src/platform/EFR32/ConfigurationManagerImpl.cpp index 64a66be824f61a..0dd8170da5d3b5 100644 --- a/src/platform/EFR32/ConfigurationManagerImpl.cpp +++ b/src/platform/EFR32/ConfigurationManagerImpl.cpp @@ -97,7 +97,7 @@ CHIP_ERROR ConfigurationManagerImpl::IncreaseBootCount(void) return EFR32Config::WriteConfigValue(EFR32Config::kConfigKey_BootCount, bootCount + 1); } -uint32_t ConfigurationManagerImpl::GetBootReason(void) +CHIP_ERROR ConfigurationManagerImpl::GetBootReason(uint32_t & bootReason) { // rebootCause is obtained at bootup. BootReasonType matterBootCause; @@ -150,7 +150,8 @@ uint32_t ConfigurationManagerImpl::GetBootReason(void) matterBootCause = BootReasonType::kUnspecified; #endif - return to_underlying(matterBootCause); + bootReason = to_underlying(matterBootCause); + return CHIP_NO_ERROR; } CHIP_ERROR ConfigurationManagerImpl::GetTotalOperationalHours(uint32_t & totalOperationalHours) diff --git a/src/platform/EFR32/ConfigurationManagerImpl.h b/src/platform/EFR32/ConfigurationManagerImpl.h index aaebd3ea65ac91..2f40d8d260a363 100644 --- a/src/platform/EFR32/ConfigurationManagerImpl.h +++ b/src/platform/EFR32/ConfigurationManagerImpl.h @@ -40,7 +40,7 @@ class ConfigurationManagerImpl : public Internal::GenericConfigurationManagerImp // This returns an instance of this class. static ConfigurationManagerImpl & GetDefaultInstance(); - uint32_t GetBootReason(void); + CHIP_ERROR GetBootReason(uint32_t & bootReason); CHIP_ERROR GetRebootCount(uint32_t & rebootCount); CHIP_ERROR IncreaseBootCount(void); CHIP_ERROR GetTotalOperationalHours(uint32_t & totalOperationalHours); diff --git a/src/platform/EFR32/DiagnosticDataProviderImpl.cpp b/src/platform/EFR32/DiagnosticDataProviderImpl.cpp index a6d4833b65fe4b..31858125a0665b 100644 --- a/src/platform/EFR32/DiagnosticDataProviderImpl.cpp +++ b/src/platform/EFR32/DiagnosticDataProviderImpl.cpp @@ -264,7 +264,8 @@ CHIP_ERROR DiagnosticDataProviderImpl::GetNetworkInterfaces(NetworkInterface ** ifp->name = CharSpan::fromCharString(ifp->Name); ifp->isOperational = true; Inet::InterfaceType interfaceType; - if (interfaceIterator.GetInterfaceType(interfaceType) == CHIP_NO_ERROR) + CHIP_ERROR err = interfaceIterator.GetInterfaceType(interfaceType); + if (err == CHIP_NO_ERROR || err == CHIP_ERROR_NOT_IMPLEMENTED) { switch (interfaceType) { @@ -283,6 +284,9 @@ CHIP_ERROR DiagnosticDataProviderImpl::GetNetworkInterfaces(NetworkInterface ** case Inet::InterfaceType::Cellular: ifp->type = EMBER_ZCL_INTERFACE_TYPE_CELLULAR; break; + default: + ifp->type = EMBER_ZCL_INTERFACE_TYPE_WI_FI; + break; } } else diff --git a/src/platform/EFR32/Efr32PsaOpaqueKeypair.cpp b/src/platform/EFR32/Efr32PsaOpaqueKeypair.cpp index add77c1be63e51..da72af848bab51 100644 --- a/src/platform/EFR32/Efr32PsaOpaqueKeypair.cpp +++ b/src/platform/EFR32/Efr32PsaOpaqueKeypair.cpp @@ -118,9 +118,15 @@ EFR32OpaqueKeypair::EFR32OpaqueKeypair() EFR32OpaqueKeypair::~EFR32OpaqueKeypair() { - // Free dynamic resource + // Free key resources if (mContext != nullptr) { + // Delete volatile keys, since nobody else can after we drop the key ID. + if (!mIsPersistent) + { + Delete(); + } + MemoryFree(mContext); mContext = nullptr; } @@ -244,7 +250,7 @@ CHIP_ERROR EFR32OpaqueKeypair::Create(EFR32OpaqueKeyId opaque_id, EFR32OpaqueKey // Store the key ID and mark the key as valid mHasKey = true; - mIsPersistent = key_id != kEFR32OpaqueKeyIdVolatile; + mIsPersistent = opaque_id != kEFR32OpaqueKeyIdVolatile; exit: psa_reset_key_attributes(&attr); @@ -401,7 +407,9 @@ CHIP_ERROR EFR32OpaqueP256Keypair::Deserialize(P256SerializedKeypair & input) CHIP_ERROR EFR32OpaqueP256Keypair::NewCertificateSigningRequest(uint8_t * out_csr, size_t & csr_length) const { MutableByteSpan csr(out_csr, csr_length); - return GenerateCertificateSigningRequest(this, csr); + CHIP_ERROR err = GenerateCertificateSigningRequest(this, csr); + csr_length = (CHIP_NO_ERROR == err) ? csr.size() : 0; + return err; } CHIP_ERROR EFR32OpaqueP256Keypair::ECDSA_sign_msg(const uint8_t * msg, size_t msg_length, P256ECDSASignature & out_signature) const diff --git a/src/platform/EFR32/InetPlatformConfig.h b/src/platform/EFR32/InetPlatformConfig.h index 3e8bb9a2f6d229..fe3304fa5d9915 100644 --- a/src/platform/EFR32/InetPlatformConfig.h +++ b/src/platform/EFR32/InetPlatformConfig.h @@ -49,5 +49,5 @@ #endif // INET_CONFIG_NUM_TCP_ENDPOINTS #ifndef INET_CONFIG_NUM_UDP_ENDPOINTS -#define INET_CONFIG_NUM_UDP_ENDPOINTS 6 +#define INET_CONFIG_NUM_UDP_ENDPOINTS 20 #endif // INET_CONFIG_NUM_UDP_ENDPOINTS diff --git a/src/platform/CYW30739/BLEManagerImpl.cpp b/src/platform/Infineon/CYW30739/BLEManagerImpl.cpp similarity index 100% rename from src/platform/CYW30739/BLEManagerImpl.cpp rename to src/platform/Infineon/CYW30739/BLEManagerImpl.cpp diff --git a/src/platform/CYW30739/BLEManagerImpl.h b/src/platform/Infineon/CYW30739/BLEManagerImpl.h similarity index 100% rename from src/platform/CYW30739/BLEManagerImpl.h rename to src/platform/Infineon/CYW30739/BLEManagerImpl.h diff --git a/src/platform/CYW30739/BUILD.gn b/src/platform/Infineon/CYW30739/BUILD.gn similarity index 94% rename from src/platform/CYW30739/BUILD.gn rename to src/platform/Infineon/CYW30739/BUILD.gn index 50d3f464057e74..623cd188bd8343 100644 --- a/src/platform/CYW30739/BUILD.gn +++ b/src/platform/Infineon/CYW30739/BUILD.gn @@ -24,7 +24,7 @@ if (chip_enable_openthread) { static_library("CYW30739") { sources = [ - "../SingletonConfigurationManager.cpp", + "../../SingletonConfigurationManager.cpp", "BLEManagerImpl.cpp", "BLEManagerImpl.h", "BlePlatformConfig.h", @@ -67,7 +67,7 @@ static_library("CYW30739") { if (chip_enable_openthread) { sources += [ - "../OpenThread/OpenThreadUtils.cpp", + "../../OpenThread/OpenThreadUtils.cpp", "ThreadStackManagerImpl.cpp", "ThreadStackManagerImpl.h", ] @@ -85,7 +85,7 @@ static_library("CYW30739") { } if (chip_mdns == "platform") { - sources += [ "../OpenThread/DnssdImpl.cpp" ] + sources += [ "../../OpenThread/DnssdImpl.cpp" ] deps += [ "${chip_root}/src/lib/dnssd:platform_header" ] } diff --git a/src/platform/CYW30739/BlePlatformConfig.h b/src/platform/Infineon/CYW30739/BlePlatformConfig.h similarity index 100% rename from src/platform/CYW30739/BlePlatformConfig.h rename to src/platform/Infineon/CYW30739/BlePlatformConfig.h diff --git a/src/platform/CYW30739/CHIPDevicePlatformConfig.h b/src/platform/Infineon/CYW30739/CHIPDevicePlatformConfig.h similarity index 100% rename from src/platform/CYW30739/CHIPDevicePlatformConfig.h rename to src/platform/Infineon/CYW30739/CHIPDevicePlatformConfig.h diff --git a/src/platform/CYW30739/CHIPDevicePlatformEvent.h b/src/platform/Infineon/CYW30739/CHIPDevicePlatformEvent.h similarity index 100% rename from src/platform/CYW30739/CHIPDevicePlatformEvent.h rename to src/platform/Infineon/CYW30739/CHIPDevicePlatformEvent.h diff --git a/src/platform/CYW30739/CHIPPlatformConfig.h b/src/platform/Infineon/CYW30739/CHIPPlatformConfig.h similarity index 100% rename from src/platform/CYW30739/CHIPPlatformConfig.h rename to src/platform/Infineon/CYW30739/CHIPPlatformConfig.h diff --git a/src/platform/CYW30739/CYW30739Config.cpp b/src/platform/Infineon/CYW30739/CYW30739Config.cpp similarity index 99% rename from src/platform/CYW30739/CYW30739Config.cpp rename to src/platform/Infineon/CYW30739/CYW30739Config.cpp index 2d84fd0703c798..651b4fb3cb40b4 100644 --- a/src/platform/CYW30739/CYW30739Config.cpp +++ b/src/platform/Infineon/CYW30739/CYW30739Config.cpp @@ -24,7 +24,7 @@ #include #include -#include +#include #include namespace chip { diff --git a/src/platform/CYW30739/CYW30739Config.h b/src/platform/Infineon/CYW30739/CYW30739Config.h similarity index 100% rename from src/platform/CYW30739/CYW30739Config.h rename to src/platform/Infineon/CYW30739/CYW30739Config.h diff --git a/src/platform/CYW30739/ConfigurationManagerImpl.cpp b/src/platform/Infineon/CYW30739/ConfigurationManagerImpl.cpp similarity index 99% rename from src/platform/CYW30739/ConfigurationManagerImpl.cpp rename to src/platform/Infineon/CYW30739/ConfigurationManagerImpl.cpp index a706ceec55e492..5489a58441c3ff 100644 --- a/src/platform/CYW30739/ConfigurationManagerImpl.cpp +++ b/src/platform/Infineon/CYW30739/ConfigurationManagerImpl.cpp @@ -27,9 +27,9 @@ #include #include -#include #include #include +#include #include namespace chip { diff --git a/src/platform/CYW30739/ConfigurationManagerImpl.h b/src/platform/Infineon/CYW30739/ConfigurationManagerImpl.h similarity index 100% rename from src/platform/CYW30739/ConfigurationManagerImpl.h rename to src/platform/Infineon/CYW30739/ConfigurationManagerImpl.h diff --git a/src/platform/CYW30739/ConnectivityManagerImpl.cpp b/src/platform/Infineon/CYW30739/ConnectivityManagerImpl.cpp similarity index 100% rename from src/platform/CYW30739/ConnectivityManagerImpl.cpp rename to src/platform/Infineon/CYW30739/ConnectivityManagerImpl.cpp diff --git a/src/platform/CYW30739/ConnectivityManagerImpl.h b/src/platform/Infineon/CYW30739/ConnectivityManagerImpl.h similarity index 100% rename from src/platform/CYW30739/ConnectivityManagerImpl.h rename to src/platform/Infineon/CYW30739/ConnectivityManagerImpl.h diff --git a/src/platform/CYW30739/DeviceNetworkProvisioningDelegateImpl.cpp b/src/platform/Infineon/CYW30739/DeviceNetworkProvisioningDelegateImpl.cpp similarity index 100% rename from src/platform/CYW30739/DeviceNetworkProvisioningDelegateImpl.cpp rename to src/platform/Infineon/CYW30739/DeviceNetworkProvisioningDelegateImpl.cpp diff --git a/src/platform/CYW30739/DeviceNetworkProvisioningDelegateImpl.h b/src/platform/Infineon/CYW30739/DeviceNetworkProvisioningDelegateImpl.h similarity index 100% rename from src/platform/CYW30739/DeviceNetworkProvisioningDelegateImpl.h rename to src/platform/Infineon/CYW30739/DeviceNetworkProvisioningDelegateImpl.h diff --git a/src/platform/CYW30739/DiagnosticDataProviderImpl.cpp b/src/platform/Infineon/CYW30739/DiagnosticDataProviderImpl.cpp similarity index 98% rename from src/platform/CYW30739/DiagnosticDataProviderImpl.cpp rename to src/platform/Infineon/CYW30739/DiagnosticDataProviderImpl.cpp index 2af3114c1ad148..2deec6df8b4646 100644 --- a/src/platform/CYW30739/DiagnosticDataProviderImpl.cpp +++ b/src/platform/Infineon/CYW30739/DiagnosticDataProviderImpl.cpp @@ -23,8 +23,8 @@ #include -#include #include +#include #include #include diff --git a/src/platform/CYW30739/DiagnosticDataProviderImpl.h b/src/platform/Infineon/CYW30739/DiagnosticDataProviderImpl.h similarity index 100% rename from src/platform/CYW30739/DiagnosticDataProviderImpl.h rename to src/platform/Infineon/CYW30739/DiagnosticDataProviderImpl.h diff --git a/src/platform/CYW30739/InetPlatformConfig.h b/src/platform/Infineon/CYW30739/InetPlatformConfig.h similarity index 100% rename from src/platform/CYW30739/InetPlatformConfig.h rename to src/platform/Infineon/CYW30739/InetPlatformConfig.h diff --git a/src/platform/CYW30739/KeyValueStoreManagerImpl.cpp b/src/platform/Infineon/CYW30739/KeyValueStoreManagerImpl.cpp similarity index 78% rename from src/platform/CYW30739/KeyValueStoreManagerImpl.cpp rename to src/platform/Infineon/CYW30739/KeyValueStoreManagerImpl.cpp index 00e7a063614bb9..e61edab6ebfd18 100644 --- a/src/platform/CYW30739/KeyValueStoreManagerImpl.cpp +++ b/src/platform/Infineon/CYW30739/KeyValueStoreManagerImpl.cpp @@ -44,15 +44,14 @@ CHIP_ERROR KeyValueStoreManagerImpl::Init(void) for (uint8_t configID = 0; configID < mMaxEntryCount; configID++) { - char key[CHIP_CONFIG_PERSISTED_STORAGE_MAX_KEY_LENGTH]; - memset(key, 0, sizeof(key)); - size_t keyLength; - err = CYW30739Config::ReadConfigValueStr(CYW30739ConfigKey(Config::kChipKvsKey_KeyBase, configID), key, sizeof(key), - keyLength); + KeyStorage keyStorage; + size_t keyStorageLength; + err = CYW30739Config::ReadConfigValueBin(CYW30739ConfigKey(Config::kChipKvsKey_KeyBase, configID), &keyStorage, + sizeof(keyStorage), keyStorageLength); if (err != CHIP_NO_ERROR) continue; - KeyConfigIdEntry * entry = Platform::New(configID, key, keyLength); + KeyConfigIdEntry * entry = Platform::New(configID, keyStorage); VerifyOrExit(entry != nullptr, err = CHIP_ERROR_NO_MEMORY); slist_add_tail(entry, &mKeyConfigIdList); @@ -75,14 +74,24 @@ CHIP_ERROR KeyValueStoreManagerImpl::_Get(const char * key, void * value, size_t VerifyOrReturnError(offset_bytes == 0, CHIP_ERROR_NOT_IMPLEMENTED); - const size_t keyLength = strnlen(key, CHIP_CONFIG_PERSISTED_STORAGE_MAX_KEY_LENGTH); - VerifyOrExit(keyLength != 0 && keyLength <= CHIP_CONFIG_PERSISTED_STORAGE_MAX_KEY_LENGTH && + const size_t keyLength = strnlen(key, PersistentStorageDelegate::kKeyLengthMax); + VerifyOrExit(keyLength != 0 && keyLength <= PersistentStorageDelegate::kKeyLengthMax && value_size <= kMaxPersistedValueLengthSupported, err = CHIP_ERROR_INVALID_ARGUMENT); entry = FindEntry(key); VerifyOrExit(entry != nullptr, err = CHIP_ERROR_PERSISTED_STORAGE_VALUE_NOT_FOUND); - VerifyOrExit(value_size != 0, err = CHIP_ERROR_BUFFER_TOO_SMALL); + + if (value_size == 0 || entry->GetValueSize() == 0) + { + if (read_bytes_size != nullptr) + *read_bytes_size = 0; + + if (value_size >= entry->GetValueSize()) + ExitNow(err = CHIP_NO_ERROR); + else + ExitNow(err = CHIP_ERROR_BUFFER_TOO_SMALL); + } size_t byte_count; err = CYW30739Config::ReadConfigValueBin(entry->GetValueConfigKey(), value, value_size, byte_count); @@ -94,6 +103,8 @@ CHIP_ERROR KeyValueStoreManagerImpl::_Get(const char * key, void * value, size_t *read_bytes_size = byte_count; } + VerifyOrExit(value_size >= entry->GetValueSize(), err = CHIP_ERROR_BUFFER_TOO_SMALL); + exit: return err; } @@ -101,10 +112,10 @@ CHIP_ERROR KeyValueStoreManagerImpl::_Get(const char * key, void * value, size_t CHIP_ERROR KeyValueStoreManagerImpl::_Put(const char * key, const void * value, size_t value_size) { CHIP_ERROR err = CHIP_NO_ERROR; - const KeyConfigIdEntry * entry; + KeyConfigIdEntry * entry; - const size_t keyLength = strnlen(key, CHIP_CONFIG_PERSISTED_STORAGE_MAX_KEY_LENGTH + 1); - VerifyOrExit(keyLength != 0 && keyLength <= CHIP_CONFIG_PERSISTED_STORAGE_MAX_KEY_LENGTH && + const size_t keyLength = strnlen(key, PersistentStorageDelegate::kKeyLengthMax + 1); + VerifyOrExit(keyLength != 0 && keyLength <= PersistentStorageDelegate::kKeyLengthMax && value_size <= kMaxPersistedValueLengthSupported, err = CHIP_ERROR_INVALID_ARGUMENT); @@ -112,9 +123,13 @@ CHIP_ERROR KeyValueStoreManagerImpl::_Put(const char * key, const void * value, VerifyOrExit(entry != nullptr, ChipLogError(DeviceLayer, "%s AllocateEntry %s", __func__, ErrorStr(err)); err = CHIP_ERROR_NO_MEMORY); - SuccessOrExit(err = CYW30739Config::WriteConfigValueBin(entry->GetValueConfigKey(), value, value_size)); + if (value_size != 0) + { + SuccessOrExit(err = CYW30739Config::WriteConfigValueBin(entry->GetValueConfigKey(), value, value_size)); + } - SuccessOrExit(err = CYW30739Config::WriteConfigValueStr(entry->GetKeyConfigKey(), key, keyLength)); + entry->SetValueSize(value_size); + SuccessOrExit(err = CYW30739Config::WriteConfigValueBin(entry->GetKeyConfigKey(), &entry->mStorage, sizeof(entry->mStorage))); exit: return err; @@ -125,8 +140,8 @@ CHIP_ERROR KeyValueStoreManagerImpl::_Delete(const char * key) CHIP_ERROR err; KeyConfigIdEntry * entry; - const size_t keyLength = strnlen(key, CHIP_CONFIG_PERSISTED_STORAGE_MAX_KEY_LENGTH); - VerifyOrExit(keyLength != 0 && keyLength <= CHIP_CONFIG_PERSISTED_STORAGE_MAX_KEY_LENGTH, err = CHIP_ERROR_INVALID_ARGUMENT); + const size_t keyLength = strnlen(key, PersistentStorageDelegate::kKeyLengthMax); + VerifyOrExit(keyLength != 0 && keyLength <= PersistentStorageDelegate::kKeyLengthMax, err = CHIP_ERROR_INVALID_ARGUMENT); entry = FindEntry(key); VerifyOrExit(entry != nullptr, err = CHIP_ERROR_PERSISTED_STORAGE_VALUE_NOT_FOUND); @@ -156,14 +171,13 @@ CHIP_ERROR KeyValueStoreManagerImpl::EraseAll(void) return CHIP_NO_ERROR; } -KeyValueStoreManagerImpl::KeyConfigIdEntry::KeyConfigIdEntry(uint8_t configID, const char * key, size_t keyLength) : - mConfigID(configID) +KeyValueStoreManagerImpl::KeyStorage::KeyStorage(const char * key, size_t keyLength) : mValueSize(0) { memset(mKey, 0, sizeof(mKey)); memcpy(mKey, key, keyLength); } -bool KeyValueStoreManagerImpl::KeyConfigIdEntry::IsMatchKey(const char * key) const +bool KeyValueStoreManagerImpl::KeyStorage::IsMatchKey(const char * key) const { return strncmp(mKey, key, sizeof(mKey)) == 0; } @@ -175,7 +189,7 @@ KeyValueStoreManagerImpl::KeyConfigIdEntry * KeyValueStoreManagerImpl::AllocateE ReturnErrorCodeIf(newEntry != nullptr, newEntry); ReturnErrorCodeIf(!freeConfigID.HasValue(), nullptr); - newEntry = Platform::New(freeConfigID.Value(), key, keyLength); + newEntry = Platform::New(freeConfigID.Value(), KeyStorage(key, keyLength)); ReturnErrorCodeIf(newEntry == nullptr, nullptr); KeyConfigIdEntry * entry = static_cast(slist_tail(&mKeyConfigIdList)); @@ -220,7 +234,7 @@ KeyValueStoreManagerImpl::KeyConfigIdEntry * KeyValueStoreManagerImpl::FindEntry { entry = entry->Next(); - if (entry->IsMatchKey(key)) + if (entry->mStorage.IsMatchKey(key)) return entry; if (freeConfigID != nullptr && !freeConfigID->HasValue() && entry != slist_tail(&mKeyConfigIdList)) diff --git a/src/platform/CYW30739/KeyValueStoreManagerImpl.h b/src/platform/Infineon/CYW30739/KeyValueStoreManagerImpl.h similarity index 86% rename from src/platform/CYW30739/KeyValueStoreManagerImpl.h rename to src/platform/Infineon/CYW30739/KeyValueStoreManagerImpl.h index a719bc6c2af7ac..5938bd28a56c98 100644 --- a/src/platform/CYW30739/KeyValueStoreManagerImpl.h +++ b/src/platform/Infineon/CYW30739/KeyValueStoreManagerImpl.h @@ -23,6 +23,7 @@ #pragma once +#include #include #include @@ -56,11 +57,20 @@ class KeyValueStoreManagerImpl final : public KeyValueStoreManager static constexpr uint8_t mMaxEntryCount = 128; - struct KeyConfigIdEntry : public slist_node_t + struct KeyStorage { - KeyConfigIdEntry(uint8_t configID, const char * key, size_t keyLength); + KeyStorage(const char * key = nullptr, size_t keyLength = 0); bool IsMatchKey(const char * key) const; + + size_t mValueSize; + char mKey[PersistentStorageDelegate::kKeyLengthMax]; + }; + + struct KeyConfigIdEntry : public slist_node_t + { + KeyConfigIdEntry(uint8_t configID, const KeyStorage & keyStorage) : mConfigID(configID), mStorage(keyStorage) {} + constexpr Config::Key GetValueConfigKey() const { return Internal::CYW30739ConfigKey(Config::kChipKvsValue_KeyBase, mConfigID); @@ -71,9 +81,11 @@ class KeyValueStoreManagerImpl final : public KeyValueStoreManager } constexpr KeyConfigIdEntry * Next() const { return static_cast(next); } constexpr uint8_t NextConfigID() const { return mConfigID + 1; } + constexpr size_t GetValueSize() const { return mStorage.mValueSize; } + constexpr void SetValueSize(size_t valueSize) { mStorage.mValueSize = valueSize; } uint8_t mConfigID; - char mKey[CHIP_CONFIG_PERSISTED_STORAGE_MAX_KEY_LENGTH]; + KeyStorage mStorage; }; KeyConfigIdEntry * AllocateEntry(const char * key, size_t keyLength); diff --git a/src/platform/CYW30739/Logging.cpp b/src/platform/Infineon/CYW30739/Logging.cpp similarity index 100% rename from src/platform/CYW30739/Logging.cpp rename to src/platform/Infineon/CYW30739/Logging.cpp diff --git a/src/platform/CYW30739/OTAImageProcessorImpl.cpp b/src/platform/Infineon/CYW30739/OTAImageProcessorImpl.cpp similarity index 100% rename from src/platform/CYW30739/OTAImageProcessorImpl.cpp rename to src/platform/Infineon/CYW30739/OTAImageProcessorImpl.cpp diff --git a/src/platform/CYW30739/OTAImageProcessorImpl.h b/src/platform/Infineon/CYW30739/OTAImageProcessorImpl.h similarity index 100% rename from src/platform/CYW30739/OTAImageProcessorImpl.h rename to src/platform/Infineon/CYW30739/OTAImageProcessorImpl.h diff --git a/src/platform/CYW30739/PlatformManagerImpl.cpp b/src/platform/Infineon/CYW30739/PlatformManagerImpl.cpp similarity index 99% rename from src/platform/CYW30739/PlatformManagerImpl.cpp rename to src/platform/Infineon/CYW30739/PlatformManagerImpl.cpp index 41e91ea0a205a6..c2da0a1efc8414 100644 --- a/src/platform/CYW30739/PlatformManagerImpl.cpp +++ b/src/platform/Infineon/CYW30739/PlatformManagerImpl.cpp @@ -23,7 +23,7 @@ /* this file behaves like a config.h, comes first */ #include -#include +#include #include #include diff --git a/src/platform/CYW30739/PlatformManagerImpl.h b/src/platform/Infineon/CYW30739/PlatformManagerImpl.h similarity index 100% rename from src/platform/CYW30739/PlatformManagerImpl.h rename to src/platform/Infineon/CYW30739/PlatformManagerImpl.h diff --git a/src/platform/CYW30739/SystemPlatformConfig.h b/src/platform/Infineon/CYW30739/SystemPlatformConfig.h similarity index 100% rename from src/platform/CYW30739/SystemPlatformConfig.h rename to src/platform/Infineon/CYW30739/SystemPlatformConfig.h diff --git a/src/platform/CYW30739/SystemTimeSupport.cpp b/src/platform/Infineon/CYW30739/SystemTimeSupport.cpp similarity index 100% rename from src/platform/CYW30739/SystemTimeSupport.cpp rename to src/platform/Infineon/CYW30739/SystemTimeSupport.cpp diff --git a/src/platform/CYW30739/ThreadStackManagerImpl.cpp b/src/platform/Infineon/CYW30739/ThreadStackManagerImpl.cpp similarity index 100% rename from src/platform/CYW30739/ThreadStackManagerImpl.cpp rename to src/platform/Infineon/CYW30739/ThreadStackManagerImpl.cpp diff --git a/src/platform/CYW30739/ThreadStackManagerImpl.h b/src/platform/Infineon/CYW30739/ThreadStackManagerImpl.h similarity index 100% rename from src/platform/CYW30739/ThreadStackManagerImpl.h rename to src/platform/Infineon/CYW30739/ThreadStackManagerImpl.h diff --git a/src/platform/CYW30739/args.gni b/src/platform/Infineon/CYW30739/args.gni similarity index 94% rename from src/platform/CYW30739/args.gni rename to src/platform/Infineon/CYW30739/args.gni index 20266d8f86f825..a0d31c75f4c49b 100644 --- a/src/platform/CYW30739/args.gni +++ b/src/platform/Infineon/CYW30739/args.gni @@ -17,7 +17,7 @@ import("//build_overrides/chip.gni") import("//build_overrides/cyw30739_sdk.gni") import("//build_overrides/pigweed.gni") -import("${chip_root}/examples/platform/cyw30739/args.gni") +import("${chip_root}/examples/platform/infineon/cyw30739/args.gni") custom_toolchain = "${build_root}/toolchain/arm_gcc" @@ -51,7 +51,7 @@ mbedtls_target = "${cyw30739_sdk_build_root}:mbedtls" openthread_external_mbedtls = mbedtls_target openthread_project_core_config_file = "OpenThreadConfig.h" -openthread_core_config_deps = [ "${chip_root}/examples/platform/cyw30739:openthread_core_config_ifx_chip_examples" ] +openthread_core_config_deps = [ "${chip_root}/examples/platform/infineon/cyw30739:openthread_core_config_ifx_chip_examples" ] openthread_external_platform = "${chip_root}/third_party/openthread/platforms/ifx:libopenthread-ifx" diff --git a/src/platform/CYW30739/cycfg_gatt_db.c b/src/platform/Infineon/CYW30739/cycfg_gatt_db.c similarity index 100% rename from src/platform/CYW30739/cycfg_gatt_db.c rename to src/platform/Infineon/CYW30739/cycfg_gatt_db.c diff --git a/src/platform/CYW30739/cycfg_gatt_db.h b/src/platform/Infineon/CYW30739/cycfg_gatt_db.h similarity index 100% rename from src/platform/CYW30739/cycfg_gatt_db.h rename to src/platform/Infineon/CYW30739/cycfg_gatt_db.h diff --git a/src/platform/CYW30739/cyw30739-chip-mbedtls-config.h b/src/platform/Infineon/CYW30739/cyw30739-chip-mbedtls-config.h similarity index 100% rename from src/platform/CYW30739/cyw30739-chip-mbedtls-config.h rename to src/platform/Infineon/CYW30739/cyw30739-chip-mbedtls-config.h diff --git a/src/platform/P6/BLEManagerImpl.cpp b/src/platform/Infineon/PSOC6/BLEManagerImpl.cpp similarity index 100% rename from src/platform/P6/BLEManagerImpl.cpp rename to src/platform/Infineon/PSOC6/BLEManagerImpl.cpp diff --git a/src/platform/P6/BLEManagerImpl.h b/src/platform/Infineon/PSOC6/BLEManagerImpl.h similarity index 100% rename from src/platform/P6/BLEManagerImpl.h rename to src/platform/Infineon/PSOC6/BLEManagerImpl.h diff --git a/src/platform/P6/BUILD.gn b/src/platform/Infineon/PSOC6/BUILD.gn similarity index 93% rename from src/platform/P6/BUILD.gn rename to src/platform/Infineon/PSOC6/BUILD.gn index d7af750cb91df7..d2ed65a9bdf1d4 100644 --- a/src/platform/P6/BUILD.gn +++ b/src/platform/Infineon/PSOC6/BUILD.gn @@ -16,16 +16,16 @@ import("//build_overrides/chip.gni") import("//build_overrides/pigweed.gni") import("${chip_root}/src/platform/device.gni") -assert(chip_device_platform == "p6") +assert(chip_device_platform == "psoc6") if (chip_enable_openthread) { import("//build_overrides/openthread.gni") } -static_library("P6") { +static_library("PSOC6") { sources = [ - "../FreeRTOS/SystemTimeSupport.cpp", - "../SingletonConfigurationManager.cpp", + "../../FreeRTOS/SystemTimeSupport.cpp", + "../../SingletonConfigurationManager.cpp", "BLEManagerImpl.cpp", "BLEManagerImpl.h", "BlePlatformConfig.h", diff --git a/src/platform/P6/BlePlatformConfig.h b/src/platform/Infineon/PSOC6/BlePlatformConfig.h similarity index 100% rename from src/platform/P6/BlePlatformConfig.h rename to src/platform/Infineon/PSOC6/BlePlatformConfig.h diff --git a/src/platform/P6/CHIPDevicePlatformConfig.h b/src/platform/Infineon/PSOC6/CHIPDevicePlatformConfig.h similarity index 100% rename from src/platform/P6/CHIPDevicePlatformConfig.h rename to src/platform/Infineon/PSOC6/CHIPDevicePlatformConfig.h diff --git a/src/platform/P6/CHIPDevicePlatformEvent.h b/src/platform/Infineon/PSOC6/CHIPDevicePlatformEvent.h similarity index 100% rename from src/platform/P6/CHIPDevicePlatformEvent.h rename to src/platform/Infineon/PSOC6/CHIPDevicePlatformEvent.h diff --git a/src/platform/P6/CHIPPlatformConfig.h b/src/platform/Infineon/PSOC6/CHIPPlatformConfig.h similarity index 100% rename from src/platform/P6/CHIPPlatformConfig.h rename to src/platform/Infineon/PSOC6/CHIPPlatformConfig.h diff --git a/src/platform/P6/ConfigurationManagerImpl.cpp b/src/platform/Infineon/PSOC6/ConfigurationManagerImpl.cpp similarity index 99% rename from src/platform/P6/ConfigurationManagerImpl.cpp rename to src/platform/Infineon/PSOC6/ConfigurationManagerImpl.cpp index afa771d5acb837..753b82369512a2 100644 --- a/src/platform/P6/ConfigurationManagerImpl.cpp +++ b/src/platform/Infineon/PSOC6/ConfigurationManagerImpl.cpp @@ -28,8 +28,8 @@ #include #include +#include #include -#include namespace chip { namespace DeviceLayer { diff --git a/src/platform/P6/ConfigurationManagerImpl.h b/src/platform/Infineon/PSOC6/ConfigurationManagerImpl.h similarity index 100% rename from src/platform/P6/ConfigurationManagerImpl.h rename to src/platform/Infineon/PSOC6/ConfigurationManagerImpl.h diff --git a/src/platform/P6/ConnectivityManagerImpl.cpp b/src/platform/Infineon/PSOC6/ConnectivityManagerImpl.cpp similarity index 99% rename from src/platform/P6/ConnectivityManagerImpl.cpp rename to src/platform/Infineon/PSOC6/ConnectivityManagerImpl.cpp index 0e50d347b3f111..a005d88f01fe5a 100644 --- a/src/platform/P6/ConnectivityManagerImpl.cpp +++ b/src/platform/Infineon/PSOC6/ConnectivityManagerImpl.cpp @@ -35,7 +35,7 @@ #include #include -#include +#include #include #include @@ -45,7 +45,7 @@ #include "lwip/opt.h" #include -#include +#include #include #if !CHIP_DEVICE_CONFIG_ENABLE_WIFI_STATION diff --git a/src/platform/P6/ConnectivityManagerImpl.h b/src/platform/Infineon/PSOC6/ConnectivityManagerImpl.h similarity index 100% rename from src/platform/P6/ConnectivityManagerImpl.h rename to src/platform/Infineon/PSOC6/ConnectivityManagerImpl.h diff --git a/src/platform/P6/DeviceNetworkProvisioningDelegateImpl.cpp b/src/platform/Infineon/PSOC6/DeviceNetworkProvisioningDelegateImpl.cpp similarity index 97% rename from src/platform/P6/DeviceNetworkProvisioningDelegateImpl.cpp rename to src/platform/Infineon/PSOC6/DeviceNetworkProvisioningDelegateImpl.cpp index 08f8593072584d..0379d62a630071 100644 --- a/src/platform/P6/DeviceNetworkProvisioningDelegateImpl.cpp +++ b/src/platform/Infineon/PSOC6/DeviceNetworkProvisioningDelegateImpl.cpp @@ -19,7 +19,7 @@ #include #include "DeviceNetworkProvisioningDelegateImpl.h" -#include "platform/P6/P6Utils.h" +#include "platform/Infineon/PSOC6/P6Utils.h" namespace chip { namespace DeviceLayer { diff --git a/src/platform/P6/DeviceNetworkProvisioningDelegateImpl.h b/src/platform/Infineon/PSOC6/DeviceNetworkProvisioningDelegateImpl.h similarity index 100% rename from src/platform/P6/DeviceNetworkProvisioningDelegateImpl.h rename to src/platform/Infineon/PSOC6/DeviceNetworkProvisioningDelegateImpl.h diff --git a/src/platform/P6/DiagnosticDataProviderImpl.cpp b/src/platform/Infineon/PSOC6/DiagnosticDataProviderImpl.cpp similarity index 99% rename from src/platform/P6/DiagnosticDataProviderImpl.cpp rename to src/platform/Infineon/PSOC6/DiagnosticDataProviderImpl.cpp index ae3efbcf091e80..16fe1300fdeed3 100644 --- a/src/platform/P6/DiagnosticDataProviderImpl.cpp +++ b/src/platform/Infineon/PSOC6/DiagnosticDataProviderImpl.cpp @@ -27,8 +27,8 @@ #include #include #include -#include -#include +#include +#include namespace chip { namespace DeviceLayer { diff --git a/src/platform/P6/DiagnosticDataProviderImpl.h b/src/platform/Infineon/PSOC6/DiagnosticDataProviderImpl.h similarity index 99% rename from src/platform/P6/DiagnosticDataProviderImpl.h rename to src/platform/Infineon/PSOC6/DiagnosticDataProviderImpl.h index cba4725b43eaf4..c1c08fac480d37 100644 --- a/src/platform/P6/DiagnosticDataProviderImpl.h +++ b/src/platform/Infineon/PSOC6/DiagnosticDataProviderImpl.h @@ -31,7 +31,7 @@ #include "whd_wlioctl.h" #include #include -#include +#include #define PHYRATE_KPBS_BYTES_PER_SEC 125 diff --git a/src/platform/P6/InetPlatformConfig.h b/src/platform/Infineon/PSOC6/InetPlatformConfig.h similarity index 100% rename from src/platform/P6/InetPlatformConfig.h rename to src/platform/Infineon/PSOC6/InetPlatformConfig.h diff --git a/src/platform/P6/KeyValueStoreManagerImpl.cpp b/src/platform/Infineon/PSOC6/KeyValueStoreManagerImpl.cpp similarity index 100% rename from src/platform/P6/KeyValueStoreManagerImpl.cpp rename to src/platform/Infineon/PSOC6/KeyValueStoreManagerImpl.cpp diff --git a/src/platform/P6/KeyValueStoreManagerImpl.h b/src/platform/Infineon/PSOC6/KeyValueStoreManagerImpl.h similarity index 100% rename from src/platform/P6/KeyValueStoreManagerImpl.h rename to src/platform/Infineon/PSOC6/KeyValueStoreManagerImpl.h diff --git a/src/platform/P6/Logging.cpp b/src/platform/Infineon/PSOC6/Logging.cpp similarity index 100% rename from src/platform/P6/Logging.cpp rename to src/platform/Infineon/PSOC6/Logging.cpp diff --git a/src/platform/P6/LwIPCoreLock.cpp b/src/platform/Infineon/PSOC6/LwIPCoreLock.cpp similarity index 100% rename from src/platform/P6/LwIPCoreLock.cpp rename to src/platform/Infineon/PSOC6/LwIPCoreLock.cpp diff --git a/src/platform/P6/MTBKeyValueStore.cpp b/src/platform/Infineon/PSOC6/MTBKeyValueStore.cpp similarity index 100% rename from src/platform/P6/MTBKeyValueStore.cpp rename to src/platform/Infineon/PSOC6/MTBKeyValueStore.cpp diff --git a/src/platform/P6/MTBKeyValueStore.h b/src/platform/Infineon/PSOC6/MTBKeyValueStore.h similarity index 100% rename from src/platform/P6/MTBKeyValueStore.h rename to src/platform/Infineon/PSOC6/MTBKeyValueStore.h diff --git a/src/platform/P6/NetworkCommissioningDriver.h b/src/platform/Infineon/PSOC6/NetworkCommissioningDriver.h similarity index 100% rename from src/platform/P6/NetworkCommissioningDriver.h rename to src/platform/Infineon/PSOC6/NetworkCommissioningDriver.h diff --git a/src/platform/P6/NetworkCommissioningWiFiDriver.cpp b/src/platform/Infineon/PSOC6/NetworkCommissioningWiFiDriver.cpp similarity index 98% rename from src/platform/P6/NetworkCommissioningWiFiDriver.cpp rename to src/platform/Infineon/PSOC6/NetworkCommissioningWiFiDriver.cpp index 56c98f5d1d6938..7f94651fb9b61e 100644 --- a/src/platform/P6/NetworkCommissioningWiFiDriver.cpp +++ b/src/platform/Infineon/PSOC6/NetworkCommissioningWiFiDriver.cpp @@ -18,9 +18,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include #include diff --git a/src/platform/P6/OTAImageProcessorImpl.cpp b/src/platform/Infineon/PSOC6/OTAImageProcessorImpl.cpp similarity index 100% rename from src/platform/P6/OTAImageProcessorImpl.cpp rename to src/platform/Infineon/PSOC6/OTAImageProcessorImpl.cpp diff --git a/src/platform/P6/OTAImageProcessorImpl.h b/src/platform/Infineon/PSOC6/OTAImageProcessorImpl.h similarity index 100% rename from src/platform/P6/OTAImageProcessorImpl.h rename to src/platform/Infineon/PSOC6/OTAImageProcessorImpl.h diff --git a/src/platform/P6/P6Config.cpp b/src/platform/Infineon/PSOC6/P6Config.cpp similarity index 99% rename from src/platform/P6/P6Config.cpp rename to src/platform/Infineon/PSOC6/P6Config.cpp index e15d56c5583b6e..2a4b48df11bf3e 100644 --- a/src/platform/P6/P6Config.cpp +++ b/src/platform/Infineon/PSOC6/P6Config.cpp @@ -27,14 +27,14 @@ #include -#include +#include #include #include #include #include #include -#include +#include namespace chip { namespace DeviceLayer { diff --git a/src/platform/P6/P6Config.h b/src/platform/Infineon/PSOC6/P6Config.h similarity index 100% rename from src/platform/P6/P6Config.h rename to src/platform/Infineon/PSOC6/P6Config.h diff --git a/src/platform/P6/P6Utils.cpp b/src/platform/Infineon/PSOC6/P6Utils.cpp similarity index 99% rename from src/platform/P6/P6Utils.cpp rename to src/platform/Infineon/PSOC6/P6Utils.cpp index 584646c9b4cb2f..ac8744382784f0 100644 --- a/src/platform/P6/P6Utils.cpp +++ b/src/platform/Infineon/PSOC6/P6Utils.cpp @@ -29,7 +29,7 @@ #include #include #include -#include +#include #include "lwip/icmp.h" #include "lwip/inet.h" @@ -43,7 +43,7 @@ #include "lwip/sys.h" #include "lwip/timeouts.h" #include -#include +#include using namespace ::chip::DeviceLayer::Internal; using chip::DeviceLayer::Internal::DeviceNetworkInfo; diff --git a/src/platform/P6/P6Utils.h b/src/platform/Infineon/PSOC6/P6Utils.h similarity index 100% rename from src/platform/P6/P6Utils.h rename to src/platform/Infineon/PSOC6/P6Utils.h diff --git a/src/platform/P6/PlatformManagerImpl.cpp b/src/platform/Infineon/PSOC6/PlatformManagerImpl.cpp similarity index 97% rename from src/platform/P6/PlatformManagerImpl.cpp rename to src/platform/Infineon/PSOC6/PlatformManagerImpl.cpp index ac22597407dc98..8292e817719288 100644 --- a/src/platform/P6/PlatformManagerImpl.cpp +++ b/src/platform/Infineon/PSOC6/PlatformManagerImpl.cpp @@ -26,7 +26,7 @@ #include #include -#include +#include #include #include diff --git a/src/platform/P6/PlatformManagerImpl.h b/src/platform/Infineon/PSOC6/PlatformManagerImpl.h similarity index 100% rename from src/platform/P6/PlatformManagerImpl.h rename to src/platform/Infineon/PSOC6/PlatformManagerImpl.h diff --git a/src/platform/P6/SystemPlatformConfig.h b/src/platform/Infineon/PSOC6/SystemPlatformConfig.h similarity index 100% rename from src/platform/P6/SystemPlatformConfig.h rename to src/platform/Infineon/PSOC6/SystemPlatformConfig.h diff --git a/src/platform/P6/WarmPlatformConfig.h b/src/platform/Infineon/PSOC6/WarmPlatformConfig.h similarity index 100% rename from src/platform/P6/WarmPlatformConfig.h rename to src/platform/Infineon/PSOC6/WarmPlatformConfig.h diff --git a/src/platform/P6/app_platform_cfg.c b/src/platform/Infineon/PSOC6/app_platform_cfg.c similarity index 100% rename from src/platform/P6/app_platform_cfg.c rename to src/platform/Infineon/PSOC6/app_platform_cfg.c diff --git a/src/platform/P6/app_platform_cfg.h b/src/platform/Infineon/PSOC6/app_platform_cfg.h similarity index 100% rename from src/platform/P6/app_platform_cfg.h rename to src/platform/Infineon/PSOC6/app_platform_cfg.h diff --git a/src/platform/P6/args.gni b/src/platform/Infineon/PSOC6/args.gni similarity index 66% rename from src/platform/P6/args.gni rename to src/platform/Infineon/PSOC6/args.gni index b34b5678ae231d..5577e67db7072c 100644 --- a/src/platform/P6/args.gni +++ b/src/platform/Infineon/PSOC6/args.gni @@ -13,17 +13,17 @@ # limitations under the License. import("//build_overrides/chip.gni") -import("//build_overrides/p6.gni") +import("//build_overrides/psoc6.gni") -import("${chip_root}/examples/platform/p6/args.gni") +import("${chip_root}/examples/platform/infineon/psoc6/args.gni") -#ARM architecture flags will be set based on p6_family. -arm_platform_config = "${p6_sdk_build_root}/p6_arm.gni" +#ARM architecture flags will be set based on psoc6_family. +arm_platform_config = "${psoc6_sdk_build_root}/psoc6_arm.gni" -mbedtls_target = "${p6_sdk_build_root}:p6_build" +mbedtls_target = "${psoc6_sdk_build_root}:psoc6_build" -chip_device_platform = "p6" +chip_device_platform = "psoc6" -lwip_platform = "p6" +lwip_platform = "psoc6" chip_build_tests = false diff --git a/src/platform/P6/cycfg_bt_settings.cpp b/src/platform/Infineon/PSOC6/cycfg_bt_settings.cpp similarity index 100% rename from src/platform/P6/cycfg_bt_settings.cpp rename to src/platform/Infineon/PSOC6/cycfg_bt_settings.cpp diff --git a/src/platform/P6/cycfg_bt_settings.h b/src/platform/Infineon/PSOC6/cycfg_bt_settings.h similarity index 100% rename from src/platform/P6/cycfg_bt_settings.h rename to src/platform/Infineon/PSOC6/cycfg_bt_settings.h diff --git a/src/platform/P6/cycfg_gap.cpp b/src/platform/Infineon/PSOC6/cycfg_gap.cpp similarity index 100% rename from src/platform/P6/cycfg_gap.cpp rename to src/platform/Infineon/PSOC6/cycfg_gap.cpp diff --git a/src/platform/P6/cycfg_gap.h b/src/platform/Infineon/PSOC6/cycfg_gap.h similarity index 100% rename from src/platform/P6/cycfg_gap.h rename to src/platform/Infineon/PSOC6/cycfg_gap.h diff --git a/src/platform/P6/cycfg_gatt_db.c b/src/platform/Infineon/PSOC6/cycfg_gatt_db.c similarity index 100% rename from src/platform/P6/cycfg_gatt_db.c rename to src/platform/Infineon/PSOC6/cycfg_gatt_db.c diff --git a/src/platform/P6/cycfg_gatt_db.h b/src/platform/Infineon/PSOC6/cycfg_gatt_db.h similarity index 100% rename from src/platform/P6/cycfg_gatt_db.h rename to src/platform/Infineon/PSOC6/cycfg_gatt_db.h diff --git a/src/platform/P6/ethernet.h b/src/platform/Infineon/PSOC6/ethernet.h similarity index 100% rename from src/platform/P6/ethernet.h rename to src/platform/Infineon/PSOC6/ethernet.h diff --git a/src/platform/device.gni b/src/platform/device.gni index 0592a6720e13c0..87330499cbca6e 100755 --- a/src/platform/device.gni +++ b/src/platform/device.gni @@ -82,7 +82,7 @@ declare_args() { # Select DNS-SD implementation if (chip_device_platform == "linux" || chip_device_platform == "esp32" || - chip_device_platform == "mbed" || chip_device_platform == "p6" || + chip_device_platform == "mbed" || chip_device_platform == "psoc6" || chip_device_platform == "ameba" || chip_device_platform == "webos" || chip_device_platform == "cc32xx" || chip_device_platform == "bl602" || chip_device_platform == "mw320" || chip_device_platform == "beken") { @@ -122,8 +122,8 @@ if (chip_device_platform == "cc13x2_26x2") { _chip_device_layer = "telink" } else if (chip_device_platform == "mbed") { _chip_device_layer = "mbed" -} else if (chip_device_platform == "p6") { - _chip_device_layer = "P6" +} else if (chip_device_platform == "psoc6") { + _chip_device_layer = "Infineon/PSOC6" } else if (chip_device_platform == "android") { _chip_device_layer = "android" } else if (chip_device_platform == "ameba") { @@ -131,7 +131,7 @@ if (chip_device_platform == "cc13x2_26x2") { } else if (chip_device_platform == "bl602") { _chip_device_layer = "bouffalolab/BL602" } else if (chip_device_platform == "cyw30739") { - _chip_device_layer = "CYW30739" + _chip_device_layer = "Infineon/CYW30739" } else if (chip_device_platform == "webos") { _chip_device_layer = "webos" } else if (chip_device_platform == "mw320") { @@ -196,7 +196,7 @@ assert( chip_device_platform == "nrfconnect" || chip_device_platform == "k32w0" || chip_device_platform == "qpg" || chip_device_platform == "telink" || chip_device_platform == "mbed" || - chip_device_platform == "p6" || chip_device_platform == "android" || + chip_device_platform == "psoc6" || chip_device_platform == "android" || chip_device_platform == "ameba" || chip_device_platform == "cyw30739" || chip_device_platform == "webos" || chip_device_platform == "bl602" || chip_device_platform == "mw320" || chip_device_platform == "zephyr" || diff --git a/src/python_testing/TC_RR_1_1.py b/src/python_testing/TC_RR_1_1.py new file mode 100644 index 00000000000000..00dd9a111b8308 --- /dev/null +++ b/src/python_testing/TC_RR_1_1.py @@ -0,0 +1,424 @@ +# +# Copyright (c) 2022 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. +# + +from matter_testing_support import MatterBaseTest, default_matter_test_main, async_test_body +import chip.clusters as Clusters +import chip.FabricAdmin +import chip.CertificateAuthority +import logging +from mobly import asserts +from chip.utils import CommissioningBuildingBlocks +from chip.clusters.Attribute import TypedAttributePath, SubscriptionTransaction, AttributeStatus +from chip.interaction_model import Status as StatusEnum +import queue +import asyncio +from binascii import hexlify +from threading import Event +import time +import random + +from TC_SC_3_6 import AttributeChangeAccumulator, ResubscriptionCatcher + +# TODO: Overall, we need to add validation that session IDs have not changed throughout to be agnostic +# to some internal behavior assumptions of the SDK we are making relative to the write to +# the trigger the subscriptions not re-opening a new CASE session +# + + +class TC_RR_1_1(MatterBaseTest): + def setup_class(self): + self._pseudo_random_generator = random.Random(1234) + self._subscriptions = [] + + def teardown_class(self): + logging.info("Teardown: shutting down all subscription to avoid racy callbacks") + for subscription in self._subscriptions: + subscription.Shutdown() + + @async_test_body + async def test_TC_RR_1_1(self): + dev_ctrl = self.default_controller + + # Debug/test arguments + + # Get overrides for debugging the test + num_fabrics_to_commission = self.user_params.get("num_fabrics_to_commission", 5) + num_controllers_per_fabric = self.user_params.get("num_controllers_per_fabric", 3) + # Immediate reporting + min_report_interval_sec = self.user_params.get("min_report_interval_sec", 0) + # 10 minutes max reporting interval --> We don't care about keep-alives per-se and + # want to avoid resubscriptions + max_report_interval_sec = self.user_params.get("max_report_interval_sec", 10 * 60) + # Time to wait after changing NodeLabel for subscriptions to all hit. This is dependant + # on MRP params of subscriber and on actual min_report_interval. + # TODO: Determine the correct max value depending on target. Test plan doesn't say! + timeout_delay_sec = self.user_params.get("timeout_delay_sec", max_report_interval_sec * 2) + # Whether to skip filling the UserLabel clusters + skip_user_label_cluster_steps = self.user_params.get("skip_user_label_cluster_steps", False) + + BEFORE_LABEL = "Before Subscriptions 12345678912" + AFTER_LABEL = "After Subscriptions 123456789123" + + # Pre-conditions + + # Make sure all certificates are installed with maximal size + dev_ctrl.fabricAdmin.certificateAuthority.maximizeCertChains = True + + # TODO: Do from PICS list. The reflection approach here what a real client would do, + # and it respects what the test says: "TH writes 4 entries per endpoint where LabelList is supported" + logging.info("Pre-condition: determine whether any endpoints have UserLabel cluster (ULABEL.S.A0000(LabelList))") + endpoints_with_user_label_list = await dev_ctrl.ReadAttribute(self.dut_node_id, [Clusters.UserLabel.Attributes.LabelList]) + has_user_labels = len(endpoints_with_user_label_list) > 0 + if has_user_labels: + logging.info("--> User label cluster present on endpoints %s" % + ", ".join(["%d" % ep for ep in endpoints_with_user_label_list.keys()])) + else: + logging.info("--> User label cluster not present on any endpoitns") + + # Generate list of all clients names + all_names = [] + for fabric_idx in range(num_fabrics_to_commission): + for controller_idx in range(num_controllers_per_fabric): + all_names.append("RD%d%s" % (fabric_idx + 1, chr(ord('A') + controller_idx))) + logging.info(f"Client names that will be used: {all_names}") + client_list = [] + + # TODO: Shall we also verify SupportedFabrics attribute, and the CapabilityMinima attribute? + logging.info("Pre-conditions: validate CapabilityMinima.CaseSessionsPerFabric >= 3") + + capability_minima = await self.read_single_attribute(dev_ctrl, node_id=self.dut_node_id, endpoint=0, attribute=Clusters.Basic.Attributes.CapabilityMinima) + asserts.assert_greater_equal(capability_minima.caseSessionsPerFabric, 3) + + # Step 1: Commission 5 fabrics with maximized NOC chains + logging.info(f"Step 1: use existing fabric to configure new fabrics so that total is {num_fabrics_to_commission} fabrics") + + # Generate Node IDs for subsequent controllers start at 200, follow 200, 300, ... + node_ids = [200 + (i * 100) for i in range(num_controllers_per_fabric - 1)] + + # Prepare clients for first fabric, that includes the default controller + dev_ctrl.name = all_names.pop(0) + client_list.append(dev_ctrl) + + if num_controllers_per_fabric > 1: + new_controllers = await CommissioningBuildingBlocks.CreateControllersOnFabric(fabricAdmin=dev_ctrl.fabricAdmin, adminDevCtrl=dev_ctrl, controllerNodeIds=node_ids, privilege=Clusters.AccessControl.Enums.Privilege.kAdminister, targetNodeId=self.dut_node_id, catTags=[0x0001_0001]) + for controller in new_controllers: + controller.name = all_names.pop(0) + client_list.extend(new_controllers) + + # Prepare clients for subsequent fabrics + for i in range(num_fabrics_to_commission - 1): + admin_index = 2 + i + logging.info("Commissioning fabric %d/%d" % (admin_index, num_fabrics_to_commission)) + new_certificate_authority = self.certificate_authority_manager.NewCertificateAuthority() + new_fabric_admin = new_certificate_authority.NewFabricAdmin(vendorId=0xFFF1, fabricId=admin_index) + + new_admin_ctrl = new_fabric_admin.NewController(nodeId=dev_ctrl.nodeId, catTags=[0x0001_0001]) + new_admin_ctrl.name = all_names.pop(0) + client_list.append(new_admin_ctrl) + await CommissioningBuildingBlocks.AddNOCForNewFabricFromExisting(commissionerDevCtrl=dev_ctrl, newFabricDevCtrl=new_admin_ctrl, existingNodeId=self.dut_node_id, newNodeId=self.dut_node_id) + + if num_controllers_per_fabric > 1: + new_controllers = await CommissioningBuildingBlocks.CreateControllersOnFabric(fabricAdmin=new_fabric_admin, adminDevCtrl=new_admin_ctrl, + controllerNodeIds=node_ids, privilege=Clusters.AccessControl.Enums.Privilege.kAdminister, targetNodeId=self.dut_node_id, catTags=[0x0001_0001]) + for controller in new_controllers: + controller.name = all_names.pop(0) + + client_list.extend(new_controllers) + + asserts.assert_equal(len(client_list), num_fabrics_to_commission * + num_controllers_per_fabric, "Must have the right number of clients") + + client_by_name = {client.name: client for client in client_list} + + # Step 2: Set the Label field for each fabric and BasicInformation.NodeLabel to 32 characters + logging.info("Step 2: Setting the Label field for each fabric and BasicInformation.NodeLabel to 32 characters") + + for idx in range(num_fabrics_to_commission): + fabric_number = idx + 1 + # Client is client A for each fabric to set the Label field + client_name = "RD%dA" % fabric_number + client = client_by_name[client_name] + + # Send the UpdateLabel command + label = ("%d" % fabric_number) * 32 + logging.info("Step 2a: Setting fabric label on fabric %d to '%s' using client %s" % (fabric_number, label, client_name)) + await client.SendCommand(self.dut_node_id, 0, Clusters.OperationalCredentials.Commands.UpdateFabricLabel(label)) + + # Read back + fabric_metadata = await self.read_single_attribute(client, node_id=self.dut_node_id, endpoint=0, attribute=Clusters.OperationalCredentials.Attributes.Fabrics) + print(fabric_metadata) + asserts.assert_equal(fabric_metadata[0].label, label, "Fabrics[x].label must match what was written") + + # Before subscribing, set the NodeLabel to "Before Subscriptions" + logging.info(f"Step 2b: Set BasicInformation.NodeLabel to {BEFORE_LABEL}") + await client_list[0].WriteAttribute(self.dut_node_id, [(0, Clusters.Basic.Attributes.NodeLabel(value=BEFORE_LABEL))]) + + node_label = await self.read_single_attribute(client, node_id=self.dut_node_id, endpoint=0, attribute=Clusters.Basic.Attributes.NodeLabel) + asserts.assert_equal(node_label, BEFORE_LABEL, "NodeLabel must match what was written") + + # Step 3: Add 3 Access Control entries on DUT with a list of 4 Subjects and 3 Targets with the following parameters (...) + logging.info("Step 3: Fill ACL table so that all minimas are reached") + + for idx in range(num_fabrics_to_commission): + fabric_number = idx + 1 + # Client is client A for each fabric + client_name = "RD%dA" % fabric_number + client = client_by_name[client_name] + + acl = self.build_acl(fabric_number, client_by_name, num_controllers_per_fabric) + + logging.info(f"Step 3a: Writing ACL entry for fabric {fabric_number}") + await client.WriteAttribute(self.dut_node_id, [(0, Clusters.AccessControl.Attributes.Acl(acl))]) + + logging.info(f"Step 3b: Validating ACL entry for fabric {fabric_number}") + acl_readback = await self.read_single_attribute(client, node_id=self.dut_node_id, endpoint=0, attribute=Clusters.AccessControl.Attributes.Acl) + fabric_index = 9999 + for entry in acl_readback: + asserts.assert_equal(entry.fabricIndex, fabric_number, "Fabric Index of response entries must match") + fabric_index = entry.fabricIndex + + for entry in acl: + # Fix-up the original ACL list items (that all had fabricIndex of 0 on write, since ignored) + # so that they match incoming fabric index. Allows checking by equality of the structs + entry.fabricIndex = fabric_index + asserts.assert_equal(acl_readback, acl, "ACL must match what was written") + + # Step 4 and 5 (the operations cannot be separated): establish all CASE sessions and subscriptions + + # Subscribe with all clients to NodeLabel attribute and 2 more paths + sub_handlers = [] + resub_catchers = [] + output_queue = queue.Queue() + subscription_contents = [ + (0, Clusters.Basic.Attributes.NodeLabel), # Single attribute + (0, Clusters.OperationalCredentials), # Wildcard all of opcreds attributes on EP0 + Clusters.Descriptor # All descriptors on all endpoints + ] + + logging.info("Step 4 and 5 (first part): Establish subscription with all %d clients" % len(client_list)) + for sub_idx, client in enumerate(client_list): + logging.info("Establishing subscription %d/%d from controller node %s" % (sub_idx + 1, len(client_list), client.name)) + + sub = await client.ReadAttribute(nodeid=self.dut_node_id, attributes=subscription_contents, + reportInterval=(min_report_interval_sec, max_report_interval_sec), keepSubscriptions=False) + self._subscriptions.append(sub) + + attribute_handler = AttributeChangeAccumulator( + name=client.name, expected_attribute=Clusters.Basic.Attributes.NodeLabel, output=output_queue) + sub.SetAttributeUpdateCallback(attribute_handler) + sub_handlers.append(attribute_handler) + + # TODO: Replace resubscription catcher with API to disable re-subscription on failure + resub_catcher = ResubscriptionCatcher(name=client.name) + sub.SetResubscriptionAttemptedCallback(resub_catcher) + resub_catchers.append(resub_catcher) + + asserts.assert_equal(len(self._subscriptions), len(client_list), "Must have the right number of subscriptions") + + # Step 6: Read 9 paths and validate success + logging.info("Step 6: Read 9 paths (first 9 attributes of Basic Information cluster) and validate success") + + large_read_contents = [ + Clusters.Basic.Attributes.DataModelRevision, + Clusters.Basic.Attributes.VendorName, + Clusters.Basic.Attributes.VendorID, + Clusters.Basic.Attributes.ProductName, + Clusters.Basic.Attributes.ProductID, + Clusters.Basic.Attributes.NodeLabel, + Clusters.Basic.Attributes.Location, + Clusters.Basic.Attributes.HardwareVersion, + Clusters.Basic.Attributes.HardwareVersionString, + ] + large_read_paths = [(0, attrib) for attrib in large_read_contents] + basic_info = await dev_ctrl.ReadAttribute(self.dut_node_id, large_read_paths) + + # Make sure everything came back from the read that we expected + asserts.assert_true(0 in basic_info.keys(), "Must have read endpoint 0 data") + asserts.assert_true(Clusters.Basic in basic_info[0].keys(), "Must have read Basic Information cluster data") + for attribute in large_read_contents: + asserts.assert_true(attribute in basic_info[0][Clusters.Basic], + "Must have read back attribute %s" % (attribute.__name__)) + + # Step 7: Trigger a change on NodeLabel + logging.info( + "Step 7: Change attribute with one client, await all attributes changed successfully without loss of subscriptions") + await asyncio.sleep(1) + await client_list[0].WriteAttribute(self.dut_node_id, [(0, Clusters.Basic.Attributes.NodeLabel(value=AFTER_LABEL))]) + + all_changes = {client.name: False for client in client_list} + + # Await a stabilization delay in increments to let the event loops run + start_time = time.time() + elapsed = 0 + time_remaining = timeout_delay_sec + + while time_remaining > 0: + try: + item = output_queue.get(block=True, timeout=time_remaining) + client_name, endpoint, attribute, value = item['name'], item['endpoint'], item['attribute'], item['value'] + + # Record arrival of an expected subscription change when seen + if endpoint == 0 and attribute == Clusters.Basic.Attributes.NodeLabel and value == AFTER_LABEL: + if not all_changes[client_name]: + logging.info("Got expected attribute change for client %s" % client_name) + all_changes[client_name] = True + + # We are done waiting when we have accumulated all results + if all(all_changes.values()): + logging.info("All clients have reported, done waiting.") + break + except queue.Empty: + # No error, we update timeouts and keep going + pass + + elapsed = time.time() - start_time + time_remaining = timeout_delay_sec - elapsed + + logging.info("Step 7: Validation of results") + sub_test_failed = False + + for catcher in resub_catchers: + if catcher.caught_resubscription: + logging.error("Client %s saw a resubscription" % catcher.name) + sub_test_failed = True + else: + logging.info("Client %s correctly did not see a resubscription" % catcher.name) + + all_reports_gotten = all(all_changes.values()) + if not all_reports_gotten: + logging.error("Missing reports from the following clients: %s" % + ", ".join([name for name, value in all_changes.items() if value is False])) + sub_test_failed = True + else: + logging.info("Got successful reports from all clients, meaning all concurrent CASE sessions worked") + + # Determine result of Step 7 + if sub_test_failed: + asserts.fail("Failed step 7 !") + + # Step 8: Validate sessions have not changed by doing a read on NodeLabel from all clients + logging.info("Step 8: Read back NodeLabel directly from all clients") + for sub_idx, client in enumerate(client_list): + logging.info("Reading NodeLabel (%d/%d) from controller node %s" % (sub_idx + 1, len(client_list), client.name)) + + label_readback = await self.read_single_attribute(client, node_id=self.dut_node_id, endpoint=0, attribute=Clusters.Basic.Attributes.NodeLabel) + asserts.assert_equal(label_readback, AFTER_LABEL) + + # TODO: Compare before/after session IDs. Requires more native changes, and the + # subcription method above is actually good enough we think. + + # Step 9: Fill user label list + if has_user_labels and not skip_user_label_cluster_steps: + await self.fill_user_label_list(dev_ctrl, self.dut_node_id) + else: + logging.info("Step 9: Skipped due to no UserLabel cluster instances") + + def random_string(self, length) -> str: + rnd = self._pseudo_random_generator + return "".join([rnd.choice("abcdef0123456789") for _ in range(length)])[:length] + + async def fill_user_label_list(self, dev_ctrl, target_node_id): + logging.info("Step 9: Fill UserLabel clusters on each endpoint") + user_labels = await dev_ctrl.ReadAttribute(target_node_id, [Clusters.UserLabel]) + + # Build 4 sets of maximized labels + random_label = self.random_string(16) + random_value = self.random_string(16) + labels = [Clusters.UserLabel.Structs.LabelStruct(label=random_label, value=random_value) for _ in range(4)] + + for endpoint_id in user_labels: + clusters = user_labels[endpoint_id] + for cluster in clusters: + if cluster == Clusters.UserLabel: + logging.info("Step 9a: Filling UserLabel cluster on endpoint %d" % endpoint_id) + statuses = await dev_ctrl.WriteAttribute(target_node_id, [(endpoint_id, Clusters.UserLabel.Attributes.LabelList(labels))]) + asserts.assert_equal(statuses[0].Status, StatusEnum.Success, "Label write must succeed") + + logging.info("Step 9b: Validate UserLabel cluster contents after write on endpoint %d" % endpoint_id) + read_back_labels = await self.read_single_attribute(dev_ctrl, node_id=target_node_id, endpoint=endpoint_id, attribute=Clusters.UserLabel.Attributes.LabelList) + print(read_back_labels) + + asserts.assert_equal(read_back_labels, labels, "LabelList attribute must match what was written") + + def build_acl(self, fabric_number, client_by_name, num_controllers_per_fabric): + acl = [] + + # Test says: + # + # . struct + # - Privilege field: Administer (5) + # - AuthMode field: CASE (2) + # - Subjects field: [0xFFFF_FFFD_0001_0001, 0x2000_0000_0000_0001, 0x2000_0000_0000_0002, 0x2000_0000_0000_0003] + # - Targets field: [{Endpoint: 0}, {Cluster: 0xFFF1_FC00, DeviceType: 0xFFF1_FC30}, {Cluster: 0xFFF1_FC00, DeviceType: 0xFFF1_FC31}] + # . struct + # - Privilege field: Manage (4) + # - AuthMode field: CASE (2) + # - Subjects field: [0x1000_0000_0000_0001, 0x1000_0000_0000_0002, 0x1000_0000_0000_0003, 0x1000_0000_0000_0004] + # - Targets field: [{Cluster: 0xFFF1_FC00, DeviceType: 0xFFF1_FC20}, {Cluster: 0xFFF1_FC01, DeviceType: 0xFFF1_FC21}, {Cluster: 0xFFF1_FC02, DeviceType: 0xFFF1_FC22}] + # . struct + # - Privilege field: Operate (3) + # - AuthMode field: CASE (2) + # - Subjects field: [0x3000_0000_0000_0001, 0x3000_0000_0000_0002, 0x3000_0000_0000_0003, 0x3000_0000_0000_0004] + # - Targets field: [{Cluster: 0xFFF1_FC40, DeviceType: 0xFFF1_FC20}, {Cluster: 0xFFF1_FC41, DeviceType: 0xFFF1_FC21}, {Cluster: 0xFFF1_FC02, DeviceType: 0xFFF1_FC42}] + + # Administer ACL entry + admin_subjects = [0xFFFF_FFFD_0001_0001, 0x2000_0000_0000_0001, 0x2000_0000_0000_0002, 0x2000_0000_0000_0003] + + admin_targets = [ + Clusters.AccessControl.Structs.Target(endpoint=0), + Clusters.AccessControl.Structs.Target(cluster=0xFFF1_FC00, deviceType=0xFFF1_BC30), + Clusters.AccessControl.Structs.Target(cluster=0xFFF1_FC01, deviceType=0xFFF1_BC31) + ] + admin_acl_entry = Clusters.AccessControl.Structs.AccessControlEntry(privilege=Clusters.AccessControl.Enums.Privilege.kAdminister, + authMode=Clusters.AccessControl.Enums.AuthMode.kCase, + subjects=admin_subjects, + targets=admin_targets) + acl.append(admin_acl_entry) + + # Manage ACL entry + manage_subjects = [0x1000_0000_0000_0001, 0x1000_0000_0000_0002, 0x1000_0000_0000_0003, 0x1000_0000_0000_0004] + manage_targets = [ + Clusters.AccessControl.Structs.Target(cluster=0xFFF1_FC00, deviceType=0xFFF1_BC20), + Clusters.AccessControl.Structs.Target(cluster=0xFFF1_FC01, deviceType=0xFFF1_BC21), + Clusters.AccessControl.Structs.Target(cluster=0xFFF1_FC02, deviceType=0xFFF1_BC22) + ] + + manage_acl_entry = Clusters.AccessControl.Structs.AccessControlEntry(privilege=Clusters.AccessControl.Enums.Privilege.kManage, + authMode=Clusters.AccessControl.Enums.AuthMode.kCase, + subjects=manage_subjects, + targets=manage_targets) + acl.append(manage_acl_entry) + + # Operate ACL entry + operate_subjects = [0x3000_0000_0000_0001, 0x3000_0000_0000_0002, 0x3000_0000_0000_0003, 0x3000_0000_0000_0004] + operate_targets = [ + Clusters.AccessControl.Structs.Target(cluster=0xFFF1_FC40, deviceType=0xFFF1_BC20), + Clusters.AccessControl.Structs.Target(cluster=0xFFF1_FC41, deviceType=0xFFF1_BC21), + Clusters.AccessControl.Structs.Target(cluster=0xFFF1_FC42, deviceType=0xFFF1_BC42) + ] + + operate_acl_entry = Clusters.AccessControl.Structs.AccessControlEntry(privilege=Clusters.AccessControl.Enums.Privilege.kOperate, + authMode=Clusters.AccessControl.Enums.AuthMode.kCase, + subjects=operate_subjects, + targets=operate_targets) + acl.append(operate_acl_entry) + + return acl + + +if __name__ == "__main__": + default_matter_test_main(maximize_cert_chains=True, controller_cat_tags=[0x0001_0001]) diff --git a/src/python_testing/TC_SC_3_6.py b/src/python_testing/TC_SC_3_6.py index ede817f8de4628..2c258c620d86a1 100644 --- a/src/python_testing/TC_SC_3_6.py +++ b/src/python_testing/TC_SC_3_6.py @@ -18,6 +18,7 @@ from matter_testing_support import MatterBaseTest, default_matter_test_main, async_test_body import chip.clusters as Clusters import chip.FabricAdmin +import chip.CertificateAuthority import logging from mobly import asserts from chip.utils import CommissioningBuildingBlocks @@ -137,7 +138,8 @@ async def test_TC_SC_3_6(self): for i in range(num_fabrics_to_commission - 1): admin_index = 2 + i logging.info("Commissioning fabric %d/%d" % (admin_index, num_fabrics_to_commission)) - new_fabric_admin = chip.FabricAdmin.FabricAdmin(vendorId=0xFFF1, adminIndex=admin_index) + new_certificate_authority = self.certificate_authority_manager.NewCertificateAuthority() + new_fabric_admin = new_certificate_authority.NewFabricAdmin(vendorId=0xFFF1, fabricId=1) new_admin_ctrl = new_fabric_admin.NewController(nodeId=dev_ctrl.nodeId) new_admin_ctrl.name = all_names.pop(0) client_list.append(new_admin_ctrl) diff --git a/src/python_testing/matter_testing_support.py b/src/python_testing/matter_testing_support.py index 6064d46fda0dcd..7c21f0b6471ce8 100644 --- a/src/python_testing/matter_testing_support.py +++ b/src/python_testing/matter_testing_support.py @@ -25,6 +25,7 @@ import chip.logging import chip.native import chip.FabricAdmin +import chip.CertificateAuthority from chip.utils import CommissioningBuildingBlocks import builtins from typing import Optional, List, Tuple @@ -45,7 +46,6 @@ from mobly import utils from mobly.test_runner import TestRunner - # TODO: Add utility to commission a device if needed # TODO: Add utilities to keep track of controllers/fabrics @@ -124,6 +124,7 @@ class MatterTestConfig: ble_interface_id: int = None admin_vendor_id: int = _DEFAULT_ADMIN_VENDOR_ID + case_admin_subject: int = None global_test_params: dict = field(default_factory=dict) # List of explicit tests to run by name. If empty, all tests will run tests: List[str] = field(default_factory=list) @@ -132,6 +133,7 @@ class MatterTestConfig: discriminator: int = None setup_passcode: int = None commissionee_ip_address_just_for_testing: str = None + maximize_cert_chains: bool = False qr_code_content: str = None manual_code: str = None @@ -144,6 +146,9 @@ class MatterTestConfig: dut_node_id: int = _DEFAULT_DUT_NODE_ID # Node ID to use for controller/commissioner controller_node_id: int = _DEFAULT_CONTROLLER_NODE_ID + # CAT Tags for default controller/commissioner + controller_cat_tags: List[int] = None + # Fabric ID which to use fabric_id: int = None # "Alpha" by default @@ -157,7 +162,6 @@ class MatterStackState: def __init__(self, config: MatterTestConfig): self._logger = logger self._config = config - self._fabric_admins = [] if not hasattr(builtins, "chipStack"): chip.native.Init(bluetoothAdapter=config.ble_interface_id) @@ -180,22 +184,18 @@ def _init_stack(self, already_initialized: bool, **kwargs): builtins.chipStack = self._chip_stack self._storage = self._chip_stack.GetStorageManager() + self._certificate_authority_manager = chip.CertificateAuthority.CertificateAuthorityManager(chipStack=self._chip_stack) + self._certificate_authority_manager.LoadAuthoritiesFromStorage() - try: - admin_list = self._storage.GetReplKey('fabricAdmins') - found_admin_list = True - except KeyError: - found_admin_list = False - - if not found_admin_list: - self._logger.warn("No previous fabric administrative data found in persistent data: initializing a new one") - self._fabric_admins.append(chip.FabricAdmin.FabricAdmin(self._config.admin_vendor_id)) - else: - for admin_idx in admin_list: - self._logger.info( - f"Restoring FabricAdmin from storage to manage FabricId {admin_list[admin_idx]['fabricId']}, AdminIndex {admin_idx}") - self._fabric_admins.append(chip.FabricAdmin.FabricAdmin(vendorId=int(admin_list[admin_idx]['vendorId']), - fabricId=admin_list[admin_idx]['fabricId'], adminIndex=int(admin_idx))) + if (len(self._certificate_authority_manager.activeCaList) == 0): + self._logger.warn( + "Didn't find any CertificateAuthorities in storage -- creating a new CertificateAuthority + FabricAdmin...") + ca = self._certificate_authority_manager.NewCertificateAuthority(caIndex=self._config.root_of_trust_index) + ca.maximizeCertChains = self._config.maximize_cert_chains + ca.NewFabricAdmin(vendorId=0xFFF1, fabricId=self._config.fabric_id) + elif (len(self._certificate_authority_manager.activeCaList[0].adminList) == 0): + self._logger.warn("Didn't find any FabricAdmins in storage -- creating a new one...") + self._certificate_authority_manager.activeCaList[0].NewFabricAdmin(vendorId=0xFFF1, fabricId=self._config.fabric_id) # TODO: support getting access to chip-tool credentials issuer's data @@ -204,14 +204,17 @@ def Shutdown(self): # Unfortunately, all the below are singleton and possibly # managed elsewhere so we have to be careful not to touch unless # we initialized ourselves. - ChipDeviceCtrl.ChipDeviceController.ShutdownAll() - chip.FabricAdmin.FabricAdmin.ShutdownAll() + self._certificate_authority_manager.Shutdown() global_chip_stack = builtins.chipStack global_chip_stack.Shutdown() @property - def fabric_admins(self): - return self._fabric_admins + def certificate_authorities(self): + return self._certificate_authority_manager.activeCaList + + @property + def certificate_authority_manager(self): + return self._certificate_authority_manager @property def storage(self) -> PersistentStorage: @@ -251,6 +254,10 @@ def default_controller(self) -> ChipDeviceCtrl: def matter_stack(self) -> MatterStackState: return unstash_globally(self.user_params.get("matter_stack")) + @property + def certificate_authority_manager(self) -> chip.CertificateAuthority.CertificateAuthorityManager: + return unstash_globally(self.user_params.get("certificate_authority_manager")) + @property def dut_node_id(self) -> int: return self.matter_test_config.dut_node_id @@ -476,6 +483,13 @@ def populate_commissioning_args(args: argparse.Namespace, config: MatterTestConf return False config.commissionee_ip_address_just_for_testing = args.ip_addr + if args.case_admin_subject is None: + # Use controller node ID as CASE admin subject during commissioning if nothing provided + config.case_admin_subject = config.controller_node_id + else: + # If a CASE admin subject is provided, then use that + config.case_admin_subject = args.case_admin_subject + return True @@ -568,6 +582,8 @@ def parse_matter_test_args(argv: List[str]) -> MatterTestConfig: commission_group.add_argument('--admin-vendor-id', action="store", type=int_decimal_or_hex, default=_DEFAULT_ADMIN_VENDOR_ID, metavar="VENDOR_ID", help="VendorID to use during commissioning (default 0x%04X)" % _DEFAULT_ADMIN_VENDOR_ID) + commission_group.add_argument('--case-admin-subject', action="store", type=int_decimal_or_hex, + metavar="CASE_ADMIN_SUBJECT", help="Set the CASE admin subject to an explicit value (default to commissioner Node ID)") code_group = parser.add_mutually_exclusive_group(required=False) @@ -654,7 +670,7 @@ def _commission_device(self) -> bool: raise ValueError("Invalid commissioning method %s!" % conf.commissioning_method) -def default_matter_test_main(argv=None): +def default_matter_test_main(argv=None, **kwargs): """Execute the test class in a test module. This is the default entry point for running a test script file directly. In this case, only one test class in a test script is allowed. @@ -669,6 +685,10 @@ def default_matter_test_main(argv=None): """ matter_test_config = parse_matter_test_args(argv) + # Allow override of command line from optional arguments + if matter_test_config.controller_cat_tags is None and "controller_cat_tags" in kwargs: + matter_test_config.controller_cat_tags = kwargs["controller_cat_tags"] + # Find the test class in the test script. test_class = _find_test_class() @@ -680,16 +700,27 @@ def default_matter_test_main(argv=None): if len(matter_test_config.tests) > 0: tests = matter_test_config.tests + # This is required in case we need any testing with maximized certificate chains. + # We need *all* issuers from the start, even for default controller, to use + # maximized chains, before MatterStackState init, others some stale certs + # may not chain properly. + if "maximize_cert_chains" in kwargs: + matter_test_config.maximize_cert_chains = kwargs["maximize_cert_chains"] + stack = MatterStackState(matter_test_config) test_config.user_params["matter_stack"] = stash_globally(stack) # TODO: Steer to right FabricAdmin! - default_controller = stack.fabric_admins[0].NewController(nodeId=matter_test_config.controller_node_id, - paaTrustStorePath=str(matter_test_config.paa_trust_store_path)) + # TODO: If CASE Admin Subject is a CAT tag range, then make sure to issue NOC with that CAT tag + + default_controller = stack.certificate_authorities[0].adminList[0].NewController(nodeId=matter_test_config.controller_node_id, + paaTrustStorePath=str(matter_test_config.paa_trust_store_path), catTags=matter_test_config.controller_cat_tags) test_config.user_params["default_controller"] = stash_globally(default_controller) test_config.user_params["matter_test_config"] = stash_globally(matter_test_config) + test_config.user_params["certificate_authority_manager"] = stash_globally(stack.certificate_authority_manager) + # Execute the test class with the config ok = True diff --git a/src/system/BUILD.gn b/src/system/BUILD.gn index f2f5172dbee3c6..a70b943e1d14d2 100644 --- a/src/system/BUILD.gn +++ b/src/system/BUILD.gn @@ -177,7 +177,6 @@ static_library("system") { "SystemError.cpp", "SystemError.h", "SystemEvent.h", - "SystemFaultInjection.h", "SystemLayer.cpp", "SystemLayer.h", "SystemLayerImpl.h", @@ -219,7 +218,10 @@ static_library("system") { } if (chip_with_nlfaultinjection) { - sources += [ "SystemFaultInjection.cpp" ] + sources += [ + "SystemFaultInjection.cpp", + "SystemFaultInjection.h", + ] public_deps += [ "${nlfaultinjection_root}:nlfaultinjection" ] } } diff --git a/src/test_driver/efr32/BUILD.gn b/src/test_driver/efr32/BUILD.gn index 45e4aff6fe40a7..8ee3c4f3e59c69 100644 --- a/src/test_driver/efr32/BUILD.gn +++ b/src/test_driver/efr32/BUILD.gn @@ -96,6 +96,7 @@ efr32_executable("efr32_device_tests") { if (chip_enable_openthread) { deps += [ "${chip_root}/third_party/openthread:openthread", + "${chip_root}/third_party/openthread:openthread_device", "${examples_plat_dir}:efr-matter-shell", ] } diff --git a/src/transport/SessionUpdateDelegate.h b/src/transport/SessionUpdateDelegate.h index 3dc01f88632ab5..741245d04c84fc 100644 --- a/src/transport/SessionUpdateDelegate.h +++ b/src/transport/SessionUpdateDelegate.h @@ -17,6 +17,7 @@ #pragma once #include +#include namespace chip { diff --git a/third_party/android/platform-libcore/android-platform-libcore/include/LocalArray.h b/third_party/android/platform-libcore/android-platform-libcore/include/LocalArray.h deleted file mode 100644 index 2ab708affc69af..00000000000000 --- a/third_party/android/platform-libcore/android-platform-libcore/include/LocalArray.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (C) 2009 The Android Open Source Project - * - * 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. - */ - -#ifndef LOCAL_ARRAY_H_included -#define LOCAL_ARRAY_H_included - -#include -#include - -/** - * A fixed-size array with a size hint. That number of bytes will be allocated - * on the stack, and used if possible, but if more bytes are requested at - * construction time, a buffer will be allocated on the heap (and deallocated - * by the destructor). - * - * The API is intended to be a compatible subset of C++0x's std::array. - */ -template -class LocalArray { -public: - /** - * Allocates a new fixed-size array of the given size. If this size is - * less than or equal to the template parameter STACK_BYTE_COUNT, an - * internal on-stack buffer will be used. Otherwise a heap buffer will - * be allocated. - */ - LocalArray(size_t desiredByteCount) : mSize(desiredByteCount) { - if (desiredByteCount > STACK_BYTE_COUNT) { - mPtr = new char[mSize]; - } else { - mPtr = &mOnStackBuffer[0]; - } - } - - /** - * Frees the heap-allocated buffer, if there was one. - */ - ~LocalArray() { - if (mPtr != &mOnStackBuffer[0]) { - delete[] mPtr; - } - } - - // Capacity. - size_t size() { return mSize; } - bool empty() { return mSize == 0; } - - // Element access. - char& operator[](size_t n) { return mPtr[n]; } - const char& operator[](size_t n) const { return mPtr[n]; } - -private: - char mOnStackBuffer[STACK_BYTE_COUNT]; - char* mPtr; - size_t mSize; - - // Disallow copy and assignment. - LocalArray(const LocalArray&); - void operator=(const LocalArray&); -}; - -#endif // LOCAL_ARRAY_H_included diff --git a/third_party/android/platform-libcore/android-platform-libcore/include/ScopedFd.h b/third_party/android/platform-libcore/android-platform-libcore/include/ScopedFd.h deleted file mode 100644 index d2b7935fab55dd..00000000000000 --- a/third_party/android/platform-libcore/android-platform-libcore/include/ScopedFd.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (C) 2009 The Android Open Source Project - * - * 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. - */ - -#ifndef SCOPED_FD_H_included -#define SCOPED_FD_H_included - -#include - -// A smart pointer that closes the given fd on going out of scope. -// Use this when the fd is incidental to the purpose of your function, -// but needs to be cleaned up on exit. -class ScopedFd { -public: - explicit ScopedFd(int fd) : fd(fd) { - } - - ~ScopedFd() { - close(fd); - } - - int get() const { - return fd; - } - -private: - int fd; - - // Disallow copy and assignment. - ScopedFd(const ScopedFd&); - void operator=(const ScopedFd&); -}; - -#endif // SCOPED_FD_H_included diff --git a/third_party/android/platform-libcore/android-platform-libcore/luni/src/main/native/ifaddrs-android.h b/third_party/android/platform-libcore/android-platform-libcore/luni/src/main/native/ifaddrs-android.h deleted file mode 100644 index a993c9ea2a66fd..00000000000000 --- a/third_party/android/platform-libcore/android-platform-libcore/luni/src/main/native/ifaddrs-android.h +++ /dev/null @@ -1,233 +0,0 @@ -/* - * Copyright (C) 2009 The Android Open Source Project - * - * 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. - */ - -#ifndef IFADDRS_ANDROID_H_included -#define IFADDRS_ANDROID_H_included - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "LocalArray.h" -#include "ScopedFd.h" - -// Android (bionic) doesn't have getifaddrs(3)/freeifaddrs(3). -// We fake it here, so java_net_NetworkInterface.cpp can use that API -// with all the non-portable code being in this file. - -// Source-compatible subset of the BSD struct. -struct ifaddrs { - // Pointer to next struct in list, or NULL at end. - ifaddrs* ifa_next; - - // Interface name. - char* ifa_name; - - // Interface flags. - unsigned int ifa_flags; - - // Interface network address. - sockaddr* ifa_addr; - - // Interface netmask. - sockaddr* ifa_netmask; - - ifaddrs(ifaddrs* next) - : ifa_next(next), ifa_name(NULL), ifa_flags(0), ifa_addr(NULL), ifa_netmask(NULL) - { - } - - ~ifaddrs() { - delete ifa_next; - delete[] ifa_name; - delete ifa_addr; - delete ifa_netmask; - } - - // Sadly, we can't keep the interface index for portability with BSD. - // We'll have to keep the name instead, and re-query the index when - // we need it later. - bool setNameAndFlagsByIndex(unsigned int interfaceIndex) { - // Get the name. - char buf[IFNAMSIZ]; - char* name = if_indextoname(interfaceIndex, buf); - if (name == NULL) { - return false; - } - ifa_name = new char[strlen(name) + 1]; - strcpy(ifa_name, name); - - // Get the flags. - ScopedFd fd(socket(AF_INET, SOCK_DGRAM, 0)); - if (fd.get() == -1) { - return false; - } - ifreq ifr; - memset(&ifr, 0, sizeof(ifr)); - strcpy(ifr.ifr_name, name); - int rc = ioctl(fd.get(), SIOCGIFFLAGS, &ifr); - if (rc == -1) { - return false; - } - // ifr_flags is a bitmask, so really should be unsigned short. But it's - // a short, and we're assigning into an unsigned member here, so make - // the casting explicit. - ifa_flags = (unsigned int)ifr.ifr_flags; - return true; - } - - // Netlink gives us the address family in the header, and the - // sockaddr_in or sockaddr_in6 bytes as the payload. We need to - // stitch the two bits together into the sockaddr that's part of - // our portable interface. - void setAddress(unsigned char family, void* data, size_t byteCount) { - // Set the address proper... - sockaddr_storage* ss = new sockaddr_storage; - memset(ss, 0, sizeof(*ss)); - ifa_addr = reinterpret_cast(ss); - ss->ss_family = family; - uint8_t* dst = sockaddrBytes(family, ss); - memcpy(dst, data, byteCount); - } - - // Netlink gives us the prefix length as a bit count. We need to turn - // that into a BSD-compatible netmask represented by a sockaddr*. - void setNetmask(unsigned char family, size_t prefixLength) { - // ...and work out the netmask from the prefix length. - sockaddr_storage* ss = new sockaddr_storage; - memset(ss, 0, sizeof(*ss)); - ifa_netmask = reinterpret_cast(ss); - ss->ss_family = family; - uint8_t* dst = sockaddrBytes(family, ss); - memset(dst, 0xff, prefixLength / 8); - if ((prefixLength % 8) != 0) { - // We're explicitly dropping any bits left after we bitshift that - // don't fit into a uint8_t. - dst[prefixLength/8] = (uint8_t)(0xffu << (8 - (prefixLength % 8))); - } - } - - // Returns a pointer to the first byte in the address data (which is - // stored in network byte order). - uint8_t* sockaddrBytes(int family, sockaddr_storage* ss) { - if (family == AF_INET) { - sockaddr_in* ss4 = reinterpret_cast(ss); - return reinterpret_cast(&ss4->sin_addr); - } else if (family == AF_INET6) { - sockaddr_in6* ss6 = reinterpret_cast(ss); - return reinterpret_cast(&ss6->sin6_addr); - } - return NULL; - } - -private: - // Disallow copy and assignment. - ifaddrs(const ifaddrs&); - void operator=(const ifaddrs&); -}; - -// FIXME: use iovec instead. -struct addrReq_struct { - nlmsghdr netlinkHeader; - ifaddrmsg msg; -}; - -inline bool sendNetlinkMessage(int fd, const void* data, size_t byteCount) { - ssize_t sentByteCount = TEMP_FAILURE_RETRY(send(fd, data, byteCount, 0)); - return (sentByteCount == static_cast(byteCount)); -} - -inline ssize_t recvNetlinkMessage(int fd, char* buf, size_t byteCount) { - return TEMP_FAILURE_RETRY(recv(fd, buf, byteCount, 0)); -} - -// Source-compatible with the BSD function. -inline int getifaddrs(ifaddrs** result) { - // Simplify cleanup for callers. - *result = NULL; - - // Create a netlink socket. - ScopedFd fd(socket(AF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE)); - if (fd.get() < 0) { - return -1; - } - - // Ask for the address information. - addrReq_struct addrRequest; - memset(&addrRequest, 0, sizeof(addrRequest)); - addrRequest.netlinkHeader.nlmsg_flags = NLM_F_REQUEST | NLM_F_MATCH; - addrRequest.netlinkHeader.nlmsg_type = RTM_GETADDR; - addrRequest.netlinkHeader.nlmsg_len = NLMSG_ALIGN(NLMSG_LENGTH(sizeof(addrRequest))); - addrRequest.msg.ifa_family = AF_UNSPEC; // All families. - addrRequest.msg.ifa_index = 0; // All interfaces. - if (!sendNetlinkMessage(fd.get(), &addrRequest, addrRequest.netlinkHeader.nlmsg_len)) { - return -1; - } - - // Read the responses. - LocalArray<0> buf(65536); // We don't necessarily have std::vector. - ssize_t bytesRead; - while ((bytesRead = recvNetlinkMessage(fd.get(), &buf[0], buf.size())) > 0) { - nlmsghdr* hdr = reinterpret_cast(&buf[0]); - for (; NLMSG_OK(hdr, (size_t)bytesRead); hdr = NLMSG_NEXT(hdr, bytesRead)) { - switch (hdr->nlmsg_type) { - case NLMSG_DONE: - return 0; - case NLMSG_ERROR: - return -1; - case RTM_NEWADDR: - { - ifaddrmsg* address = reinterpret_cast(NLMSG_DATA(hdr)); - rtattr* rta = IFA_RTA(address); - size_t ifaPayloadLength = IFA_PAYLOAD(hdr); - while (RTA_OK(rta, ifaPayloadLength)) { - if (rta->rta_type == IFA_LOCAL) { - unsigned char family = address->ifa_family; - if (family == AF_INET || family == AF_INET6) { - *result = new ifaddrs(*result); - if (!(*result)->setNameAndFlagsByIndex(address->ifa_index)) { - return -1; - } - (*result)->setAddress(family, RTA_DATA(rta), RTA_PAYLOAD(rta)); - (*result)->setNetmask(family, address->ifa_prefixlen); - } - } - rta = RTA_NEXT(rta, ifaPayloadLength); - } - } - break; - } - } - } - // We only get here if recv fails before we see a NLMSG_DONE. - return -1; -} - -// Source-compatible with the BSD function. -inline void freeifaddrs(ifaddrs* addresses) { - delete addresses; -} - -#endif // IFADDRS_ANDROID_H_included diff --git a/third_party/cyw30739_sdk/BUILD.gn b/third_party/infineon/cyw30739_sdk/BUILD.gn similarity index 94% rename from third_party/cyw30739_sdk/BUILD.gn rename to third_party/infineon/cyw30739_sdk/BUILD.gn index a64a0293f54305..75b9e272840b63 100644 --- a/third_party/cyw30739_sdk/BUILD.gn +++ b/third_party/infineon/cyw30739_sdk/BUILD.gn @@ -32,7 +32,7 @@ group("cyw30739_sdk") { config("mbedtls_cyw30739_config") { defines = [ "MBEDTLS_CONFIG_FILE=", - "MBEDTLS_USER_CONFIG_FILE=", + "MBEDTLS_USER_CONFIG_FILE=", ] include_dirs = [ chip_root ] diff --git a/third_party/cyw30739_sdk/bsp_design_modus/cycfg_notices.h b/third_party/infineon/cyw30739_sdk/bsp_design_modus/cycfg_notices.h similarity index 100% rename from third_party/cyw30739_sdk/bsp_design_modus/cycfg_notices.h rename to third_party/infineon/cyw30739_sdk/bsp_design_modus/cycfg_notices.h diff --git a/third_party/cyw30739_sdk/bsp_design_modus/cycfg_pins.c b/third_party/infineon/cyw30739_sdk/bsp_design_modus/cycfg_pins.c similarity index 100% rename from third_party/cyw30739_sdk/bsp_design_modus/cycfg_pins.c rename to third_party/infineon/cyw30739_sdk/bsp_design_modus/cycfg_pins.c diff --git a/third_party/cyw30739_sdk/bsp_design_modus/cycfg_pins.h b/third_party/infineon/cyw30739_sdk/bsp_design_modus/cycfg_pins.h similarity index 100% rename from third_party/cyw30739_sdk/bsp_design_modus/cycfg_pins.h rename to third_party/infineon/cyw30739_sdk/bsp_design_modus/cycfg_pins.h diff --git a/third_party/cyw30739_sdk/bsp_design_modus/cycfg_routing.h b/third_party/infineon/cyw30739_sdk/bsp_design_modus/cycfg_routing.h similarity index 100% rename from third_party/cyw30739_sdk/bsp_design_modus/cycfg_routing.h rename to third_party/infineon/cyw30739_sdk/bsp_design_modus/cycfg_routing.h diff --git a/third_party/cyw30739_sdk/btp_reader.py b/third_party/infineon/cyw30739_sdk/btp_reader.py similarity index 100% rename from third_party/cyw30739_sdk/btp_reader.py rename to third_party/infineon/cyw30739_sdk/btp_reader.py diff --git a/third_party/cyw30739_sdk/compress_cgs_data.py b/third_party/infineon/cyw30739_sdk/compress_cgs_data.py similarity index 100% rename from third_party/cyw30739_sdk/compress_cgs_data.py rename to third_party/infineon/cyw30739_sdk/compress_cgs_data.py diff --git a/third_party/cyw30739_sdk/cyw30739_arm.gni b/third_party/infineon/cyw30739_sdk/cyw30739_arm.gni similarity index 100% rename from third_party/cyw30739_sdk/cyw30739_arm.gni rename to third_party/infineon/cyw30739_sdk/cyw30739_arm.gni diff --git a/third_party/cyw30739_sdk/cyw30739_executable.gni b/third_party/infineon/cyw30739_sdk/cyw30739_executable.gni similarity index 100% rename from third_party/cyw30739_sdk/cyw30739_executable.gni rename to third_party/infineon/cyw30739_sdk/cyw30739_executable.gni diff --git a/third_party/cyw30739_sdk/cyw30739_sdk.gni b/third_party/infineon/cyw30739_sdk/cyw30739_sdk.gni similarity index 100% rename from third_party/cyw30739_sdk/cyw30739_sdk.gni rename to third_party/infineon/cyw30739_sdk/cyw30739_sdk.gni diff --git a/third_party/cyw30739_sdk/flash.btp b/third_party/infineon/cyw30739_sdk/flash.btp similarity index 100% rename from third_party/cyw30739_sdk/flash.btp rename to third_party/infineon/cyw30739_sdk/flash.btp diff --git a/third_party/cyw30739_sdk/gen_ota_image.py b/third_party/infineon/cyw30739_sdk/gen_ota_image.py similarity index 100% rename from third_party/cyw30739_sdk/gen_ota_image.py rename to third_party/infineon/cyw30739_sdk/gen_ota_image.py diff --git a/third_party/cyw30739_sdk/include/auto_flags.h b/third_party/infineon/cyw30739_sdk/include/auto_flags.h similarity index 100% rename from third_party/cyw30739_sdk/include/auto_flags.h rename to third_party/infineon/cyw30739_sdk/include/auto_flags.h diff --git a/third_party/cyw30739_sdk/include/ota_fw_upgrade.h b/third_party/infineon/cyw30739_sdk/include/ota_fw_upgrade.h similarity index 100% rename from third_party/cyw30739_sdk/include/ota_fw_upgrade.h rename to third_party/infineon/cyw30739_sdk/include/ota_fw_upgrade.h diff --git a/third_party/cyw30739_sdk/include/wiced_button_manager.h b/third_party/infineon/cyw30739_sdk/include/wiced_button_manager.h similarity index 100% rename from third_party/cyw30739_sdk/include/wiced_button_manager.h rename to third_party/infineon/cyw30739_sdk/include/wiced_button_manager.h diff --git a/third_party/cyw30739_sdk/include/wiced_led_manager.h b/third_party/infineon/cyw30739_sdk/include/wiced_led_manager.h similarity index 100% rename from third_party/cyw30739_sdk/include/wiced_led_manager.h rename to third_party/infineon/cyw30739_sdk/include/wiced_led_manager.h diff --git a/third_party/cyw30739_sdk/merge_hex.py b/third_party/infineon/cyw30739_sdk/merge_hex.py similarity index 100% rename from third_party/cyw30739_sdk/merge_hex.py rename to third_party/infineon/cyw30739_sdk/merge_hex.py diff --git a/third_party/cyw30739_sdk/repos/30739A0 b/third_party/infineon/cyw30739_sdk/repos/30739A0 similarity index 100% rename from third_party/cyw30739_sdk/repos/30739A0 rename to third_party/infineon/cyw30739_sdk/repos/30739A0 diff --git a/third_party/cyw30739_sdk/repos/CYW930739M2EVB-01 b/third_party/infineon/cyw30739_sdk/repos/CYW930739M2EVB-01 similarity index 100% rename from third_party/cyw30739_sdk/repos/CYW930739M2EVB-01 rename to third_party/infineon/cyw30739_sdk/repos/CYW930739M2EVB-01 diff --git a/third_party/cyw30739_sdk/repos/btsdk-include b/third_party/infineon/cyw30739_sdk/repos/btsdk-include similarity index 100% rename from third_party/cyw30739_sdk/repos/btsdk-include rename to third_party/infineon/cyw30739_sdk/repos/btsdk-include diff --git a/third_party/cyw30739_sdk/repos/btsdk-tools b/third_party/infineon/cyw30739_sdk/repos/btsdk-tools similarity index 100% rename from third_party/cyw30739_sdk/repos/btsdk-tools rename to third_party/infineon/cyw30739_sdk/repos/btsdk-tools diff --git a/third_party/cyw30739_sdk/scripts/wiced-gen-ld.pl b/third_party/infineon/cyw30739_sdk/scripts/wiced-gen-ld.pl similarity index 100% rename from third_party/cyw30739_sdk/scripts/wiced-gen-ld.pl rename to third_party/infineon/cyw30739_sdk/scripts/wiced-gen-ld.pl diff --git a/third_party/cyw30739_sdk/src/ota_fw_upgrade.c b/third_party/infineon/cyw30739_sdk/src/ota_fw_upgrade.c similarity index 100% rename from third_party/cyw30739_sdk/src/ota_fw_upgrade.c rename to third_party/infineon/cyw30739_sdk/src/ota_fw_upgrade.c diff --git a/third_party/cyw30739_sdk/src/platform_retarget_lock.c b/third_party/infineon/cyw30739_sdk/src/platform_retarget_lock.c similarity index 100% rename from third_party/cyw30739_sdk/src/platform_retarget_lock.c rename to third_party/infineon/cyw30739_sdk/src/platform_retarget_lock.c diff --git a/third_party/cyw30739_sdk/src/wiced_button_manager.c b/third_party/infineon/cyw30739_sdk/src/wiced_button_manager.c similarity index 100% rename from third_party/cyw30739_sdk/src/wiced_button_manager.c rename to third_party/infineon/cyw30739_sdk/src/wiced_button_manager.c diff --git a/third_party/cyw30739_sdk/src/wiced_led_manager.c b/third_party/infineon/cyw30739_sdk/src/wiced_led_manager.c similarity index 100% rename from third_party/cyw30739_sdk/src/wiced_led_manager.c rename to third_party/infineon/cyw30739_sdk/src/wiced_led_manager.c diff --git a/third_party/p6/BUILD.gn b/third_party/infineon/psoc6/BUILD.gn similarity index 80% rename from third_party/p6/BUILD.gn rename to third_party/infineon/psoc6/BUILD.gn index cc892053658136..ebb79e618655c3 100644 --- a/third_party/p6/BUILD.gn +++ b/third_party/infineon/psoc6/BUILD.gn @@ -12,18 +12,18 @@ # See the License for the specific language governing permissions and # limitations under the License. -import("//build_overrides/p6.gni") -import("${p6_sdk_build_root}/p6_sdk.gni") +import("//build_overrides/psoc6.gni") +import("${psoc6_sdk_build_root}/psoc6_sdk.gni") declare_args() { - # Build target to use for p6 SDK. Use this to set global SDK defines. - p6_target_project = "" + # Build target to use for psoc6 SDK. Use this to set global SDK defines. + psoc6_target_project = "" } -assert(p6_target_project != "", "p6_target_project must be specified") +assert(psoc6_target_project != "", "psoc6_target_project must be specified") # Add includes, cflags, asmflags, etc in config -config("p6_sdk_config") { +config("psoc6_sdk_config") { # Pull out includes from generated json # Treat these includes as system includes, so warnings in them are not fatal. _system_include_dirs = [] @@ -32,7 +32,7 @@ config("p6_sdk_config") { include_dir = string_replace(include_dir, "-I", "", 1) # Path is relative to SDK - include_dir = "${p6_sdk_root}/${include_dir}" + include_dir = "${psoc6_sdk_root}/${include_dir}" _system_include_dirs += [ include_dir ] } @@ -43,7 +43,7 @@ config("p6_sdk_config") { } # Also add project include path (passed in from project build) - proj_path = get_label_info(p6_target_project, "dir") + proj_path = get_label_info(psoc6_target_project, "dir") include_dirs = [ "${proj_path}/include" ] # Pull out defines from generated json @@ -57,7 +57,7 @@ config("p6_sdk_config") { libs = [] foreach(lib, mtb_json.libs) { # Path is relative to SDK - lib = "${p6_sdk_root}/${lib}" + lib = "${psoc6_sdk_root}/${lib}" libs += [ lib ] } @@ -76,7 +76,7 @@ config("p6_sdk_config") { linker_script = string_replace(linker_script, "-T", "", 1) # Path is relative to SDK - linker_script = "${p6_sdk_root}/${linker_script}" + linker_script = "${psoc6_sdk_root}/${linker_script}" ldflags += [ "-T" + rebase_path(linker_script, root_build_dir) ] } @@ -89,7 +89,7 @@ config("p6_sdk_config") { ldflags -= [ "--specs=nano.specs" ] } -group("p6_build") { - public_configs = [ ":p6_sdk_config" ] - public_deps = [ p6_target_project ] +group("psoc6_build") { + public_configs = [ ":psoc6_sdk_config" ] + public_deps = [ psoc6_target_project ] } diff --git a/third_party/p6/p6_arm.gni b/third_party/infineon/psoc6/psoc6_arm.gni similarity index 96% rename from third_party/p6/p6_arm.gni rename to third_party/infineon/psoc6/psoc6_arm.gni index 1bd10393e9c60e..031e6e1cd4ce23 100644 --- a/third_party/p6/p6_arm.gni +++ b/third_party/infineon/psoc6/psoc6_arm.gni @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -import("p6_board.gni") +import("psoc6_board.gni") arm_arch = "armv7e-m" arm_abi = "aapcs" diff --git a/third_party/p6/p6_board.gni b/third_party/infineon/psoc6/psoc6_board.gni similarity index 82% rename from third_party/p6/p6_board.gni rename to third_party/infineon/psoc6/psoc6_board.gni index 01fedc36959abc..a6cae75a7aecc3 100644 --- a/third_party/p6/p6_board.gni +++ b/third_party/infineon/psoc6/psoc6_board.gni @@ -14,13 +14,13 @@ declare_args() { # P6 board used - p6_board = "" + psoc6_board = "" } -if (p6_board == "") { - p6_board = getenv("P6_BOARD") +if (psoc6_board == "") { + psoc6_board = getenv("PSOC6_BOARD") } -assert(p6_board != "", "P6_BOARD must be specified") +assert(psoc6_board != "", "PSOC6_BOARD must be specified") board_defines = [] diff --git a/third_party/p6/p6_executable.gni b/third_party/infineon/psoc6/psoc6_executable.gni similarity index 92% rename from third_party/p6/p6_executable.gni rename to third_party/infineon/psoc6/psoc6_executable.gni index bec0a3e3835a5c..02fd0e6b1593ed 100644 --- a/third_party/p6/p6_executable.gni +++ b/third_party/infineon/psoc6/psoc6_executable.gni @@ -16,9 +16,9 @@ import("//build_overrides/build.gni") import("//build_overrides/chip.gni") import("${build_root}/toolchain/flashable_executable.gni") -import("p6_board.gni") +import("psoc6_board.gni") -template("p6_executable") { +template("psoc6_executable") { output_base_name = get_path_info(invoker.output_name, "name") objcopy_image_name = output_base_name + ".hex" @@ -33,7 +33,7 @@ template("p6_executable") { flashing_runtime_target = target_name + ".flashing_runtime" flashing_script_inputs = [ "${chip_root}/scripts/flashing/firmware_utils.py", - "${chip_root}/scripts/flashing/p6_firmware_utils.py", + "${chip_root}/scripts/flashing/psoc6_firmware_utils.py", ] copy(flashing_runtime_target) { @@ -45,9 +45,9 @@ template("p6_executable") { "${chip_root}/scripts/flashing/gen_flashing_script.py" flashing_script_name = output_base_name + ".flash.py" flashing_options = [ - "p6", + "psoc6", "--device", - "${p6_board}", + "${psoc6_board}", ] flashable_executable(target_name) { diff --git a/third_party/p6/p6_sdk.gni b/third_party/infineon/psoc6/psoc6_sdk.gni similarity index 81% rename from third_party/p6/p6_sdk.gni rename to third_party/infineon/psoc6/psoc6_sdk.gni index fb86bb34937030..90366ddac471aa 100644 --- a/third_party/p6/p6_sdk.gni +++ b/third_party/infineon/psoc6/psoc6_sdk.gni @@ -15,9 +15,9 @@ import("//build_overrides/chip.gni") import("//build_overrides/jlink.gni") import("//build_overrides/mbedtls.gni") -import("//build_overrides/p6.gni") +import("//build_overrides/psoc6.gni") import("${chip_root}/src/platform/device.gni") -import("p6_board.gni") +import("psoc6_board.gni") # TODO: Don't hardcode config/toolchain # TODO: Convert to GN action? @@ -27,17 +27,18 @@ if (is_debug) { debug_str = "Release" } -mtb_json = read_file("${p6_sdk_root}/build/${p6_board}/$debug_str/GCC_ARM.json", - "json") +mtb_json = + read_file("${psoc6_sdk_root}/build/${psoc6_board}/$debug_str/GCC_ARM.json", + "json") -# Defines an p6 SDK build target. +# Defines an psoc6 SDK build target. # # Parameters: # sources - The sources files to build. # -template("p6_sdk_sources") { - if (defined(invoker.p6_project_dir)) { - p6_project_dir = invoker.p6_project_dir +template("psoc6_sdk_sources") { + if (defined(invoker.psoc6_project_dir)) { + psoc6_project_dir = invoker.psoc6_project_dir } if (defined(invoker.chip_enable_ota_requestor)) { @@ -46,7 +47,7 @@ template("p6_sdk_sources") { } } - # While most p6 sdk includes come from the p6_sdk_config config (in + # While most psoc6 sdk includes come from the psoc6_sdk_config config (in # BUILD.gn), this template gets instantiated by each project each of which # provides a few extra includes/defines. Handle those here. config("project_configs") { @@ -54,7 +55,7 @@ template("p6_sdk_sources") { if (defined(invoker.include_dirs)) { include_dirs += invoker.include_dirs } - include_dirs += [ "${p6_project_dir}/include" ] + include_dirs += [ "${psoc6_project_dir}/include" ] defines = [] if (defined(invoker.defines)) { @@ -84,17 +85,17 @@ template("p6_sdk_sources") { # Pull out c sources from generated json foreach(src, mtb_json_local.c_source) { - sources += [ "${p6_sdk_root}/${src}" ] + sources += [ "${psoc6_sdk_root}/${src}" ] } # Pull out cpp sources from generated json foreach(src, mtb_json_local.cxx_source) { - sources += [ "${p6_sdk_root}/${src}" ] + sources += [ "${psoc6_sdk_root}/${src}" ] } # Pull out .S files from generated json foreach(asm, mtb_json_local.asm_source) { - sources += [ "${p6_sdk_root}/${asm}" ] + sources += [ "${psoc6_sdk_root}/${asm}" ] } public_deps = [] diff --git a/third_party/p6/p6_sdk/.gitignore b/third_party/infineon/psoc6/psoc6_sdk/.gitignore similarity index 100% rename from third_party/p6/p6_sdk/.gitignore rename to third_party/infineon/psoc6/psoc6_sdk/.gitignore diff --git a/third_party/p6/p6_sdk/Makefile b/third_party/infineon/psoc6/psoc6_sdk/Makefile similarity index 100% rename from third_party/p6/p6_sdk/Makefile rename to third_party/infineon/psoc6/psoc6_sdk/Makefile diff --git a/third_party/p6/p6_sdk/arch/cc.h b/third_party/infineon/psoc6/psoc6_sdk/arch/cc.h similarity index 100% rename from third_party/p6/p6_sdk/arch/cc.h rename to third_party/infineon/psoc6/psoc6_sdk/arch/cc.h diff --git a/third_party/p6/p6_sdk/arch/sys_arch.c b/third_party/infineon/psoc6/psoc6_sdk/arch/sys_arch.c similarity index 100% rename from third_party/p6/p6_sdk/arch/sys_arch.c rename to third_party/infineon/psoc6/psoc6_sdk/arch/sys_arch.c diff --git a/third_party/p6/p6_sdk/arch/sys_arch.h b/third_party/infineon/psoc6/psoc6_sdk/arch/sys_arch.h similarity index 100% rename from third_party/p6/p6_sdk/arch/sys_arch.h rename to third_party/infineon/psoc6/psoc6_sdk/arch/sys_arch.h diff --git a/third_party/p6/p6_sdk/build/CY8CKIT-062S2-43012/Debug/GCC_ARM.json b/third_party/infineon/psoc6/psoc6_sdk/build/CY8CKIT-062S2-43012/Debug/GCC_ARM.json similarity index 100% rename from third_party/p6/p6_sdk/build/CY8CKIT-062S2-43012/Debug/GCC_ARM.json rename to third_party/infineon/psoc6/psoc6_sdk/build/CY8CKIT-062S2-43012/Debug/GCC_ARM.json diff --git a/third_party/p6/p6_sdk/build/CY8CKIT-062S2-43012/Release/GCC_ARM.json b/third_party/infineon/psoc6/psoc6_sdk/build/CY8CKIT-062S2-43012/Release/GCC_ARM.json similarity index 100% rename from third_party/p6/p6_sdk/build/CY8CKIT-062S2-43012/Release/GCC_ARM.json rename to third_party/infineon/psoc6/psoc6_sdk/build/CY8CKIT-062S2-43012/Release/GCC_ARM.json diff --git a/third_party/p6/p6_sdk/configs/FreeRTOSConfig.h b/third_party/infineon/psoc6/psoc6_sdk/configs/FreeRTOSConfig.h similarity index 100% rename from third_party/p6/p6_sdk/configs/FreeRTOSConfig.h rename to third_party/infineon/psoc6/psoc6_sdk/configs/FreeRTOSConfig.h diff --git a/third_party/p6/p6_sdk/configs/iot_config.h b/third_party/infineon/psoc6/psoc6_sdk/configs/iot_config.h similarity index 100% rename from third_party/p6/p6_sdk/configs/iot_config.h rename to third_party/infineon/psoc6/psoc6_sdk/configs/iot_config.h diff --git a/third_party/p6/p6_sdk/configs/lwipopts.h b/third_party/infineon/psoc6/psoc6_sdk/configs/lwipopts.h similarity index 100% rename from third_party/p6/p6_sdk/configs/lwipopts.h rename to third_party/infineon/psoc6/psoc6_sdk/configs/lwipopts.h diff --git a/third_party/p6/p6_sdk/configs/mbedtls_user_config.h b/third_party/infineon/psoc6/psoc6_sdk/configs/mbedtls_user_config.h similarity index 100% rename from third_party/p6/p6_sdk/configs/mbedtls_user_config.h rename to third_party/infineon/psoc6/psoc6_sdk/configs/mbedtls_user_config.h diff --git a/third_party/p6/p6_sdk/configs/mqtt_client_config.h b/third_party/infineon/psoc6/psoc6_sdk/configs/mqtt_client_config.h similarity index 100% rename from third_party/p6/p6_sdk/configs/mqtt_client_config.h rename to third_party/infineon/psoc6/psoc6_sdk/configs/mqtt_client_config.h diff --git a/third_party/p6/p6_sdk/configs/wifi_config.h b/third_party/infineon/psoc6/psoc6_sdk/configs/wifi_config.h similarity index 100% rename from third_party/p6/p6_sdk/configs/wifi_config.h rename to third_party/infineon/psoc6/psoc6_sdk/configs/wifi_config.h diff --git a/third_party/p6/p6_sdk/libs/TARGET_CY8CKIT-062S2-43012 b/third_party/infineon/psoc6/psoc6_sdk/libs/TARGET_CY8CKIT-062S2-43012 similarity index 100% rename from third_party/p6/p6_sdk/libs/TARGET_CY8CKIT-062S2-43012 rename to third_party/infineon/psoc6/psoc6_sdk/libs/TARGET_CY8CKIT-062S2-43012 diff --git a/third_party/p6/p6_sdk/libs/abstraction-rtos b/third_party/infineon/psoc6/psoc6_sdk/libs/abstraction-rtos similarity index 100% rename from third_party/p6/p6_sdk/libs/abstraction-rtos rename to third_party/infineon/psoc6/psoc6_sdk/libs/abstraction-rtos diff --git a/third_party/p6/p6_sdk/libs/anycloud-ota b/third_party/infineon/psoc6/psoc6_sdk/libs/anycloud-ota similarity index 100% rename from third_party/p6/p6_sdk/libs/anycloud-ota rename to third_party/infineon/psoc6/psoc6_sdk/libs/anycloud-ota diff --git a/third_party/p6/p6_sdk/libs/bluetooth-freertos b/third_party/infineon/psoc6/psoc6_sdk/libs/bluetooth-freertos similarity index 100% rename from third_party/p6/p6_sdk/libs/bluetooth-freertos rename to third_party/infineon/psoc6/psoc6_sdk/libs/bluetooth-freertos diff --git a/third_party/p6/p6_sdk/libs/btstack b/third_party/infineon/psoc6/psoc6_sdk/libs/btstack similarity index 100% rename from third_party/p6/p6_sdk/libs/btstack rename to third_party/infineon/psoc6/psoc6_sdk/libs/btstack diff --git a/third_party/p6/p6_sdk/libs/clib-support b/third_party/infineon/psoc6/psoc6_sdk/libs/clib-support similarity index 100% rename from third_party/p6/p6_sdk/libs/clib-support rename to third_party/infineon/psoc6/psoc6_sdk/libs/clib-support diff --git a/third_party/p6/p6_sdk/libs/connectivity-utilities b/third_party/infineon/psoc6/psoc6_sdk/libs/connectivity-utilities similarity index 100% rename from third_party/p6/p6_sdk/libs/connectivity-utilities rename to third_party/infineon/psoc6/psoc6_sdk/libs/connectivity-utilities diff --git a/third_party/p6/p6_sdk/libs/core-lib b/third_party/infineon/psoc6/psoc6_sdk/libs/core-lib similarity index 100% rename from third_party/p6/p6_sdk/libs/core-lib rename to third_party/infineon/psoc6/psoc6_sdk/libs/core-lib diff --git a/third_party/p6/p6_sdk/libs/core-make b/third_party/infineon/psoc6/psoc6_sdk/libs/core-make similarity index 100% rename from third_party/p6/p6_sdk/libs/core-make rename to third_party/infineon/psoc6/psoc6_sdk/libs/core-make diff --git a/third_party/p6/p6_sdk/libs/freertos b/third_party/infineon/psoc6/psoc6_sdk/libs/freertos similarity index 100% rename from third_party/p6/p6_sdk/libs/freertos rename to third_party/infineon/psoc6/psoc6_sdk/libs/freertos diff --git a/third_party/p6/p6_sdk/libs/kv-store b/third_party/infineon/psoc6/psoc6_sdk/libs/kv-store similarity index 100% rename from third_party/p6/p6_sdk/libs/kv-store rename to third_party/infineon/psoc6/psoc6_sdk/libs/kv-store diff --git a/third_party/p6/p6_sdk/libs/lwip b/third_party/infineon/psoc6/psoc6_sdk/libs/lwip similarity index 100% rename from third_party/p6/p6_sdk/libs/lwip rename to third_party/infineon/psoc6/psoc6_sdk/libs/lwip diff --git a/third_party/p6/p6_sdk/libs/mbedtls b/third_party/infineon/psoc6/psoc6_sdk/libs/mbedtls similarity index 100% rename from third_party/p6/p6_sdk/libs/mbedtls rename to third_party/infineon/psoc6/psoc6_sdk/libs/mbedtls diff --git a/third_party/p6/p6_sdk/libs/mtb-hal-cat1 b/third_party/infineon/psoc6/psoc6_sdk/libs/mtb-hal-cat1 similarity index 100% rename from third_party/p6/p6_sdk/libs/mtb-hal-cat1 rename to third_party/infineon/psoc6/psoc6_sdk/libs/mtb-hal-cat1 diff --git a/third_party/p6/p6_sdk/libs/mtb-pdl-cat1 b/third_party/infineon/psoc6/psoc6_sdk/libs/mtb-pdl-cat1 similarity index 100% rename from third_party/p6/p6_sdk/libs/mtb-pdl-cat1 rename to third_party/infineon/psoc6/psoc6_sdk/libs/mtb-pdl-cat1 diff --git a/third_party/p6/p6_sdk/libs/psoc6cm0p b/third_party/infineon/psoc6/psoc6_sdk/libs/psoc6cm0p similarity index 100% rename from third_party/p6/p6_sdk/libs/psoc6cm0p rename to third_party/infineon/psoc6/psoc6_sdk/libs/psoc6cm0p diff --git a/third_party/p6/p6_sdk/libs/recipe-make-cat1a b/third_party/infineon/psoc6/psoc6_sdk/libs/recipe-make-cat1a similarity index 100% rename from third_party/p6/p6_sdk/libs/recipe-make-cat1a rename to third_party/infineon/psoc6/psoc6_sdk/libs/recipe-make-cat1a diff --git a/third_party/p6/p6_sdk/libs/retarget-io b/third_party/infineon/psoc6/psoc6_sdk/libs/retarget-io similarity index 100% rename from third_party/p6/p6_sdk/libs/retarget-io rename to third_party/infineon/psoc6/psoc6_sdk/libs/retarget-io diff --git a/third_party/p6/p6_sdk/libs/secure-sockets b/third_party/infineon/psoc6/psoc6_sdk/libs/secure-sockets similarity index 100% rename from third_party/p6/p6_sdk/libs/secure-sockets rename to third_party/infineon/psoc6/psoc6_sdk/libs/secure-sockets diff --git a/third_party/p6/p6_sdk/libs/serial-flash b/third_party/infineon/psoc6/psoc6_sdk/libs/serial-flash similarity index 100% rename from third_party/p6/p6_sdk/libs/serial-flash rename to third_party/infineon/psoc6/psoc6_sdk/libs/serial-flash diff --git a/third_party/p6/p6_sdk/libs/whd-bsp-integration b/third_party/infineon/psoc6/psoc6_sdk/libs/whd-bsp-integration similarity index 100% rename from third_party/p6/p6_sdk/libs/whd-bsp-integration rename to third_party/infineon/psoc6/psoc6_sdk/libs/whd-bsp-integration diff --git a/third_party/p6/p6_sdk/libs/wifi-connection-manager b/third_party/infineon/psoc6/psoc6_sdk/libs/wifi-connection-manager similarity index 100% rename from third_party/p6/p6_sdk/libs/wifi-connection-manager rename to third_party/infineon/psoc6/psoc6_sdk/libs/wifi-connection-manager diff --git a/third_party/p6/p6_sdk/libs/wifi-host-driver b/third_party/infineon/psoc6/psoc6_sdk/libs/wifi-host-driver similarity index 100% rename from third_party/p6/p6_sdk/libs/wifi-host-driver rename to third_party/infineon/psoc6/psoc6_sdk/libs/wifi-host-driver diff --git a/third_party/p6/p6_sdk/libs/wifi-mw-core b/third_party/infineon/psoc6/psoc6_sdk/libs/wifi-mw-core similarity index 100% rename from third_party/p6/p6_sdk/libs/wifi-mw-core rename to third_party/infineon/psoc6/psoc6_sdk/libs/wifi-mw-core diff --git a/third_party/p6/p6_sdk/ota/config/mcuboot_config/mcuboot_assert.h b/third_party/infineon/psoc6/psoc6_sdk/ota/config/mcuboot_config/mcuboot_assert.h similarity index 100% rename from third_party/p6/p6_sdk/ota/config/mcuboot_config/mcuboot_assert.h rename to third_party/infineon/psoc6/psoc6_sdk/ota/config/mcuboot_config/mcuboot_assert.h diff --git a/third_party/p6/p6_sdk/ota/config/mcuboot_config/mcuboot_config.h b/third_party/infineon/psoc6/psoc6_sdk/ota/config/mcuboot_config/mcuboot_config.h similarity index 100% rename from third_party/p6/p6_sdk/ota/config/mcuboot_config/mcuboot_config.h rename to third_party/infineon/psoc6/psoc6_sdk/ota/config/mcuboot_config/mcuboot_config.h diff --git a/third_party/p6/p6_sdk/ota/config/mcuboot_config/mcuboot_logging.h b/third_party/infineon/psoc6/psoc6_sdk/ota/config/mcuboot_config/mcuboot_logging.h similarity index 100% rename from third_party/p6/p6_sdk/ota/config/mcuboot_config/mcuboot_logging.h rename to third_party/infineon/psoc6/psoc6_sdk/ota/config/mcuboot_config/mcuboot_logging.h diff --git a/third_party/p6/p6_sdk/ota/config/mcuboot_crypto_acc_config.h b/third_party/infineon/psoc6/psoc6_sdk/ota/config/mcuboot_crypto_acc_config.h similarity index 100% rename from third_party/p6/p6_sdk/ota/config/mcuboot_crypto_acc_config.h rename to third_party/infineon/psoc6/psoc6_sdk/ota/config/mcuboot_crypto_acc_config.h diff --git a/third_party/p6/p6_sdk/ota/config/mcuboot_crypto_config.h b/third_party/infineon/psoc6/psoc6_sdk/ota/config/mcuboot_crypto_config.h similarity index 100% rename from third_party/p6/p6_sdk/ota/config/mcuboot_crypto_config.h rename to third_party/infineon/psoc6/psoc6_sdk/ota/config/mcuboot_crypto_config.h diff --git a/third_party/p6/p6_sdk/ota/cy8c6xxa_cm4_dual_ota_int.ld b/third_party/infineon/psoc6/psoc6_sdk/ota/cy8c6xxa_cm4_dual_ota_int.ld similarity index 100% rename from third_party/p6/p6_sdk/ota/cy8c6xxa_cm4_dual_ota_int.ld rename to third_party/infineon/psoc6/psoc6_sdk/ota/cy8c6xxa_cm4_dual_ota_int.ld diff --git a/third_party/p6/p6_sdk/ota/matter-psoc6-mcuboot-bootloader.hex b/third_party/infineon/psoc6/psoc6_sdk/ota/matter-psoc6-mcuboot-bootloader.hex similarity index 100% rename from third_party/p6/p6_sdk/ota/matter-psoc6-mcuboot-bootloader.hex rename to third_party/infineon/psoc6/psoc6_sdk/ota/matter-psoc6-mcuboot-bootloader.hex diff --git a/third_party/p6/p6_sdk/ota/ota_base_build.sh b/third_party/infineon/psoc6/psoc6_sdk/ota/ota_base_build.sh similarity index 100% rename from third_party/p6/p6_sdk/ota/ota_base_build.sh rename to third_party/infineon/psoc6/psoc6_sdk/ota/ota_base_build.sh diff --git a/third_party/p6/p6_sdk/ota/ota_update_build.sh b/third_party/infineon/psoc6/psoc6_sdk/ota/ota_update_build.sh similarity index 100% rename from third_party/p6/p6_sdk/ota/ota_update_build.sh rename to third_party/infineon/psoc6/psoc6_sdk/ota/ota_update_build.sh diff --git a/third_party/openthread/BUILD.gn b/third_party/openthread/BUILD.gn index 752f245738a750..9ee8e905551837 100644 --- a/third_party/openthread/BUILD.gn +++ b/third_party/openthread/BUILD.gn @@ -16,10 +16,27 @@ group("openthread") { "${chip_root}/third_party/openthread/platforms:libopenthread-platform", "${chip_root}/third_party/openthread/platforms:libopenthread-platform-utils", ] + } +} + +group("openthread_device") { + if (chip_openthread_target != "") { + public_deps = [ chip_openthread_target ] + } else { + if (chip_openthread_ftd) { + public_deps = [ "${openthread_root}:libopenthread-ftd" ] + } else { + public_deps = [ "${openthread_root}:libopenthread-mtd" ] + } + } +} + +group("openthread_cli") { + if (chip_openthread_target == "") { if (chip_openthread_ftd) { - public_deps += [ "${openthread_root}:libopenthread-ftd" ] + public_deps = [ "${openthread_root}:libopenthread-cli-ftd" ] } else { - public_deps += [ "${openthread_root}:libopenthread-mtd" ] + public_deps = [ "${openthread_root}:libopenthread-cli-mtd" ] } } } diff --git a/third_party/openthread/ot-efr32 b/third_party/openthread/ot-efr32 index fd77faf7a3443f..1e10a32228c96f 160000 --- a/third_party/openthread/ot-efr32 +++ b/third_party/openthread/ot-efr32 @@ -1 +1 @@ -Subproject commit fd77faf7a3443f7941dfd9e9713aea09eb08e9b9 +Subproject commit 1e10a32228c96f273603612ef7d5ce693ecdf887 diff --git a/third_party/silabs/BUILD.gn b/third_party/silabs/BUILD.gn index c4f96d18d339f5..1589f72e7865ae 100644 --- a/third_party/silabs/BUILD.gn +++ b/third_party/silabs/BUILD.gn @@ -31,18 +31,6 @@ group("efr32_sdk") { public_deps = [ efr32_sdk_target ] } -if (chip_enable_openthread) { - group("openthread_cli") { - if (!use_silabs_thread_lib) { - if (chip_openthread_ftd) { - public_deps = [ "${sl_openthread_root}:libopenthread-cli-ftd" ] - } else { - public_deps = [ "${sl_openthread_root}:libopenthread-cli-mtd" ] - } - } - } -} - if (use_silabs_thread_lib) { config("libopenthread-platform_config") { include_dirs = [ "${sl_openthread_root}/examples/platforms" ] @@ -74,7 +62,6 @@ if (use_silabs_thread_lib) { "RADIO_CONFIG_DMP_SUPPORT=1", "${efr32_board}=1", "${efr32_mcu}", - "USE_SL_THREAD_CERT_LIB", "OPENTHREAD_CORE_CONFIG_PLATFORM_CHECK_FILE=\"openthread-core-efr32-config-check.h\"", ] @@ -88,7 +75,6 @@ if (use_silabs_thread_lib) { source_set("openthread_core_config_efr32") { sources = [ - "${sl_openthread_root}/src/cli/cli_config.h", "${sl_ot_efr32_root}/src/src/openthread-core-efr32-config-check.h", "${sl_ot_efr32_root}/src/src/openthread-core-efr32-config.h", ] @@ -102,37 +88,39 @@ if (use_silabs_thread_lib) { } source_set("ot-efr32-cert") { - sources = [ - "${sl_openthread_root}/examples/apps/cli/cli_uart.cpp", - "${sl_openthread_root}/src/cli/cli.cpp", - "${sl_openthread_root}/src/cli/cli.hpp", - "${sl_openthread_root}/src/cli/cli_coap.cpp", - "${sl_openthread_root}/src/cli/cli_coap.hpp", - "${sl_openthread_root}/src/cli/cli_coap_secure.cpp", - "${sl_openthread_root}/src/cli/cli_coap_secure.hpp", - "${sl_openthread_root}/src/cli/cli_commissioner.cpp", - "${sl_openthread_root}/src/cli/cli_commissioner.hpp", - "${sl_openthread_root}/src/cli/cli_config.h", - "${sl_openthread_root}/src/cli/cli_dataset.cpp", - "${sl_openthread_root}/src/cli/cli_dataset.hpp", - "${sl_openthread_root}/src/cli/cli_history.cpp", - "${sl_openthread_root}/src/cli/cli_history.hpp", - "${sl_openthread_root}/src/cli/cli_joiner.cpp", - "${sl_openthread_root}/src/cli/cli_joiner.hpp", - "${sl_openthread_root}/src/cli/cli_network_data.cpp", - "${sl_openthread_root}/src/cli/cli_network_data.hpp", - "${sl_openthread_root}/src/cli/cli_output.cpp", - "${sl_openthread_root}/src/cli/cli_output.hpp", - "${sl_openthread_root}/src/cli/cli_srp_client.cpp", - "${sl_openthread_root}/src/cli/cli_srp_client.hpp", - "${sl_openthread_root}/src/cli/cli_srp_server.cpp", - "${sl_openthread_root}/src/cli/cli_srp_server.hpp", - "${sl_openthread_root}/src/cli/cli_tcp.cpp", - "${sl_openthread_root}/src/cli/cli_tcp.hpp", - "${sl_openthread_root}/src/cli/cli_udp.cpp", - "${sl_openthread_root}/src/cli/cli_udp.hpp", - "${sl_openthread_root}/src/cli/x509_cert_key.hpp", - ] + if (enable_openthread_cli) { + sources = [ + "${sl_openthread_root}/examples/apps/cli/cli_uart.cpp", + "${sl_openthread_root}/src/cli/cli.cpp", + "${sl_openthread_root}/src/cli/cli.hpp", + "${sl_openthread_root}/src/cli/cli_coap.cpp", + "${sl_openthread_root}/src/cli/cli_coap.hpp", + "${sl_openthread_root}/src/cli/cli_coap_secure.cpp", + "${sl_openthread_root}/src/cli/cli_coap_secure.hpp", + "${sl_openthread_root}/src/cli/cli_commissioner.cpp", + "${sl_openthread_root}/src/cli/cli_commissioner.hpp", + "${sl_openthread_root}/src/cli/cli_config.h", + "${sl_openthread_root}/src/cli/cli_dataset.cpp", + "${sl_openthread_root}/src/cli/cli_dataset.hpp", + "${sl_openthread_root}/src/cli/cli_history.cpp", + "${sl_openthread_root}/src/cli/cli_history.hpp", + "${sl_openthread_root}/src/cli/cli_joiner.cpp", + "${sl_openthread_root}/src/cli/cli_joiner.hpp", + "${sl_openthread_root}/src/cli/cli_network_data.cpp", + "${sl_openthread_root}/src/cli/cli_network_data.hpp", + "${sl_openthread_root}/src/cli/cli_output.cpp", + "${sl_openthread_root}/src/cli/cli_output.hpp", + "${sl_openthread_root}/src/cli/cli_srp_client.cpp", + "${sl_openthread_root}/src/cli/cli_srp_client.hpp", + "${sl_openthread_root}/src/cli/cli_srp_server.cpp", + "${sl_openthread_root}/src/cli/cli_srp_server.hpp", + "${sl_openthread_root}/src/cli/cli_tcp.cpp", + "${sl_openthread_root}/src/cli/cli_tcp.hpp", + "${sl_openthread_root}/src/cli/cli_udp.cpp", + "${sl_openthread_root}/src/cli/cli_udp.hpp", + "${sl_openthread_root}/src/cli/x509_cert_key.hpp", + ] + } public_configs = [ ":openthread_efr32_config", diff --git a/third_party/silabs/gecko_sdk b/third_party/silabs/gecko_sdk index 310814a9016b60..799200bb678893 160000 --- a/third_party/silabs/gecko_sdk +++ b/third_party/silabs/gecko_sdk @@ -1 +1 @@ -Subproject commit 310814a9016b60a8012d50c62cc168a783ac102b +Subproject commit 799200bb6788939aa0fef97d7fc4ee9aca57148d diff --git a/third_party/silabs/matter_support b/third_party/silabs/matter_support index c9d65e0111fb77..16c1ed8eca039b 160000 --- a/third_party/silabs/matter_support +++ b/third_party/silabs/matter_support @@ -1 +1 @@ -Subproject commit c9d65e0111fb7708d41f86bc999bb22de43b5915 +Subproject commit 16c1ed8eca039bb9527421411bd605de8ce21442 diff --git a/zzz_generated/all-clusters-app/zap-generated/IMClusterCommandHandler.cpp b/zzz_generated/all-clusters-app/zap-generated/IMClusterCommandHandler.cpp index 411c19ff34c510..5d65d8f8775339 100644 --- a/zzz_generated/all-clusters-app/zap-generated/IMClusterCommandHandler.cpp +++ b/zzz_generated/all-clusters-app/zap-generated/IMClusterCommandHandler.cpp @@ -591,6 +591,15 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP } break; } + case Commands::FailRandomlyAtFault::Id: { + Commands::FailRandomlyAtFault::DecodableType commandData; + TLVError = DataModel::Decode(aDataTlv, commandData); + if (TLVError == CHIP_NO_ERROR) + { + wasHandled = emberAfFaultInjectionClusterFailRandomlyAtFaultCallback(apCommandObj, aCommandPath, commandData); + } + break; + } default: { // Unrecognized command ID, error status will apply. apCommandObj->AddStatus(aCommandPath, Protocols::InteractionModel::Status::UnsupportedCommand); diff --git a/zzz_generated/all-clusters-app/zap-generated/access.h b/zzz_generated/all-clusters-app/zap-generated/access.h index 5c5f1df7633748..5c6aba484890ac 100644 --- a/zzz_generated/all-clusters-app/zap-generated/access.h +++ b/zzz_generated/all-clusters-app/zap-generated/access.h @@ -431,6 +431,7 @@ 257, /* Cluster: Door Lock, Command: GetCredentialStatus, Privilege: administer */ \ 257, /* Cluster: Door Lock, Command: ClearCredential, Privilege: administer */ \ 4294048774, /* Cluster: Fault Injection, Command: FailAtFault, Privilege: manage */ \ + 4294048774, /* Cluster: Fault Injection, Command: FailRandomlyAtFault, Privilege: manage */ \ } // Parallel array data (cluster, *command*, privilege) for invoke command @@ -482,6 +483,7 @@ 36, /* Cluster: Door Lock, Command: GetCredentialStatus, Privilege: administer */ \ 38, /* Cluster: Door Lock, Command: ClearCredential, Privilege: administer */ \ 0, /* Cluster: Fault Injection, Command: FailAtFault, Privilege: manage */ \ + 1, /* Cluster: Fault Injection, Command: FailRandomlyAtFault, Privilege: manage */ \ } // Parallel array data (cluster, command, *privilege*) for invoke command @@ -533,6 +535,7 @@ kMatterAccessPrivilegeAdminister, /* Cluster: Door Lock, Command: GetCredentialStatus, Privilege: administer */ \ kMatterAccessPrivilegeAdminister, /* Cluster: Door Lock, Command: ClearCredential, Privilege: administer */ \ kMatterAccessPrivilegeManage, /* Cluster: Fault Injection, Command: FailAtFault, Privilege: manage */ \ + kMatterAccessPrivilegeManage, /* Cluster: Fault Injection, Command: FailRandomlyAtFault, Privilege: manage */ \ } //////////////////////////////////////////////////////////////////////////////// diff --git a/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h b/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h index 2ec296db48ed69..64446dd4aec170 100644 --- a/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h +++ b/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h @@ -1675,14 +1675,15 @@ /* Endpoint: 0, Cluster: Fault Injection (server) */\ /* AcceptedCommandList (index=76) */ \ 0x00000000 /* FailAtFault */, \ + 0x00000001 /* FailRandomlyAtFault */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Identify (server) */\ - /* AcceptedCommandList (index=78) */ \ + /* AcceptedCommandList (index=79) */ \ 0x00000000 /* Identify */, \ 0x00000040 /* TriggerEffect */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Groups (server) */\ - /* AcceptedCommandList (index=81) */ \ + /* AcceptedCommandList (index=82) */ \ 0x00000000 /* AddGroup */, \ 0x00000001 /* ViewGroup */, \ 0x00000002 /* GetGroupMembership */, \ @@ -1690,14 +1691,14 @@ 0x00000004 /* RemoveAllGroups */, \ 0x00000005 /* AddGroupIfIdentifying */, \ chip::kInvalidCommandId /* end of list */, \ - /* GeneratedCommandList (index=88)*/ \ + /* GeneratedCommandList (index=89)*/ \ 0x00000000 /* AddGroupResponse */, \ 0x00000001 /* ViewGroupResponse */, \ 0x00000002 /* GetGroupMembershipResponse */, \ 0x00000003 /* RemoveGroupResponse */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Scenes (server) */\ - /* AcceptedCommandList (index=93) */ \ + /* AcceptedCommandList (index=94) */ \ 0x00000000 /* AddScene */, \ 0x00000001 /* ViewScene */, \ 0x00000002 /* RemoveScene */, \ @@ -1706,7 +1707,7 @@ 0x00000005 /* RecallScene */, \ 0x00000006 /* GetSceneMembership */, \ chip::kInvalidCommandId /* end of list */, \ - /* GeneratedCommandList (index=101)*/ \ + /* GeneratedCommandList (index=102)*/ \ 0x00000000 /* AddSceneResponse */, \ 0x00000001 /* ViewSceneResponse */, \ 0x00000002 /* RemoveSceneResponse */, \ @@ -1715,7 +1716,7 @@ 0x00000006 /* GetSceneMembershipResponse */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: On/Off (server) */\ - /* AcceptedCommandList (index=108) */ \ + /* AcceptedCommandList (index=109) */ \ 0x00000000 /* Off */, \ 0x00000001 /* On */, \ 0x00000002 /* Toggle */, \ @@ -1724,7 +1725,7 @@ 0x00000042 /* OnWithTimedOff */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Level Control (server) */\ - /* AcceptedCommandList (index=115) */ \ + /* AcceptedCommandList (index=116) */ \ 0x00000000 /* MoveToLevel */, \ 0x00000001 /* Move */, \ 0x00000002 /* Step */, \ @@ -1735,11 +1736,11 @@ 0x00000007 /* StopWithOnOff */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Mode Select (server) */\ - /* AcceptedCommandList (index=124) */ \ + /* AcceptedCommandList (index=125) */ \ 0x00000000 /* ChangeToMode */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Door Lock (server) */\ - /* AcceptedCommandList (index=126) */ \ + /* AcceptedCommandList (index=127) */ \ 0x00000000 /* LockDoor */, \ 0x00000001 /* UnlockDoor */, \ 0x00000003 /* UnlockWithTimeout */, \ @@ -1755,7 +1756,7 @@ 0x00000024 /* GetCredentialStatus */, \ 0x00000026 /* ClearCredential */, \ chip::kInvalidCommandId /* end of list */, \ - /* GeneratedCommandList (index=141)*/ \ + /* GeneratedCommandList (index=142)*/ \ 0x0000000C /* GetWeekDayScheduleResponse */, \ 0x0000000F /* GetYearDayScheduleResponse */, \ 0x0000001C /* GetUserResponse */, \ @@ -1763,7 +1764,7 @@ 0x00000025 /* GetCredentialStatusResponse */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Window Covering (server) */\ - /* AcceptedCommandList (index=147) */ \ + /* AcceptedCommandList (index=148) */ \ 0x00000000 /* UpOrOpen */, \ 0x00000001 /* DownOrClose */, \ 0x00000002 /* StopMotion */, \ @@ -1773,16 +1774,16 @@ 0x00000008 /* GoToTiltPercentage */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Barrier Control (server) */\ - /* AcceptedCommandList (index=155) */ \ + /* AcceptedCommandList (index=156) */ \ 0x00000000 /* BarrierControlGoToPercent */, \ 0x00000001 /* BarrierControlStop */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Thermostat (server) */\ - /* AcceptedCommandList (index=158) */ \ + /* AcceptedCommandList (index=159) */ \ 0x00000000 /* SetpointRaiseLower */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Color Control (server) */\ - /* AcceptedCommandList (index=160) */ \ + /* AcceptedCommandList (index=161) */ \ 0x00000000 /* MoveToHue */, \ 0x00000001 /* MoveHue */, \ 0x00000002 /* StepHue */, \ @@ -1804,32 +1805,32 @@ 0x0000004C /* StepColorTemperature */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Target Navigator (server) */\ - /* AcceptedCommandList (index=180) */ \ + /* AcceptedCommandList (index=181) */ \ 0x00000000 /* NavigateTarget */, \ chip::kInvalidCommandId /* end of list */, \ - /* GeneratedCommandList (index=182)*/ \ + /* GeneratedCommandList (index=183)*/ \ 0x00000001 /* NavigateTargetResponse */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Media Input (server) */\ - /* AcceptedCommandList (index=184) */ \ + /* AcceptedCommandList (index=185) */ \ 0x00000000 /* SelectInput */, \ 0x00000001 /* ShowInputStatus */, \ 0x00000002 /* HideInputStatus */, \ 0x00000003 /* RenameInput */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Low Power (server) */\ - /* AcceptedCommandList (index=189) */ \ + /* AcceptedCommandList (index=190) */ \ 0x00000000 /* Sleep */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Keypad Input (server) */\ - /* AcceptedCommandList (index=191) */ \ + /* AcceptedCommandList (index=192) */ \ 0x00000000 /* SendKey */, \ chip::kInvalidCommandId /* end of list */, \ - /* GeneratedCommandList (index=193)*/ \ + /* GeneratedCommandList (index=194)*/ \ 0x00000001 /* SendKeyResponse */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Test Cluster (server) */\ - /* AcceptedCommandList (index=195) */ \ + /* AcceptedCommandList (index=196) */ \ 0x00000000 /* Test */, \ 0x00000001 /* TestNotHandled */, \ 0x00000002 /* TestSpecific */, \ @@ -1849,7 +1850,7 @@ 0x00000014 /* TestEmitTestEventRequest */, \ 0x00000015 /* TestEmitTestFabricScopedEventRequest */, \ chip::kInvalidCommandId /* end of list */, \ - /* GeneratedCommandList (index=214)*/ \ + /* GeneratedCommandList (index=215)*/ \ 0x00000000 /* TestSpecificResponse */, \ 0x00000001 /* TestAddArgumentsResponse */, \ 0x00000004 /* TestListInt8UReverseResponse */, \ @@ -1861,7 +1862,7 @@ 0x0000000B /* TestEmitTestFabricScopedEventResponse */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 2, Cluster: Groups (server) */\ - /* AcceptedCommandList (index=224) */ \ + /* AcceptedCommandList (index=225) */ \ 0x00000000 /* AddGroup */, \ 0x00000001 /* ViewGroup */, \ 0x00000002 /* GetGroupMembership */, \ @@ -1869,20 +1870,20 @@ 0x00000004 /* RemoveAllGroups */, \ 0x00000005 /* AddGroupIfIdentifying */, \ chip::kInvalidCommandId /* end of list */, \ - /* GeneratedCommandList (index=231)*/ \ + /* GeneratedCommandList (index=232)*/ \ 0x00000000 /* AddGroupResponse */, \ 0x00000001 /* ViewGroupResponse */, \ 0x00000002 /* GetGroupMembershipResponse */, \ 0x00000003 /* RemoveGroupResponse */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 2, Cluster: On/Off (server) */\ - /* AcceptedCommandList (index=236) */ \ + /* AcceptedCommandList (index=237) */ \ 0x00000000 /* Off */, \ 0x00000001 /* On */, \ 0x00000002 /* Toggle */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 65534, Cluster: Network Commissioning (server) */\ - /* AcceptedCommandList (index=240) */ \ + /* AcceptedCommandList (index=241) */ \ 0x00000000 /* ScanNetworks */, \ 0x00000002 /* AddOrUpdateWiFiNetwork */, \ 0x00000003 /* AddOrUpdateThreadNetwork */, \ @@ -1890,7 +1891,7 @@ 0x00000006 /* ConnectNetwork */, \ 0x00000008 /* ReorderNetwork */, \ chip::kInvalidCommandId /* end of list */, \ - /* GeneratedCommandList (index=247)*/ \ + /* GeneratedCommandList (index=248)*/ \ 0x00000001 /* ScanNetworksResponse */, \ 0x00000005 /* NetworkConfigResponse */, \ 0x00000007 /* ConnectNetworkResponse */, \ @@ -2220,7 +2221,7 @@ .clusterSize = 9, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ .functions = chipFuncArrayIdentifyServer, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 78 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 79 ) ,\ .generatedCommandList = nullptr ,\ },\ { \ @@ -2231,8 +2232,8 @@ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayGroupsServer, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 81 ) ,\ - .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 88 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 82 ) ,\ + .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 89 ) ,\ },\ { \ /* Endpoint: 1, Cluster: Scenes (server) */ \ @@ -2242,8 +2243,8 @@ .clusterSize = 12, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayScenesServer, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 93 ) ,\ - .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 101 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 94 ) ,\ + .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 102 ) ,\ },\ { \ /* Endpoint: 1, Cluster: On/Off (server) */ \ @@ -2253,7 +2254,7 @@ .clusterSize = 13, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayOnOffServer, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 108 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 109 ) ,\ .generatedCommandList = nullptr ,\ },\ { \ @@ -2275,7 +2276,7 @@ .clusterSize = 27, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayLevelControlServer, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 115 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 116 ) ,\ .generatedCommandList = nullptr ,\ },\ { \ @@ -2385,7 +2386,7 @@ .clusterSize = 45, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ .functions = chipFuncArrayModeSelectServer, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 124 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 125 ) ,\ .generatedCommandList = nullptr ,\ },\ { \ @@ -2396,8 +2397,8 @@ .clusterSize = 55, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ .functions = chipFuncArrayDoorLockServer, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 126 ) ,\ - .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 141 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 127 ) ,\ + .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 142 ) ,\ },\ { \ /* Endpoint: 1, Cluster: Window Covering (server) */ \ @@ -2407,7 +2408,7 @@ .clusterSize = 43, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ .functions = chipFuncArrayWindowCoveringServer, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 147 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 148 ) ,\ .generatedCommandList = nullptr ,\ },\ { \ @@ -2418,7 +2419,7 @@ .clusterSize = 11, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 155 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 156 ) ,\ .generatedCommandList = nullptr ,\ },\ { \ @@ -2440,7 +2441,7 @@ .clusterSize = 31, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ .functions = chipFuncArrayThermostatServer, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 158 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 159 ) ,\ .generatedCommandList = nullptr ,\ },\ { \ @@ -2473,7 +2474,7 @@ .clusterSize = 345, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayColorControlServer, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 160 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 161 ) ,\ .generatedCommandList = nullptr ,\ },\ { \ @@ -2572,8 +2573,8 @@ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 180 ) ,\ - .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 182 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 181 ) ,\ + .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 183 ) ,\ },\ { \ /* Endpoint: 1, Cluster: Media Playback (server) */ \ @@ -2594,7 +2595,7 @@ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 184 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 185 ) ,\ .generatedCommandList = nullptr ,\ },\ { \ @@ -2605,7 +2606,7 @@ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 189 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 190 ) ,\ .generatedCommandList = nullptr ,\ },\ { \ @@ -2616,8 +2617,8 @@ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 191 ) ,\ - .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 193 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 192 ) ,\ + .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 194 ) ,\ },\ { \ /* Endpoint: 1, Cluster: Content Launcher (server) */ \ @@ -2693,8 +2694,8 @@ .clusterSize = 2289, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 195 ) ,\ - .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 214 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 196 ) ,\ + .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 215 ) ,\ },\ { \ /* Endpoint: 2, Cluster: Groups (server) */ \ @@ -2704,8 +2705,8 @@ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayGroupsServer, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 224 ) ,\ - .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 231 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 225 ) ,\ + .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 232 ) ,\ },\ { \ /* Endpoint: 2, Cluster: On/Off (server) */ \ @@ -2715,7 +2716,7 @@ .clusterSize = 13, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayOnOffServer, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 236 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 237 ) ,\ .generatedCommandList = nullptr ,\ },\ { \ @@ -2759,8 +2760,8 @@ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 240 ) ,\ - .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 247 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 241 ) ,\ + .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 248 ) ,\ },\ } diff --git a/zzz_generated/app-common/app-common/zap-generated/callback.h b/zzz_generated/app-common/app-common/zap-generated/callback.h index 26c16148347095..8a674cd17d6c30 100644 --- a/zzz_generated/app-common/app-common/zap-generated/callback.h +++ b/zzz_generated/app-common/app-common/zap-generated/callback.h @@ -8919,6 +8919,12 @@ bool emberAfTestClusterClusterTestEmitTestFabricScopedEventRequestCallback( bool emberAfFaultInjectionClusterFailAtFaultCallback( chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath, const chip::app::Clusters::FaultInjection::Commands::FailAtFault::DecodableType & commandData); +/** + * @brief Fault Injection Cluster FailRandomlyAtFault Command callback (from client) + */ +bool emberAfFaultInjectionClusterFailRandomlyAtFaultCallback( + chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath, + const chip::app::Clusters::FaultInjection::Commands::FailRandomlyAtFault::DecodableType & commandData); /** @brief Add To Current App Tasks * diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp index ec0eb5147c7f97..1c0bf9098cda3e 100644 --- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp +++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp @@ -20939,6 +20939,51 @@ CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader) return CHIP_NO_ERROR; } } // namespace FailAtFault. +namespace FailRandomlyAtFault { +CHIP_ERROR Type::Encode(TLV::TLVWriter & writer, TLV::Tag tag) const +{ + TLV::TLVType outer; + ReturnErrorOnFailure(writer.StartContainer(tag, TLV::kTLVType_Structure, outer)); + ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kType)), type)); + ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kId)), id)); + ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kPercentage)), percentage)); + ReturnErrorOnFailure(writer.EndContainer(outer)); + return CHIP_NO_ERROR; +} + +CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader) +{ + CHIP_ERROR err = CHIP_NO_ERROR; + TLV::TLVType outer; + VerifyOrReturnError(TLV::kTLVType_Structure == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE); + ReturnErrorOnFailure(reader.EnterContainer(outer)); + while ((err = reader.Next()) == CHIP_NO_ERROR) + { + if (!TLV::IsContextTag(reader.GetTag())) + { + continue; + } + switch (TLV::TagNumFromTag(reader.GetTag())) + { + case to_underlying(Fields::kType): + ReturnErrorOnFailure(DataModel::Decode(reader, type)); + break; + case to_underlying(Fields::kId): + ReturnErrorOnFailure(DataModel::Decode(reader, id)); + break; + case to_underlying(Fields::kPercentage): + ReturnErrorOnFailure(DataModel::Decode(reader, percentage)); + break; + default: + break; + } + } + + VerifyOrReturnError(err == CHIP_END_OF_TLV, err); + ReturnErrorOnFailure(reader.ExitContainer(outer)); + return CHIP_NO_ERROR; +} +} // namespace FailRandomlyAtFault. } // namespace Commands namespace Attributes { diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h index 17019d9d8b12a5..5500c0d3c8ce28 100644 --- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h +++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h @@ -28095,6 +28095,11 @@ struct Type; struct DecodableType; } // namespace FailAtFault +namespace FailRandomlyAtFault { +struct Type; +struct DecodableType; +} // namespace FailRandomlyAtFault + } // namespace Commands namespace Commands { @@ -28142,6 +28147,44 @@ struct DecodableType CHIP_ERROR Decode(TLV::TLVReader & reader); }; }; // namespace FailAtFault +namespace FailRandomlyAtFault { +enum class Fields +{ + kType = 0, + kId = 1, + kPercentage = 2, +}; + +struct Type +{ +public: + // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand + static constexpr CommandId GetCommandId() { return Commands::FailRandomlyAtFault::Id; } + static constexpr ClusterId GetClusterId() { return Clusters::FaultInjection::Id; } + + FaultType type = static_cast(0); + uint32_t id = static_cast(0); + uint8_t percentage = static_cast(0); + + CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const; + + using ResponseType = DataModel::NullObjectType; + + static constexpr bool MustUseTimedInvoke() { return false; } +}; + +struct DecodableType +{ +public: + static constexpr CommandId GetCommandId() { return Commands::FailRandomlyAtFault::Id; } + static constexpr ClusterId GetClusterId() { return Clusters::FaultInjection::Id; } + + FaultType type = static_cast(0); + uint32_t id = static_cast(0); + uint8_t percentage = static_cast(0); + CHIP_ERROR Decode(TLV::TLVReader & reader); +}; +}; // namespace FailRandomlyAtFault } // namespace Commands namespace Attributes { diff --git a/zzz_generated/app-common/app-common/zap-generated/command-id.h b/zzz_generated/app-common/app-common/zap-generated/command-id.h index 95b03a5e717fa4..9dea02553be7cb 100644 --- a/zzz_generated/app-common/app-common/zap-generated/command-id.h +++ b/zzz_generated/app-common/app-common/zap-generated/command-id.h @@ -355,3 +355,4 @@ // Commands for cluster: Fault Injection #define ZCL_FAIL_AT_FAULT_COMMAND_ID (0x00) +#define ZCL_FAIL_RANDOMLY_AT_FAULT_COMMAND_ID (0x01) diff --git a/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h b/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h index cf911dedc35e02..41c5ed62ddb1f0 100644 --- a/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h +++ b/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h @@ -1240,6 +1240,10 @@ namespace FailAtFault { static constexpr CommandId Id = 0x00000000; } // namespace FailAtFault +namespace FailRandomlyAtFault { +static constexpr CommandId Id = 0x00000001; +} // namespace FailRandomlyAtFault + } // namespace Commands } // namespace FaultInjection diff --git a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h index 5c25721dfc3bdd..897d45dff7d486 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h @@ -8149,6 +8149,7 @@ class TestClusterTestEmitTestFabricScopedEventRequest : public ClusterCommand |------------------------------------------------------------------------------| | Commands: | | | * FailAtFault | 0x00 | +| * FailRandomlyAtFault | 0x01 | |------------------------------------------------------------------------------| | Attributes: | | | * GeneratedCommandList | 0xFFF8 | @@ -8194,6 +8195,39 @@ class FaultInjectionFailAtFault : public ClusterCommand chip::app::Clusters::FaultInjection::Commands::FailAtFault::Type mRequest; }; +/* + * Command FailRandomlyAtFault + */ +class FaultInjectionFailRandomlyAtFault : public ClusterCommand +{ +public: + FaultInjectionFailRandomlyAtFault(CredentialIssuerCommands * credsIssuerConfig) : + ClusterCommand("fail-randomly-at-fault", credsIssuerConfig) + { + AddArgument("Type", 0, UINT8_MAX, &mRequest.type); + AddArgument("Id", 0, UINT32_MAX, &mRequest.id); + AddArgument("Percentage", 0, UINT8_MAX, &mRequest.percentage); + ClusterCommand::AddArguments(); + } + + CHIP_ERROR SendCommand(chip::DeviceProxy * device, std::vector endpointIds) override + { + ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC06) command (0x00000001) on endpoint %u", endpointIds.at(0)); + + return ClusterCommand::SendCommand(device, endpointIds.at(0), 0xFFF1FC06, 0x00000001, mRequest); + } + + CHIP_ERROR SendGroupCommand(chip::GroupId groupId, chip::FabricIndex fabricIndex) override + { + ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC06) command (0x00000001) on Group %u", groupId); + + return ClusterCommand::SendGroupCommand(groupId, fabricIndex, 0xFFF1FC06, 0x00000001, mRequest); + } + +private: + chip::app::Clusters::FaultInjection::Commands::FailRandomlyAtFault::Type mRequest; +}; + /*----------------------------------------------------------------------------*\ | Register all Clusters commands | \*----------------------------------------------------------------------------*/ @@ -13266,8 +13300,9 @@ void registerClusterFaultInjection(Commands & commands, CredentialIssuerCommands // // Commands // - make_unique(Id, credsIssuerConfig), // - make_unique(credsIssuerConfig), // + make_unique(Id, credsIssuerConfig), // + make_unique(credsIssuerConfig), // + make_unique(credsIssuerConfig), // // // Attributes // diff --git a/zzz_generated/chip-tool/zap-generated/test/Commands.h b/zzz_generated/chip-tool/zap-generated/test/Commands.h index 93aea4dc646cd1..1179318cf4ecb9 100644 --- a/zzz_generated/chip-tool/zap-generated/test/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/test/Commands.h @@ -494,7 +494,6 @@ class ManualTestList : public Command printf("Test_TC_OCC_2_3\n"); printf("Test_TC_OCC_2_4\n"); printf("Test_TC_OCC_3_1\n"); - printf("Test_TC_OCC_3_2\n"); printf("Test_TC_PRS_3_1\n"); printf("Test_TC_PS_2_2\n"); printf("Test_TC_PS_3_1\n"); @@ -2538,6 +2537,11 @@ class Test_TC_ACT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "list", "list")); VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65532UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; case 4: @@ -2546,8 +2550,6 @@ class Test_TC_ACT_1_1Suite : public TestCommand chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "list", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); VerifyOrReturn(CheckConstraintContains("value", value, 2UL)); } break; @@ -2781,7 +2783,7 @@ class Test_TC_BIND_1_1Suite : public TestCommand class Test_TC_CC_1_1Suite : public TestCommand { public: - Test_TC_CC_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_1_1", 42, credsIssuerConfig) + Test_TC_CC_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_1_1", 43, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -2832,12 +2834,21 @@ class Test_TC_CC_1_1Suite : public TestCommand { uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("featureMap", value, 0UL)); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0UL)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 31UL)); } break; case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 1UL)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 31UL)); + } + break; + case 4: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -2854,7 +2865,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 4: + case 5: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -2863,7 +2874,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); } break; - case 5: + case 6: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -2872,7 +2883,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); } break; - case 6: + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -2881,7 +2892,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 2UL)); } break; - case 7: + case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -2890,7 +2901,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); } break; - case 8: + case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -2899,7 +2910,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 4UL)); } break; - case 9: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -2908,7 +2919,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 5UL)); } break; - case 10: + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -2917,7 +2928,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 6UL)); } break; - case 11: + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -2926,7 +2937,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 7UL)); } break; - case 12: + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -2935,7 +2946,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 16384UL)); } break; - case 13: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -2944,7 +2955,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 16386UL)); } break; - case 14: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -2953,7 +2964,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 16387UL)); } break; - case 15: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -2962,7 +2973,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 16388UL)); } break; - case 16: + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -2971,7 +2982,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 16389UL)); } break; - case 17: + case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -2980,7 +2991,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 16390UL)); } break; - case 18: + case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -2989,7 +3000,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 16395UL)); } break; - case 19: + case 20: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -2998,7 +3009,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 16396UL)); } break; - case 20: + case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -3007,7 +3018,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 16397UL)); } break; - case 21: + case 22: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -3016,7 +3027,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 16400UL)); } break; - case 22: + case 23: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -3025,7 +3036,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); } break; - case 23: + case 24: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -3034,7 +3045,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); } break; - case 24: + case 25: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -3043,7 +3054,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 2UL)); } break; - case 25: + case 26: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -3052,7 +3063,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); } break; - case 26: + case 27: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -3061,7 +3072,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 4UL)); } break; - case 27: + case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -3070,7 +3081,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 5UL)); } break; - case 28: + case 29: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -3079,7 +3090,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 6UL)); } break; - case 29: + case 30: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -3088,7 +3099,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 7UL)); } break; - case 30: + case 31: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -3097,7 +3108,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 8UL)); } break; - case 31: + case 32: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -3106,7 +3117,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 9UL)); } break; - case 32: + case 33: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -3115,7 +3126,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 10UL)); } break; - case 33: + case 34: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -3124,7 +3135,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 64UL)); } break; - case 34: + case 35: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -3133,7 +3144,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65UL)); } break; - case 35: + case 36: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -3142,7 +3153,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 66UL)); } break; - case 36: + case 37: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -3151,7 +3162,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 67UL)); } break; - case 37: + case 38: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -3160,7 +3171,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 68UL)); } break; - case 38: + case 39: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -3169,7 +3180,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 71UL)); } break; - case 39: + case 40: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -3178,7 +3189,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 75UL)); } break; - case 40: + case 41: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -3187,7 +3198,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 76UL)); } break; - case 41: + case 42: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -3228,240 +3239,247 @@ class Test_TC_CC_1_1Suite : public TestCommand } case 2: { LogStep(2, "Read the global attribute: FeatureMap"); - VerifyOrDo(!ShouldSkip("( CC.S.F00 || CC.S.F01 || CC.S.F02 || CC.S.F03 )"), + VerifyOrDo(!ShouldSkip("( !CC.S.F00 && !CC.S.F01 && !CC.S.F02 && !CC.S.F03 )"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Read the global attribute: AttributeList"); + LogStep(3, "Read the global attribute: FeatureMap"); + VerifyOrDo(!ShouldSkip("( CC.S.F00 || CC.S.F01 || CC.S.F02 || CC.S.F03 )"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::FeatureMap::Id, true, + chip::NullOptional); + } + case 4: { + LogStep(4, "Read the global attribute: AttributeList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 4: { - LogStep(4, "Read the optional attribute(CurrentHue) in AttributeList"); + case 5: { + LogStep(5, "Read the optional attribute(CurrentHue) in AttributeList"); VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 5: { - LogStep(5, "Read the optional attribute(CurrentSaturation) in AttributeList"); + case 6: { + LogStep(6, "Read the optional attribute(CurrentSaturation) in AttributeList"); VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 6: { - LogStep(6, "Read the optional attribute(RemainingTime) in AttributeList"); + case 7: { + LogStep(7, "Read the optional attribute(RemainingTime) in AttributeList"); VerifyOrDo(!ShouldSkip("CC.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 7: { - LogStep(7, "Read the optional attribute(CurrentX) in AttributeList"); + case 8: { + LogStep(8, "Read the optional attribute(CurrentX) in AttributeList"); VerifyOrDo(!ShouldSkip("CC.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 8: { - LogStep(8, "Read the optional attribute(CurrentY) in AttributeList"); + case 9: { + LogStep(9, "Read the optional attribute(CurrentY) in AttributeList"); VerifyOrDo(!ShouldSkip("CC.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 9: { - LogStep(9, "Read the optional attribute(DriftCompensation) in AttributeList"); + case 10: { + LogStep(10, "Read the optional attribute(DriftCompensation) in AttributeList"); VerifyOrDo(!ShouldSkip("CC.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 10: { - LogStep(10, "Read the optional attribute(CompensationText) in AttributeList"); + case 11: { + LogStep(11, "Read the optional attribute(CompensationText) in AttributeList"); VerifyOrDo(!ShouldSkip("CC.S.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 11: { - LogStep(11, "Read the optional attribute(ColorTemperatureMireds) in AttributeList"); + case 12: { + LogStep(12, "Read the optional attribute(ColorTemperatureMireds) in AttributeList"); VerifyOrDo(!ShouldSkip("CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 12: { - LogStep(12, "Read the optional attribute(EnhancedCurrentHue) in AttributeList"); + case 13: { + LogStep(13, "Read the optional attribute(EnhancedCurrentHue) in AttributeList"); VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 13: { - LogStep(13, "Read the optional attribute(ColorLoopActive) in AttributeList"); + case 14: { + LogStep(14, "Read the optional attribute(ColorLoopActive) in AttributeList"); VerifyOrDo(!ShouldSkip("CC.S.A4002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 14: { - LogStep(14, "Read the optional attribute(ColorLoopDirection) in AttributeList"); + case 15: { + LogStep(15, "Read the optional attribute(ColorLoopDirection) in AttributeList"); VerifyOrDo(!ShouldSkip("CC.S.A4003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 15: { - LogStep(15, "Read the optional attribute(ColorLoopTime) in AttributeList"); + case 16: { + LogStep(16, "Read the optional attribute(ColorLoopTime) in AttributeList"); VerifyOrDo(!ShouldSkip("CC.S.A4004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 16: { - LogStep(16, "Read the optional attribute(ColorLoopStartEnhancedHue) in AttributeList"); + case 17: { + LogStep(17, "Read the optional attribute(ColorLoopStartEnhancedHue) in AttributeList"); VerifyOrDo(!ShouldSkip("CC.S.A4005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 17: { - LogStep(17, "Read the optional attribute(ColorLoopStoredEnhancedHue) in AttributeList"); + case 18: { + LogStep(18, "Read the optional attribute(ColorLoopStoredEnhancedHue) in AttributeList"); VerifyOrDo(!ShouldSkip("CC.S.A4006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 18: { - LogStep(18, "Read the optional attribute(ColorTempPhysicalMinMireds) in AttributeList"); + case 19: { + LogStep(19, "Read the optional attribute(ColorTempPhysicalMinMireds) in AttributeList"); VerifyOrDo(!ShouldSkip("CC.S.A400b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 19: { - LogStep(19, "Read the optional attribute(ColorTempPhysicalMaxMireds) in AttributeList"); + case 20: { + LogStep(20, "Read the optional attribute(ColorTempPhysicalMaxMireds) in AttributeList"); VerifyOrDo(!ShouldSkip("CC.S.A400c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 20: { - LogStep(20, "Read the optional attribute(CoupleColorTempToLevelMinMireds) in AttributeList"); + case 21: { + LogStep(21, "Read the optional attribute(CoupleColorTempToLevelMinMireds) in AttributeList"); VerifyOrDo(!ShouldSkip("CC.S.A400d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 21: { - LogStep(21, "Read the optional attribute(StartUpColorTemperatureMireds) in AttributeList"); + case 22: { + LogStep(22, "Read the optional attribute(StartUpColorTemperatureMireds) in AttributeList"); VerifyOrDo(!ShouldSkip("CC.S.A4010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 22: { - LogStep(22, "Read the optional command(MoveToHue) in AcceptedCommandList"); + case 23: { + LogStep(23, "Read the optional command(MoveToHue) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("CC.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 23: { - LogStep(23, "Read the optional command(MoveHue) in AcceptedCommandList"); + case 24: { + LogStep(24, "Read the optional command(MoveHue) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("CC.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 24: { - LogStep(24, "Read the optional command(StepHue) in AcceptedCommandList"); + case 25: { + LogStep(25, "Read the optional command(StepHue) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("CC.S.C02.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 25: { - LogStep(25, "Read the optional command(MoveToSaturation) in AcceptedCommandList"); + case 26: { + LogStep(26, "Read the optional command(MoveToSaturation) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("CC.S.C03.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 26: { - LogStep(26, "Read the optional command(MoveSaturation) in AcceptedCommandList"); + case 27: { + LogStep(27, "Read the optional command(MoveSaturation) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("CC.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 27: { - LogStep(27, "Read the optional command(StepSaturation) in AcceptedCommandList"); + case 28: { + LogStep(28, "Read the optional command(StepSaturation) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("CC.S.C05.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 28: { - LogStep(28, "Read the optional command(MoveToHueAndSaturation) in AcceptedCommandList"); + case 29: { + LogStep(29, "Read the optional command(MoveToHueAndSaturation) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("CC.S.C06.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 29: { - LogStep(29, "Read the optional command(MoveToColor) in AcceptedCommandList"); + case 30: { + LogStep(30, "Read the optional command(MoveToColor) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("CC.S.C07.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 30: { - LogStep(30, "Read the optional command(MoveColor) in AcceptedCommandList"); + case 31: { + LogStep(31, "Read the optional command(MoveColor) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("CC.S.C08.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 31: { - LogStep(31, "Read the optional command(StepColor) in AcceptedCommandList"); + case 32: { + LogStep(32, "Read the optional command(StepColor) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("CC.S.C09.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 32: { - LogStep(32, "Read the optional command(MoveToColorTemperature) in AcceptedCommandList"); + case 33: { + LogStep(33, "Read the optional command(MoveToColorTemperature) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("CC.S.C0a.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 33: { - LogStep(33, "Read the optional command(EnhancedMoveToHue) in AcceptedCommandList"); + case 34: { + LogStep(34, "Read the optional command(EnhancedMoveToHue) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("CC.S.C40.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 34: { - LogStep(34, "Read the optional command(EnhancedMoveHue) in AcceptedCommandList"); + case 35: { + LogStep(35, "Read the optional command(EnhancedMoveHue) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("CC.S.C41.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 35: { - LogStep(35, "Read the optional command(EnhancedStepHue) in AcceptedCommandList"); + case 36: { + LogStep(36, "Read the optional command(EnhancedStepHue) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("CC.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 36: { - LogStep(36, "Read the optional command(EnhancedMoveToHueAndSaturation) in AcceptedCommandList"); + case 37: { + LogStep(37, "Read the optional command(EnhancedMoveToHueAndSaturation) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("CC.S.C43.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 37: { - LogStep(37, "Read the optional command(ColorLoopSet) in AcceptedCommandList"); + case 38: { + LogStep(38, "Read the optional command(ColorLoopSet) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("CC.S.C44.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 38: { - LogStep(38, "Read the optional command(StopMoveStep) in AcceptedCommandList"); + case 39: { + LogStep(39, "Read the optional command(StopMoveStep) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("CC.S.C47.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 39: { - LogStep(39, "Read the optional command(MoveColorTemperature) in AcceptedCommandList"); + case 40: { + LogStep(40, "Read the optional command(MoveColorTemperature) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("CC.S.C4b.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 40: { - LogStep(40, "Read the optional command(StepColorTemperature) in AcceptedCommandList"); + case 41: { + LogStep(41, "Read the optional command(StepColorTemperature) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("CC.S.C4c.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 41: { - LogStep(41, "Read the global attribute: GeneratedCommandList"); + case 42: { + LogStep(42, "Read the global attribute: GeneratedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); } @@ -15458,6 +15476,7 @@ class Test_TC_DGGEN_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65528UL)); VerifyOrReturn(CheckConstraintContains("value", value, 65529UL)); VerifyOrReturn(CheckConstraintContains("value", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65532UL)); VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; @@ -17237,7 +17256,7 @@ class Test_TC_ILL_2_2Suite : public TestCommand class Test_TC_LVL_1_1Suite : public TestCommand { public: - Test_TC_LVL_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LVL_1_1", 15, credsIssuerConfig) + Test_TC_LVL_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LVL_1_1", 16, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -17289,11 +17308,20 @@ class Test_TC_LVL_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0UL)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 1UL)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 7UL)); } break; case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("featureMap", value, 0UL)); + VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); + } + break; + case 4: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -17302,9 +17330,14 @@ class Test_TC_LVL_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); VerifyOrReturn(CheckConstraintContains("value", value, 15UL)); VerifyOrReturn(CheckConstraintContains("value", value, 17UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65532UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 4: + case 5: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -17314,7 +17347,7 @@ class Test_TC_LVL_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 16384UL)); } break; - case 5: + case 6: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -17325,7 +17358,7 @@ class Test_TC_LVL_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 6UL)); } break; - case 6: + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -17334,7 +17367,7 @@ class Test_TC_LVL_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 2UL)); } break; - case 7: + case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -17343,7 +17376,7 @@ class Test_TC_LVL_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); } break; - case 8: + case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -17352,7 +17385,7 @@ class Test_TC_LVL_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 16UL)); } break; - case 9: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -17361,7 +17394,7 @@ class Test_TC_LVL_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 18UL)); } break; - case 10: + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -17370,7 +17403,7 @@ class Test_TC_LVL_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 19UL)); } break; - case 11: + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -17379,7 +17412,7 @@ class Test_TC_LVL_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 20UL)); } break; - case 12: + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -17395,7 +17428,7 @@ class Test_TC_LVL_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 7UL)); } break; - case 13: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -17404,7 +17437,7 @@ class Test_TC_LVL_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 8UL)); } break; - case 14: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -17450,71 +17483,77 @@ class Test_TC_LVL_1_1Suite : public TestCommand chip::NullOptional); } case 3: { - LogStep(3, "Read the global attribute: AttributeList"); + LogStep(3, "Read the global attribute: FeatureMap"); + VerifyOrDo(!ShouldSkip(" !LVL.S.F00 && !LVL.S.F01 && !LVL.S.F02 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::FeatureMap::Id, true, + chip::NullOptional); + } + case 4: { + LogStep(4, "Read the global attribute: AttributeList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 4: { - LogStep(4, "Read the optional attribute(StartUpCurrentLevel and RemainingTime) in AttributeList"); + case 5: { + LogStep(5, "Read the optional attribute(StartUpCurrentLevel and RemainingTime) in AttributeList"); VerifyOrDo(!ShouldSkip("LVL.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 5: { - LogStep(5, "Read the optional attribute(CurrentFrequency, MinFrequency and MinFrequency) in AttributeList"); + case 6: { + LogStep(6, "Read the optional attribute(CurrentFrequency, MinFrequency and MinFrequency) in AttributeList"); VerifyOrDo(!ShouldSkip("LVL.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 6: { - LogStep(6, "Read the optional attribute(MinLevel) in AttributeList"); + case 7: { + LogStep(7, "Read the optional attribute(MinLevel) in AttributeList"); VerifyOrDo(!ShouldSkip("LVL.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 7: { - LogStep(7, "Read the optional attribute(MaxLevel) in AttributeList"); + case 8: { + LogStep(8, "Read the optional attribute(MaxLevel) in AttributeList"); VerifyOrDo(!ShouldSkip("LVL.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 8: { - LogStep(8, "Read the optional attribute(OnOffTransitionTime) in AttributeList"); + case 9: { + LogStep(9, "Read the optional attribute(OnOffTransitionTime) in AttributeList"); VerifyOrDo(!ShouldSkip("LVL.S.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 9: { - LogStep(9, "Read the optional attribute(OnTransitionTime) in AttributeList"); + case 10: { + LogStep(10, "Read the optional attribute(OnTransitionTime) in AttributeList"); VerifyOrDo(!ShouldSkip("LVL.S.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 10: { - LogStep(10, "Read the optional attribute(OffTransitionTime) in AttributeList"); + case 11: { + LogStep(11, "Read the optional attribute(OffTransitionTime) in AttributeList"); VerifyOrDo(!ShouldSkip("LVL.S.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 11: { - LogStep(11, "Read the optional attribute(DefaultMoveRate) in AttributeList"); + case 12: { + LogStep(12, "Read the optional attribute(DefaultMoveRate) in AttributeList"); VerifyOrDo(!ShouldSkip("LVL.S.A0014"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 12: { - LogStep(12, "Read the global attribute: AcceptedCommandList"); + case 13: { + LogStep(13, "Read the global attribute: AcceptedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 13: { - LogStep(13, "Read the Feature-dependent(LVL.S.F02) attribute in AcceptedCommandList"); + case 14: { + LogStep(14, "Read the Feature-dependent(LVL.S.F02) attribute in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("LVL.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 14: { - LogStep(14, "Read the global attribute: GeneratedCommandList"); + case 15: { + LogStep(15, "Read the global attribute: GeneratedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); } @@ -18312,7 +18351,7 @@ class Test_TC_LVL_2_2Suite : public TestCommand class Test_TC_LVL_3_1Suite : public TestCommand { public: - Test_TC_LVL_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LVL_3_1", 47, credsIssuerConfig) + Test_TC_LVL_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LVL_3_1", 46, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -18370,6 +18409,9 @@ class Test_TC_LVL_3_1Suite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { bool value; @@ -18377,7 +18419,7 @@ class Test_TC_LVL_3_1Suite : public TestCommand VerifyOrReturn(CheckValue("onOff", value, 1)); } break; - case 7: + case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -18386,13 +18428,13 @@ class Test_TC_LVL_3_1Suite : public TestCommand VerifyOrReturn(CheckValue("currentLevel.Value()", value.Value(), 50U)); } break; - case 8: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 10: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -18401,14 +18443,14 @@ class Test_TC_LVL_3_1Suite : public TestCommand VerifyOrReturn(CheckValue("currentLevel.Value()", value.Value(), 50U)); } break; - case 11: + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 12: + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 13: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -18417,11 +18459,11 @@ class Test_TC_LVL_3_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 115U)); } break; - case 14: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 15: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -18430,11 +18472,11 @@ class Test_TC_LVL_3_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 173U)); } break; - case 16: + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 17: + case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -18443,11 +18485,11 @@ class Test_TC_LVL_3_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 200U)); } break; - case 18: + case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 19: + case 20: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -18456,7 +18498,7 @@ class Test_TC_LVL_3_1Suite : public TestCommand VerifyOrReturn(CheckValue("currentLevel.Value()", value.Value(), 200U)); } break; - case 20: + case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -18465,10 +18507,10 @@ class Test_TC_LVL_3_1Suite : public TestCommand VerifyOrReturn(CheckValue("currentLevel.Value()", value.Value(), 200U)); } break; - case 21: + case 22: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 22: + case 23: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -18476,13 +18518,13 @@ class Test_TC_LVL_3_1Suite : public TestCommand VerifyOrReturn(CheckValue("options", value, 0U)); } break; - case 23: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; case 24: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 25: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 26: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -18491,13 +18533,13 @@ class Test_TC_LVL_3_1Suite : public TestCommand VerifyOrReturn(CheckValue("currentLevel.Value()", value.Value(), 100U)); } break; - case 26: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; case 27: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 28: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 29: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -18506,10 +18548,10 @@ class Test_TC_LVL_3_1Suite : public TestCommand VerifyOrReturn(CheckValue("currentLevel.Value()", value.Value(), 100U)); } break; - case 29: + case 30: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 30: + case 31: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -18518,10 +18560,10 @@ class Test_TC_LVL_3_1Suite : public TestCommand VerifyOrReturn(CheckValue("currentLevel.Value()", value.Value(), 100U)); } break; - case 31: + case 32: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 32: + case 33: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -18530,10 +18572,10 @@ class Test_TC_LVL_3_1Suite : public TestCommand VerifyOrReturn(CheckValue("currentLevel.Value()", value.Value(), 160U)); } break; - case 33: + case 34: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 34: + case 35: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -18541,13 +18583,13 @@ class Test_TC_LVL_3_1Suite : public TestCommand VerifyOrReturn(CheckValue("options", value, 1U)); } break; - case 35: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; case 36: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 37: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 38: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -18556,13 +18598,13 @@ class Test_TC_LVL_3_1Suite : public TestCommand VerifyOrReturn(CheckValue("currentLevel.Value()", value.Value(), 100U)); } break; - case 38: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; case 39: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 40: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 41: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -18571,10 +18613,10 @@ class Test_TC_LVL_3_1Suite : public TestCommand VerifyOrReturn(CheckValue("currentLevel.Value()", value.Value(), 120U)); } break; - case 41: + case 42: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 42: + case 43: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -18583,10 +18625,10 @@ class Test_TC_LVL_3_1Suite : public TestCommand VerifyOrReturn(CheckValue("currentLevel.Value()", value.Value(), 120U)); } break; - case 43: + case 44: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 44: + case 45: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -18595,17 +18637,6 @@ class Test_TC_LVL_3_1Suite : public TestCommand VerifyOrReturn(CheckValue("currentLevel.Value()", value.Value(), 160U)); } break; - case 45: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 46: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - bool value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("onOff", value, 0)); - } - break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -18643,7 +18674,16 @@ class Test_TC_LVL_3_1Suite : public TestCommand return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "TH writes 0 to the Options attribute"); + LogStep(3, "Precondition: write default value of OnOffTransitionTime attribute"); + VerifyOrDo(!ShouldSkip("LVL.S.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + uint16_t value; + value = 0U; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, + LevelControl::Attributes::OnOffTransitionTime::Id, value, chip::NullOptional, chip::NullOptional); + } + case 4: { + LogStep(4, "TH writes 0 to the Options attribute"); VerifyOrDo(!ShouldSkip("LVL.S.A000f"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; uint8_t value; @@ -18651,8 +18691,8 @@ class Test_TC_LVL_3_1Suite : public TestCommand return WriteAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::Options::Id, value, chip::NullOptional, chip::NullOptional); } - case 4: { - LogStep(4, "TH sends Off command to DUT"); + case 5: { + LogStep(5, "TH sends Off command to DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C04.Rsp && OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::OnOff::Commands::Off::Type value; @@ -18660,8 +18700,8 @@ class Test_TC_LVL_3_1Suite : public TestCommand ); } - case 5: { - LogStep(5, "TH sends a MoveToLevelWithOnOff command to DUT, with Level =50 and TransitionTime =0 (immediate)"); + case 6: { + LogStep(6, "TH sends a MoveToLevelWithOnOff command to DUT, with Level =50 and TransitionTime =0 (immediate)"); VerifyOrDo(!ShouldSkip("LVL.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LevelControl::Commands::MoveToLevelWithOnOff::Type value; @@ -18675,19 +18715,19 @@ class Test_TC_LVL_3_1Suite : public TestCommand ); } - case 6: { - LogStep(6, "TH reads OnOff attribute (On/Off cluster) from DUT"); + case 7: { + LogStep(7, "TH reads OnOff attribute (On/Off cluster) from DUT"); VerifyOrDo(!ShouldSkip("OO.S.A0000 && LVL.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } - case 7: { - LogStep(7, "TH reads CurrentLevel attribute from DUT"); + case 8: { + LogStep(8, "TH reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C04.Rsp && LVL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 8: { - LogStep(8, "TH sends On command to DUT"); + case 9: { + LogStep(9, "TH sends On command to DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C04.Rsp && OO.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::OnOff::Commands::On::Type value; @@ -18695,8 +18735,8 @@ class Test_TC_LVL_3_1Suite : public TestCommand ); } - case 9: { - LogStep(9, "TH sends a MoveToLevel command to DUT, with Level =50 and TransitionTime =0 (immediate)"); + case 10: { + LogStep(10, "TH sends a MoveToLevel command to DUT, with Level =50 and TransitionTime =0 (immediate)"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LevelControl::Commands::MoveToLevel::Type value; @@ -18710,14 +18750,14 @@ class Test_TC_LVL_3_1Suite : public TestCommand ); } - case 10: { - LogStep(10, "TH reads CurrentLevel attribute from DUT"); + case 11: { + LogStep(11, "TH reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 11: { - LogStep(11, + case 12: { + LogStep(12, "TH sends a MoveToLevel command to the DUT with Level = 200 and TransitionTime = 300 (30 s). This means the " "level should increase by 150 units in 30s, so 5 units/s"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp && LVL.S.M.VarRate"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); @@ -18733,71 +18773,71 @@ class Test_TC_LVL_3_1Suite : public TestCommand ); } - case 12: { - LogStep(12, "Wait 10000ms"); + case 13: { + LogStep(13, "Wait 10000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 10000UL; return WaitForMs(kIdentityAlpha, value); } - case 13: { - LogStep(13, "TH reads CurrentLevel attribute from DUT"); + case 14: { + LogStep(14, "TH reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000 && LVL.S.M.VarRate"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 14: { - LogStep(14, "Wait 10000ms"); + case 15: { + LogStep(15, "Wait 10000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 10000UL; return WaitForMs(kIdentityAlpha, value); } - case 15: { - LogStep(15, "TH reads CurrentLevel attribute from DUT"); + case 16: { + LogStep(16, "TH reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000 && LVL.S.M.VarRate"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 16: { - LogStep(16, "Wait 10000ms"); + case 17: { + LogStep(17, "Wait 10000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 10000UL; return WaitForMs(kIdentityAlpha, value); } - case 17: { - LogStep(17, "TH reads CurrentLevel attribute from DUT"); + case 18: { + LogStep(18, "TH reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000 && LVL.S.M.VarRate"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 18: { - LogStep(18, "Wait 5000ms"); + case 19: { + LogStep(19, "Wait 5000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 5000UL; return WaitForMs(kIdentityAlpha, value); } - case 19: { - LogStep(19, "TH reads CurrentLevel attribute from DUT"); + case 20: { + LogStep(20, "TH reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000 && LVL.S.M.VarRate"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 20: { - LogStep(20, "TH reads CurrentLevel attribute from DUT"); + case 21: { + LogStep(21, "TH reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000 && !LVL.S.M.VarRate"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 21: { - LogStep(21, "TH writes 0 to the Options attribute"); + case 22: { + LogStep(22, "TH writes 0 to the Options attribute"); VerifyOrDo(!ShouldSkip("LVL.S.A000f"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; uint8_t value; @@ -18805,14 +18845,14 @@ class Test_TC_LVL_3_1Suite : public TestCommand return WriteAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::Options::Id, value, chip::NullOptional, chip::NullOptional); } - case 22: { - LogStep(22, "TH reads Options attribute"); + case 23: { + LogStep(23, "TH reads Options attribute"); VerifyOrDo(!ShouldSkip("LVL.S.A000f"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::Options::Id, true, chip::NullOptional); } - case 23: { - LogStep(23, "TH sends On command to DUT"); + case 24: { + LogStep(24, "TH sends On command to DUT"); VerifyOrDo(!ShouldSkip("OO.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::OnOff::Commands::On::Type value; @@ -18820,8 +18860,8 @@ class Test_TC_LVL_3_1Suite : public TestCommand ); } - case 24: { - LogStep(24, "TH sends a MoveToLevel command to the DUT with"); + case 25: { + LogStep(25, "TH sends a MoveToLevel command to the DUT with"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LevelControl::Commands::MoveToLevel::Type value; @@ -18835,14 +18875,14 @@ class Test_TC_LVL_3_1Suite : public TestCommand ); } - case 25: { - LogStep(25, "TH reads CurrentLevel attribute from DUT"); + case 26: { + LogStep(26, "TH reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 26: { - LogStep(26, "TH sends Off command to DUT"); + case 27: { + LogStep(27, "TH sends Off command to DUT"); VerifyOrDo(!ShouldSkip("OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::OnOff::Commands::Off::Type value; @@ -18850,8 +18890,8 @@ class Test_TC_LVL_3_1Suite : public TestCommand ); } - case 27: { - LogStep(27, "TH sends a MoveToLevel command to the DUT with"); + case 28: { + LogStep(28, "TH sends a MoveToLevel command to the DUT with"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LevelControl::Commands::MoveToLevel::Type value; @@ -18865,14 +18905,14 @@ class Test_TC_LVL_3_1Suite : public TestCommand ); } - case 28: { - LogStep(28, "TH reads CurrentLevel attribute from DUT"); + case 29: { + LogStep(29, "TH reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 29: { - LogStep(29, "TH sends a MoveToLevel command to the DUT with"); + case 30: { + LogStep(30, "TH sends a MoveToLevel command to the DUT with"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LevelControl::Commands::MoveToLevel::Type value; @@ -18886,14 +18926,14 @@ class Test_TC_LVL_3_1Suite : public TestCommand ); } - case 30: { - LogStep(30, "TH reads CurrentLevel attribute from DUT"); + case 31: { + LogStep(31, "TH reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 31: { - LogStep(31, "TH sends a MoveToLevel command to the DUT with"); + case 32: { + LogStep(32, "TH sends a MoveToLevel command to the DUT with"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LevelControl::Commands::MoveToLevel::Type value; @@ -18907,14 +18947,14 @@ class Test_TC_LVL_3_1Suite : public TestCommand ); } - case 32: { - LogStep(32, "TH reads CurrentLevel attribute from DUT"); + case 33: { + LogStep(33, "TH reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 33: { - LogStep(33, "TH writes 1 to the Options attribute"); + case 34: { + LogStep(34, "TH writes 1 to the Options attribute"); VerifyOrDo(!ShouldSkip("LVL.S.A000f"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; uint8_t value; @@ -18922,14 +18962,14 @@ class Test_TC_LVL_3_1Suite : public TestCommand return WriteAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::Options::Id, value, chip::NullOptional, chip::NullOptional); } - case 34: { - LogStep(34, "TH reads Options attribute"); + case 35: { + LogStep(35, "TH reads Options attribute"); VerifyOrDo(!ShouldSkip("LVL.S.A000f"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::Options::Id, true, chip::NullOptional); } - case 35: { - LogStep(35, "TH sends On command to DUT"); + case 36: { + LogStep(36, "TH sends On command to DUT"); VerifyOrDo(!ShouldSkip("OO.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::OnOff::Commands::On::Type value; @@ -18937,8 +18977,8 @@ class Test_TC_LVL_3_1Suite : public TestCommand ); } - case 36: { - LogStep(36, "TH sends a MoveToLevel command to the DUT with"); + case 37: { + LogStep(37, "TH sends a MoveToLevel command to the DUT with"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LevelControl::Commands::MoveToLevel::Type value; @@ -18952,14 +18992,14 @@ class Test_TC_LVL_3_1Suite : public TestCommand ); } - case 37: { - LogStep(37, "TH reads CurrentLevel attribute from DUT"); + case 38: { + LogStep(38, "TH reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 38: { - LogStep(38, "TH sends Off command to DUT"); + case 39: { + LogStep(39, "TH sends Off command to DUT"); VerifyOrDo(!ShouldSkip("OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::OnOff::Commands::Off::Type value; @@ -18967,8 +19007,8 @@ class Test_TC_LVL_3_1Suite : public TestCommand ); } - case 39: { - LogStep(39, "TH sends a MoveToLevel command to the DUT with"); + case 40: { + LogStep(40, "TH sends a MoveToLevel command to the DUT with"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LevelControl::Commands::MoveToLevel::Type value; @@ -18982,14 +19022,14 @@ class Test_TC_LVL_3_1Suite : public TestCommand ); } - case 40: { - LogStep(40, "TH reads CurrentLevel attribute from DUT"); + case 41: { + LogStep(41, "TH reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 41: { - LogStep(41, "TH sends a MoveToLevel command to the DUT with"); + case 42: { + LogStep(42, "TH sends a MoveToLevel command to the DUT with"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LevelControl::Commands::MoveToLevel::Type value; @@ -19003,14 +19043,14 @@ class Test_TC_LVL_3_1Suite : public TestCommand ); } - case 42: { - LogStep(42, "TH reads CurrentLevel attribute from DUT"); + case 43: { + LogStep(43, "TH reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 43: { - LogStep(43, "TH sends a MoveToLevel command to the DUT with"); + case 44: { + LogStep(44, "TH sends a MoveToLevel command to the DUT with"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LevelControl::Commands::MoveToLevel::Type value; @@ -19024,26 +19064,12 @@ class Test_TC_LVL_3_1Suite : public TestCommand ); } - case 44: { - LogStep(44, "TH reads CurrentLevel attribute from DUT"); + case 45: { + LogStep(45, "TH reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 45: { - LogStep(45, "Precondition send Off Command"); - VerifyOrDo(!ShouldSkip("OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::OnOff::Commands::Off::Type value; - return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::Off::Id, value, chip::NullOptional - - ); - } - case 46: { - LogStep(46, "Check on/off attribute value is false after off command"); - VerifyOrDo(!ShouldSkip("OO.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); - } } return CHIP_NO_ERROR; } @@ -19052,7 +19078,7 @@ class Test_TC_LVL_3_1Suite : public TestCommand class Test_TC_LVL_4_1Suite : public TestCommand { public: - Test_TC_LVL_4_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LVL_4_1", 25, credsIssuerConfig) + Test_TC_LVL_4_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LVL_4_1", 26, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -19106,6 +19132,9 @@ class Test_TC_LVL_4_1Suite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 5: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -19115,13 +19144,13 @@ class Test_TC_LVL_4_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); } break; - case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; case 6: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { bool value; @@ -19129,7 +19158,7 @@ class Test_TC_LVL_4_1Suite : public TestCommand VerifyOrReturn(CheckValue("onOff", value, 1)); } break; - case 8: + case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -19138,11 +19167,11 @@ class Test_TC_LVL_4_1Suite : public TestCommand CurrentLevelValue = value; } break; - case 9: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 10: + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -19151,13 +19180,13 @@ class Test_TC_LVL_4_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); } break; - case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 13: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -19166,14 +19195,14 @@ class Test_TC_LVL_4_1Suite : public TestCommand VerifyOrReturn(CheckValue("currentLevel.Value()", value.Value(), 50U)); } break; - case 14: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 15: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 16: + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -19182,11 +19211,11 @@ class Test_TC_LVL_4_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 115U)); } break; - case 17: + case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 18: + case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -19195,11 +19224,11 @@ class Test_TC_LVL_4_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 173U)); } break; - case 19: + case 20: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 20: + case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -19208,11 +19237,11 @@ class Test_TC_LVL_4_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 230U)); } break; - case 21: + case 22: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 22: + case 23: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -19221,10 +19250,10 @@ class Test_TC_LVL_4_1Suite : public TestCommand VerifyOrReturn(CheckValue("currentLevel.Value()", value.Value(), 254U)); } break; - case 23: + case 24: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 24: + case 25: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { bool value; @@ -19269,7 +19298,16 @@ class Test_TC_LVL_4_1Suite : public TestCommand return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "TH writes 0 to the Options attribute"); + LogStep(3, "Precondition: write default value of OnOffTransitionTime attribute"); + VerifyOrDo(!ShouldSkip("LVL.S.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + uint16_t value; + value = 0U; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, + LevelControl::Attributes::OnOffTransitionTime::Id, value, chip::NullOptional, chip::NullOptional); + } + case 4: { + LogStep(4, "TH writes 0 to the Options attribute"); VerifyOrDo(!ShouldSkip("LVL.S.A000f"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; uint8_t value; @@ -19277,14 +19315,14 @@ class Test_TC_LVL_4_1Suite : public TestCommand return WriteAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::Options::Id, value, chip::NullOptional, chip::NullOptional); } - case 4: { - LogStep(4, "TH reads the MaxLevel attribute from the DUT"); + case 5: { + LogStep(5, "TH reads the MaxLevel attribute from the DUT"); VerifyOrDo(!ShouldSkip("LVL.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::MaxLevel::Id, true, chip::NullOptional); } - case 5: { - LogStep(5, "TH sends Off command to DUT"); + case 6: { + LogStep(6, "TH sends Off command to DUT"); VerifyOrDo(!ShouldSkip("OO.S.C00.Rsp && LVL.S.C05.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::OnOff::Commands::Off::Type value; @@ -19292,8 +19330,8 @@ class Test_TC_LVL_4_1Suite : public TestCommand ); } - case 6: { - LogStep(6, "TH sends a MoveWithOnOff command to DUT, with MoveMode =0x00 (up) and Rate =10 (units/s)"); + case 7: { + LogStep(7, "TH sends a MoveWithOnOff command to DUT, with MoveMode =0x00 (up) and Rate =10 (units/s)"); VerifyOrDo(!ShouldSkip("LVL.S.C05.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LevelControl::Commands::MoveWithOnOff::Type value; @@ -19307,32 +19345,32 @@ class Test_TC_LVL_4_1Suite : public TestCommand ); } - case 7: { - LogStep(7, "TH reads OnOff attribute (On/Off cluster) from DUT"); + case 8: { + LogStep(8, "TH reads OnOff attribute (On/Off cluster) from DUT"); VerifyOrDo(!ShouldSkip("OO.S.A0000 && LVL.S.C05.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } - case 8: { - LogStep(8, "TH reads CurrentLevel attribute from DUT"); + case 9: { + LogStep(9, "TH reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C05.Rsp && LVL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 9: { - LogStep(9, "Wait 5000ms"); + case 10: { + LogStep(10, "Wait 5000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 5000UL; return WaitForMs(kIdentityAlpha, value); } - case 10: { - LogStep(10, "TH reads CurrentLevel attribute from DUT"); + case 11: { + LogStep(11, "TH reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C05.Rsp && LVL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 11: { - LogStep(11, "TH sends On command to DUT"); + case 12: { + LogStep(12, "TH sends On command to DUT"); VerifyOrDo(!ShouldSkip("OO.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::OnOff::Commands::On::Type value; @@ -19340,8 +19378,8 @@ class Test_TC_LVL_4_1Suite : public TestCommand ); } - case 12: { - LogStep(12, "TH sends a MoveToLevel command to DUT, with Level =50 and TransitionTime =0 (immediate)"); + case 13: { + LogStep(13, "TH sends a MoveToLevel command to DUT, with Level =50 and TransitionTime =0 (immediate)"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LevelControl::Commands::MoveToLevel::Type value; @@ -19355,14 +19393,14 @@ class Test_TC_LVL_4_1Suite : public TestCommand ); } - case 13: { - LogStep(13, "TH reads CurrentLevel attribute from DUT"); + case 14: { + LogStep(14, "TH reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 14: { - LogStep(14, "TH sends a Move command to the DUT with MoveMode =0x00 (up) and Rate =5 (units/s)"); + case 15: { + LogStep(15, "TH sends a Move command to the DUT with MoveMode =0x00 (up) and Rate =5 (units/s)"); VerifyOrDo(!ShouldSkip("LVL.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LevelControl::Commands::Move::Type value; @@ -19376,60 +19414,60 @@ class Test_TC_LVL_4_1Suite : public TestCommand ); } - case 15: { - LogStep(15, "Wait 10s"); + case 16: { + LogStep(16, "Wait 10s"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 10000UL; return WaitForMs(kIdentityAlpha, value); } - case 16: { - LogStep(16, "TH reads CurrentLevel attribute from DUT"); + case 17: { + LogStep(17, "TH reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C01.Rsp && LVL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 17: { - LogStep(17, "Wait 10s"); + case 18: { + LogStep(18, "Wait 10s"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 10000UL; return WaitForMs(kIdentityAlpha, value); } - case 18: { - LogStep(18, "TH reads CurrentLevel attribute from DUT"); + case 19: { + LogStep(19, "TH reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C01.Rsp && LVL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 19: { - LogStep(19, "Wait 10s"); + case 20: { + LogStep(20, "Wait 10s"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 10000UL; return WaitForMs(kIdentityAlpha, value); } - case 20: { - LogStep(20, "TH reads CurrentLevel attribute from DUT"); + case 21: { + LogStep(21, "TH reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C01.Rsp && LVL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 21: { - LogStep(21, "Wait 13s"); + case 22: { + LogStep(22, "Wait 13s"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 13000UL; return WaitForMs(kIdentityAlpha, value); } - case 22: { - LogStep(22, "TH reads CurrentLevel attribute from DUT"); + case 23: { + LogStep(23, "TH reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C01.Rsp && LVL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 23: { - LogStep(23, "Precondition send Off Command"); + case 24: { + LogStep(24, "Precondition send Off Command"); VerifyOrDo(!ShouldSkip("OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::OnOff::Commands::Off::Type value; @@ -19437,8 +19475,8 @@ class Test_TC_LVL_4_1Suite : public TestCommand ); } - case 24: { - LogStep(24, "Check on/off attribute value is false after off command"); + case 25: { + LogStep(25, "Check on/off attribute value is false after off command"); VerifyOrDo(!ShouldSkip("OO.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } @@ -19450,7 +19488,7 @@ class Test_TC_LVL_4_1Suite : public TestCommand class Test_TC_LVL_5_1Suite : public TestCommand { public: - Test_TC_LVL_5_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LVL_5_1", 22, credsIssuerConfig) + Test_TC_LVL_5_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LVL_5_1", 23, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -19508,6 +19546,9 @@ class Test_TC_LVL_5_1Suite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { bool value; @@ -19515,13 +19556,13 @@ class Test_TC_LVL_5_1Suite : public TestCommand VerifyOrReturn(CheckValue("onOff", value, 1)); } break; - case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -19530,14 +19571,14 @@ class Test_TC_LVL_5_1Suite : public TestCommand VerifyOrReturn(CheckValue("currentLevel.Value()", value.Value(), 50U)); } break; - case 10: + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 11: + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 12: + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -19546,11 +19587,11 @@ class Test_TC_LVL_5_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 115U)); } break; - case 13: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 14: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -19559,11 +19600,11 @@ class Test_TC_LVL_5_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 173U)); } break; - case 15: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 16: + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -19572,11 +19613,11 @@ class Test_TC_LVL_5_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 200U)); } break; - case 17: + case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 18: + case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -19585,7 +19626,7 @@ class Test_TC_LVL_5_1Suite : public TestCommand VerifyOrReturn(CheckValue("currentLevel.Value()", value.Value(), 200U)); } break; - case 19: + case 20: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -19594,10 +19635,10 @@ class Test_TC_LVL_5_1Suite : public TestCommand VerifyOrReturn(CheckValue("currentLevel.Value()", value.Value(), 200U)); } break; - case 20: + case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 21: + case 22: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { bool value; @@ -19642,7 +19683,16 @@ class Test_TC_LVL_5_1Suite : public TestCommand return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "TH writes 0 to the Options attribute"); + LogStep(3, "Precondition: write default value of OnOffTransitionTime attribute"); + VerifyOrDo(!ShouldSkip("LVL.S.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + uint16_t value; + value = 0U; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, + LevelControl::Attributes::OnOffTransitionTime::Id, value, chip::NullOptional, chip::NullOptional); + } + case 4: { + LogStep(4, "TH writes 0 to the Options attribute"); VerifyOrDo(!ShouldSkip("LVL.S.A000f"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; uint8_t value; @@ -19650,8 +19700,8 @@ class Test_TC_LVL_5_1Suite : public TestCommand return WriteAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::Options::Id, value, chip::NullOptional, chip::NullOptional); } - case 4: { - LogStep(4, "TH sends Off command to DUT"); + case 5: { + LogStep(5, "TH sends Off command to DUT"); VerifyOrDo(!ShouldSkip("OO.S.C00.Rsp && LVL.S.C06.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::OnOff::Commands::Off::Type value; @@ -19659,8 +19709,8 @@ class Test_TC_LVL_5_1Suite : public TestCommand ); } - case 5: { - LogStep(5, + case 6: { + LogStep(6, "TH sends a StepWithOnOff command to DUT, with StepMode =0x00 (up), StepSize =50 and TransitionTime =0 " "(immediate)"); VerifyOrDo(!ShouldSkip("LVL.S.C06.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); @@ -19677,13 +19727,13 @@ class Test_TC_LVL_5_1Suite : public TestCommand ); } - case 6: { - LogStep(6, "TH reads OnOff attribute (On/Off cluster) from DUT"); + case 7: { + LogStep(7, "TH reads OnOff attribute (On/Off cluster) from DUT"); VerifyOrDo(!ShouldSkip("OO.S.A0000 && LVL.S.C06.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } - case 7: { - LogStep(7, "TH sends On command to DUT"); + case 8: { + LogStep(8, "TH sends On command to DUT"); VerifyOrDo(!ShouldSkip("OO.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::OnOff::Commands::On::Type value; @@ -19691,8 +19741,8 @@ class Test_TC_LVL_5_1Suite : public TestCommand ); } - case 8: { - LogStep(8, "TH sends a MoveToLevel command to DUT, with Level =50 and TransitionTime =0 (immediate)"); + case 9: { + LogStep(9, "TH sends a MoveToLevel command to DUT, with Level =50 and TransitionTime =0 (immediate)"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LevelControl::Commands::MoveToLevel::Type value; @@ -19706,14 +19756,14 @@ class Test_TC_LVL_5_1Suite : public TestCommand ); } - case 9: { - LogStep(9, "Reads current level attribute from DUT"); + case 10: { + LogStep(10, "Reads current level attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.A0000 && LVL.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 10: { - LogStep(10, "TH sends a Step command to the DUT with StepMode =0x00 (up), StepSize =150 and TransitionTime =300"); + case 11: { + LogStep(11, "TH sends a Step command to the DUT with StepMode =0x00 (up), StepSize =150 and TransitionTime =300"); VerifyOrDo(!ShouldSkip("LVL.S.C02.Rsp && LVL.S.M.VarRate"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LevelControl::Commands::Step::Type value; @@ -19728,71 +19778,71 @@ class Test_TC_LVL_5_1Suite : public TestCommand ); } - case 11: { - LogStep(11, "Wait 10s"); + case 12: { + LogStep(12, "Wait 10s"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 10000UL; return WaitForMs(kIdentityAlpha, value); } - case 12: { - LogStep(12, "TH reads CurrentLevel attribute from DUT"); + case 13: { + LogStep(13, "TH reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C02.Rsp && LVL.S.A0000 && LVL.S.M.VarRate"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 13: { - LogStep(13, "Wait 10s"); + case 14: { + LogStep(14, "Wait 10s"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 10000UL; return WaitForMs(kIdentityAlpha, value); } - case 14: { - LogStep(14, "TH reads CurrentLevel attribute from DUT"); + case 15: { + LogStep(15, "TH reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C02.Rsp && LVL.S.A0000 && LVL.S.M.VarRate"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 15: { - LogStep(15, "Wait 10s"); + case 16: { + LogStep(16, "Wait 10s"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 10000UL; return WaitForMs(kIdentityAlpha, value); } - case 16: { - LogStep(16, "TH reads CurrentLevel attribute from DUT"); + case 17: { + LogStep(17, "TH reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C02.Rsp && LVL.S.A0000 && LVL.S.M.VarRate"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 17: { - LogStep(17, "Wait 5000ms"); + case 18: { + LogStep(18, "Wait 5000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 5000UL; return WaitForMs(kIdentityAlpha, value); } - case 18: { - LogStep(18, "TH reads CurrentLevel attribute from DUT"); + case 19: { + LogStep(19, "TH reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C02.Rsp && LVL.S.A0000 && LVL.S.M.VarRate"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 19: { - LogStep(19, "TH reads CurrentLevel attribute from DUT (after DUT has finished the transition)"); + case 20: { + LogStep(20, "TH reads CurrentLevel attribute from DUT (after DUT has finished the transition)"); VerifyOrDo(!ShouldSkip("LVL.S.C02.Rsp && LVL.S.A0000 && !LVL.S.M.VarRate"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 20: { - LogStep(20, "Precondition send Off Command"); + case 21: { + LogStep(21, "Precondition send Off Command"); VerifyOrDo(!ShouldSkip("OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::OnOff::Commands::Off::Type value; @@ -19800,8 +19850,8 @@ class Test_TC_LVL_5_1Suite : public TestCommand ); } - case 21: { - LogStep(21, "Check on/off attribute value is false after off command"); + case 22: { + LogStep(22, "Check on/off attribute value is false after off command"); VerifyOrDo(!ShouldSkip("OO.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } @@ -19813,7 +19863,7 @@ class Test_TC_LVL_5_1Suite : public TestCommand class Test_TC_LVL_6_1Suite : public TestCommand { public: - Test_TC_LVL_6_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LVL_6_1", 19, credsIssuerConfig) + Test_TC_LVL_6_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LVL_6_1", 20, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -19871,6 +19921,9 @@ class Test_TC_LVL_6_1Suite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -19879,21 +19932,21 @@ class Test_TC_LVL_6_1Suite : public TestCommand VerifyOrReturn(CheckValue("currentLevel.Value()", value.Value(), 50U)); } break; - case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; break; case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; break; case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; break; case 11: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -19902,21 +19955,21 @@ class Test_TC_LVL_6_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 86U)); } break; - case 12: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; break; case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; break; case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; break; case 16: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -19925,10 +19978,10 @@ class Test_TC_LVL_6_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 115U)); } break; - case 17: + case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 18: + case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { bool value; @@ -19973,7 +20026,16 @@ class Test_TC_LVL_6_1Suite : public TestCommand return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "TH writes 0 to the Options attribute"); + LogStep(3, "Precondition: write default value of OnOffTransitionTime attribute"); + VerifyOrDo(!ShouldSkip("LVL.S.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + uint16_t value; + value = 0U; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, + LevelControl::Attributes::OnOffTransitionTime::Id, value, chip::NullOptional, chip::NullOptional); + } + case 4: { + LogStep(4, "TH writes 0 to the Options attribute"); VerifyOrDo(!ShouldSkip("LVL.S.A000f"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; uint8_t value; @@ -19981,8 +20043,8 @@ class Test_TC_LVL_6_1Suite : public TestCommand return WriteAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::Options::Id, value, chip::NullOptional, chip::NullOptional); } - case 4: { - LogStep(4, "TH sends On command to DUT"); + case 5: { + LogStep(5, "TH sends On command to DUT"); VerifyOrDo(!ShouldSkip("OO.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::OnOff::Commands::On::Type value; @@ -19990,8 +20052,8 @@ class Test_TC_LVL_6_1Suite : public TestCommand ); } - case 5: { - LogStep(5, "TH sends a MoveToLevel command to DUT, with Level =50 and TransitionTime =0 (immediate)"); + case 6: { + LogStep(6, "TH sends a MoveToLevel command to DUT, with Level =50 and TransitionTime =0 (immediate)"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LevelControl::Commands::MoveToLevel::Type value; @@ -20005,14 +20067,14 @@ class Test_TC_LVL_6_1Suite : public TestCommand ); } - case 6: { - LogStep(6, "TH reads CurrentLevel attribute from DUT"); + case 7: { + LogStep(7, "TH reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.A0000 && LVL.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 7: { - LogStep(7, + case 8: { + LogStep(8, "TH sends a Move command to the DUT, with the MoveMode field set to 0x00 (move up) and the Rate field set to " "0x05 (5 units/s)"); VerifyOrDo(!ShouldSkip("LVL.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); @@ -20028,15 +20090,15 @@ class Test_TC_LVL_6_1Suite : public TestCommand ); } - case 8: { - LogStep(8, "Wait 5000ms"); + case 9: { + LogStep(9, "Wait 5000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 5000UL; return WaitForMs(kIdentityAlpha, value); } - case 9: { - LogStep(9, "Sends stop command to DUT"); + case 10: { + LogStep(10, "Sends stop command to DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C03.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LevelControl::Commands::Stop::Type value; @@ -20047,8 +20109,8 @@ class Test_TC_LVL_6_1Suite : public TestCommand ); } - case 10: { - LogStep(10, "Physically verify that the device has stopped transitioning"); + case 11: { + LogStep(11, "Physically verify that the device has stopped transitioning"); VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && LVL.S.C03.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; @@ -20057,15 +20119,15 @@ class Test_TC_LVL_6_1Suite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } - case 11: { - LogStep(11, "TH reads CurrentLevel attribute from DUT"); + case 12: { + LogStep(12, "TH reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C01.Rsp && LVL.S.C03.Rsp && LVL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 12: { - LogStep(12, + case 13: { + LogStep(13, "TH sends a Move command to the DUT, with the MoveMode field set to 0x00 (move up) and the Rate field set to " "0x05 (5 units/s)"); VerifyOrDo(!ShouldSkip("LVL.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); @@ -20081,15 +20143,15 @@ class Test_TC_LVL_6_1Suite : public TestCommand ); } - case 13: { - LogStep(13, "Wait 5000ms"); + case 14: { + LogStep(14, "Wait 5000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 5000UL; return WaitForMs(kIdentityAlpha, value); } - case 14: { - LogStep(14, "TH sends a StopWithOnOff command to the DUT"); + case 15: { + LogStep(15, "TH sends a StopWithOnOff command to the DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C07.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LevelControl::Commands::StopWithOnOff::Type value; @@ -20100,8 +20162,8 @@ class Test_TC_LVL_6_1Suite : public TestCommand ); } - case 15: { - LogStep(15, "Physically verify that the device has stopped transitioning"); + case 16: { + LogStep(16, "Physically verify that the device has stopped transitioning"); VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && LVL.S.C07.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; @@ -20110,15 +20172,15 @@ class Test_TC_LVL_6_1Suite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } - case 16: { - LogStep(16, "Reads CurrentLevel attribute from DUT"); + case 17: { + LogStep(17, "Reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C01.Rsp && LVL.S.C07.Rsp && LVL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 17: { - LogStep(17, "Precondition send Off Command"); + case 18: { + LogStep(18, "Precondition send Off Command"); VerifyOrDo(!ShouldSkip("OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::OnOff::Commands::Off::Type value; @@ -20126,8 +20188,8 @@ class Test_TC_LVL_6_1Suite : public TestCommand ); } - case 18: { - LogStep(18, "Check on/off attribute value is false after off command"); + case 19: { + LogStep(19, "Check on/off attribute value is false after off command"); VerifyOrDo(!ShouldSkip("OO.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } @@ -20560,7 +20622,7 @@ class Test_TC_KEYPADINPUT_1_2Suite : public TestCommand { public: Test_TC_KEYPADINPUT_1_2Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_KEYPADINPUT_1_2", 6, credsIssuerConfig) + TestCommand("Test_TC_KEYPADINPUT_1_2", 7, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -20611,12 +20673,21 @@ class Test_TC_KEYPADINPUT_1_2Suite : public TestCommand { uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("featureMap", value, 0UL)); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0UL)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 7UL)); } break; case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 1UL)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 7UL)); + } + break; + case 4: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -20629,7 +20700,7 @@ class Test_TC_KEYPADINPUT_1_2Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 4: + case 5: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -20638,7 +20709,7 @@ class Test_TC_KEYPADINPUT_1_2Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); } break; - case 5: + case 6: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -20676,23 +20747,30 @@ class Test_TC_KEYPADINPUT_1_2Suite : public TestCommand } case 2: { LogStep(2, "Read the global attribute: FeatureMap"); - VerifyOrDo(!ShouldSkip("KEYPADINPUT.S.NV || KEYPADINPUT.S.LK || KEYPADINPUT.S.NK"), + VerifyOrDo(!ShouldSkip(" !KEYPADINPUT.S.NV && KEYPADINPUT.S.LK && !KEYPADINPUT.S.NK "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), KeypadInput::Id, KeypadInput::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Read the global attribute: AttributeList"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), KeypadInput::Id, KeypadInput::Attributes::AttributeList::Id, true, + LogStep(3, "Read the global attribute: FeatureMap"); + VerifyOrDo(!ShouldSkip("KEYPADINPUT.S.NV || KEYPADINPUT.S.LK || KEYPADINPUT.S.NK"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), KeypadInput::Id, KeypadInput::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 4: { - LogStep(4, "Read the global attribute: AcceptedCommandList"); + LogStep(4, "Read the global attribute: AttributeList"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), KeypadInput::Id, KeypadInput::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 5: { + LogStep(5, "Read the global attribute: AcceptedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), KeypadInput::Id, KeypadInput::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 5: { - LogStep(5, "Read the global attribute: GeneratedCommandList"); + case 6: { + LogStep(6, "Read the global attribute: GeneratedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), KeypadInput::Id, KeypadInput::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); } @@ -21237,7 +21315,7 @@ class Test_TC_CHANNEL_1_6Suite : public TestCommand { public: Test_TC_CHANNEL_1_6Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_CHANNEL_1_6", 11, credsIssuerConfig) + TestCommand("Test_TC_CHANNEL_1_6", 12, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -21288,12 +21366,21 @@ class Test_TC_CHANNEL_1_6Suite : public TestCommand { uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("featureMap", value, 0UL)); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0UL)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 3UL)); } break; case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 1UL)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 3UL)); + } + break; + case 4: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -21306,7 +21393,7 @@ class Test_TC_CHANNEL_1_6Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 4: + case 5: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -21315,7 +21402,7 @@ class Test_TC_CHANNEL_1_6Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); } break; - case 5: + case 6: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -21324,7 +21411,7 @@ class Test_TC_CHANNEL_1_6Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); } break; - case 6: + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -21333,7 +21420,7 @@ class Test_TC_CHANNEL_1_6Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 2UL)); } break; - case 7: + case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -21342,7 +21429,7 @@ class Test_TC_CHANNEL_1_6Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); } break; - case 8: + case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -21351,7 +21438,7 @@ class Test_TC_CHANNEL_1_6Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 2UL)); } break; - case 9: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -21360,7 +21447,7 @@ class Test_TC_CHANNEL_1_6Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); } break; - case 10: + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -21398,53 +21485,59 @@ class Test_TC_CHANNEL_1_6Suite : public TestCommand } case 2: { LogStep(2, "Read the global attribute: FeatureMap"); - VerifyOrDo(!ShouldSkip("CHANNEL.S.CL || CHANNEL.S.LI"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("( !CHANNEL.S.CL && !CHANNEL.S.LI )"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Channel::Id, Channel::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Read the global attribute: AttributeList"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Channel::Id, Channel::Attributes::AttributeList::Id, true, + LogStep(3, "Read the global attribute: FeatureMap"); + VerifyOrDo(!ShouldSkip("CHANNEL.S.CL || CHANNEL.S.LI"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Channel::Id, Channel::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 4: { - LogStep(4, "Read the optional attribute(ChannelList): AttributeList"); - VerifyOrDo(!ShouldSkip("CHANNEL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(4, "Read the global attribute: AttributeList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Channel::Id, Channel::Attributes::AttributeList::Id, true, chip::NullOptional); } case 5: { - LogStep(5, "Reading optional attribute(Lineup) in AttributeList"); - VerifyOrDo(!ShouldSkip("CHANNEL.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(5, "Read the optional attribute(ChannelList): AttributeList"); + VerifyOrDo(!ShouldSkip("CHANNEL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Channel::Id, Channel::Attributes::AttributeList::Id, true, chip::NullOptional); } case 6: { - LogStep(6, "Read the optional attribute(CurrentChannel): AttributeList"); - VerifyOrDo(!ShouldSkip("CHANNEL.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(6, "Reading optional attribute(Lineup) in AttributeList"); + VerifyOrDo(!ShouldSkip("CHANNEL.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Channel::Id, Channel::Attributes::AttributeList::Id, true, chip::NullOptional); } case 7: { - LogStep(7, "Read the optional command(ChangeChannel) in AcceptedCommandList"); + LogStep(7, "Read the optional attribute(CurrentChannel): AttributeList"); + VerifyOrDo(!ShouldSkip("CHANNEL.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Channel::Id, Channel::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 8: { + LogStep(8, "Read the optional command(ChangeChannel) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("CHANNEL.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Channel::Id, Channel::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 8: { - LogStep(8, "Read the optional command(ChangeChannelByNumber) in AcceptedCommandList"); + case 9: { + LogStep(9, "Read the optional command(ChangeChannelByNumber) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("CHANNEL.S.C02.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Channel::Id, Channel::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 9: { - LogStep(9, "Read the optional command(SkipChannel) in AcceptedCommandList"); + case 10: { + LogStep(10, "Read the optional command(SkipChannel) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("CHANNEL.S.C03.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Channel::Id, Channel::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 10: { - LogStep(10, "Read the global attribute: GeneratedCommandList"); + case 11: { + LogStep(11, "Read the global attribute: GeneratedCommandList"); VerifyOrDo(!ShouldSkip("CHANNEL.S.CL || CHANNEL.S.LI"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Channel::Id, Channel::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); @@ -21458,7 +21551,7 @@ class Test_TC_MEDIAPLAYBACK_1_7Suite : public TestCommand { public: Test_TC_MEDIAPLAYBACK_1_7Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_MEDIAPLAYBACK_1_7", 20, credsIssuerConfig) + TestCommand("Test_TC_MEDIAPLAYBACK_1_7", 21, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -21509,12 +21602,21 @@ class Test_TC_MEDIAPLAYBACK_1_7Suite : public TestCommand { uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("featureMap", value, 0UL)); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0UL)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 3UL)); } break; case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 1UL)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 3UL)); + } + break; + case 4: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -21528,7 +21630,7 @@ class Test_TC_MEDIAPLAYBACK_1_7Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 4: + case 5: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -21537,7 +21639,7 @@ class Test_TC_MEDIAPLAYBACK_1_7Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); } break; - case 5: + case 6: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -21546,7 +21648,7 @@ class Test_TC_MEDIAPLAYBACK_1_7Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 2UL)); } break; - case 6: + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -21555,7 +21657,7 @@ class Test_TC_MEDIAPLAYBACK_1_7Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); } break; - case 7: + case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -21564,7 +21666,7 @@ class Test_TC_MEDIAPLAYBACK_1_7Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 4UL)); } break; - case 8: + case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -21573,7 +21675,7 @@ class Test_TC_MEDIAPLAYBACK_1_7Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 5UL)); } break; - case 9: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -21582,7 +21684,7 @@ class Test_TC_MEDIAPLAYBACK_1_7Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 6UL)); } break; - case 10: + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -21593,7 +21695,7 @@ class Test_TC_MEDIAPLAYBACK_1_7Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 2UL)); } break; - case 11: + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -21602,7 +21704,7 @@ class Test_TC_MEDIAPLAYBACK_1_7Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); } break; - case 12: + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -21611,7 +21713,7 @@ class Test_TC_MEDIAPLAYBACK_1_7Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 4UL)); } break; - case 13: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -21620,7 +21722,7 @@ class Test_TC_MEDIAPLAYBACK_1_7Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 5UL)); } break; - case 14: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -21629,7 +21731,7 @@ class Test_TC_MEDIAPLAYBACK_1_7Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 6UL)); } break; - case 15: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -21638,7 +21740,7 @@ class Test_TC_MEDIAPLAYBACK_1_7Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 7UL)); } break; - case 16: + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -21647,7 +21749,7 @@ class Test_TC_MEDIAPLAYBACK_1_7Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 8UL)); } break; - case 17: + case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -21656,7 +21758,7 @@ class Test_TC_MEDIAPLAYBACK_1_7Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 9UL)); } break; - case 18: + case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -21665,7 +21767,7 @@ class Test_TC_MEDIAPLAYBACK_1_7Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 11UL)); } break; - case 19: + case 20: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -21703,106 +21805,112 @@ class Test_TC_MEDIAPLAYBACK_1_7Suite : public TestCommand } case 2: { LogStep(2, "Read the global attribute: FeatureMap"); - VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.AS || MEDIAPLAYBACK.S.VS"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip(" !MEDIAPLAYBACK.S.AS && !MEDIAPLAYBACK.S.VS "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Read the global attribute: AttributeList"); + LogStep(3, "Read the global attribute: FeatureMap"); + VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.AS || MEDIAPLAYBACK.S.VS"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Attributes::FeatureMap::Id, true, + chip::NullOptional); + } + case 4: { + LogStep(4, "Read the global attribute: AttributeList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 4: { - LogStep(4, "Read the optional attribute(StartTime) in AttributeList"); + case 5: { + LogStep(5, "Read the optional attribute(StartTime) in AttributeList"); VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 5: { - LogStep(5, "Read the optional attribute(Duration) in AttributeList"); + case 6: { + LogStep(6, "Read the optional attribute(Duration) in AttributeList"); VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 6: { - LogStep(6, "Read the optional attribute(SampledPosition) in AttributeList"); + case 7: { + LogStep(7, "Read the optional attribute(SampledPosition) in AttributeList"); VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 7: { - LogStep(7, "Read the optional attribute(PlaybackSpeed) in AttributeList"); + case 8: { + LogStep(8, "Read the optional attribute(PlaybackSpeed) in AttributeList"); VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 8: { - LogStep(8, "Read the optional attribute(SeekRangeEnd) in AttributeList"); + case 9: { + LogStep(9, "Read the optional attribute(SeekRangeEnd) in AttributeList"); VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 9: { - LogStep(9, "Read the optional attribute(SeekRangeStart) in AttributeList"); + case 10: { + LogStep(10, "Read the optional attribute(SeekRangeStart) in AttributeList"); VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 10: { - LogStep(10, "Read the global attribute: AcceptedCommandList"); + case 11: { + LogStep(11, "Read the global attribute: AcceptedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 11: { - LogStep(11, "Read the optional command(StartOver) in AcceptedCommandList"); + case 12: { + LogStep(12, "Read the optional command(StartOver) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C03.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 12: { - LogStep(12, "Read the optional command(Previous) in AcceptedCommandList"); + case 13: { + LogStep(13, "Read the optional command(Previous) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 13: { - LogStep(13, "Read the optional command(Next) in AcceptedCommandList"); + case 14: { + LogStep(14, "Read the optional command(Next) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C05.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 14: { - LogStep(14, "Read the optional command(Rewind) in AcceptedCommandList"); + case 15: { + LogStep(15, "Read the optional command(Rewind) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C06.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 15: { - LogStep(15, "Read the optional command(FastForward) in AcceptedCommandList"); + case 16: { + LogStep(16, "Read the optional command(FastForward) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C07.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 16: { - LogStep(16, "Read the optional command(SkipForward) in AcceptedCommandList"); + case 17: { + LogStep(17, "Read the optional command(SkipForward) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C08.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 17: { - LogStep(17, "Read the optional command(SkipBackward) in AcceptedCommandList"); + case 18: { + LogStep(18, "Read the optional command(SkipBackward) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C09.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 18: { - LogStep(18, "Read the optional command(Seek) in AcceptedCommandList"); + case 19: { + LogStep(19, "Read the optional command(Seek) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C0B.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 19: { - LogStep(19, "Read the global attribute: GeneratedCommandList"); + case 20: { + LogStep(20, "Read the global attribute: GeneratedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); } @@ -22394,7 +22502,7 @@ class Test_TC_CONTENTLAUNCHER_1_11Suite : public TestCommand { public: Test_TC_CONTENTLAUNCHER_1_11Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_CONTENTLAUNCHER_1_11", 9, credsIssuerConfig) + TestCommand("Test_TC_CONTENTLAUNCHER_1_11", 10, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -22445,12 +22553,21 @@ class Test_TC_CONTENTLAUNCHER_1_11Suite : public TestCommand { uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("featureMap", value, 0UL)); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0UL)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 3UL)); } break; case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 1UL)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 3UL)); + } + break; + case 4: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -22463,7 +22580,7 @@ class Test_TC_CONTENTLAUNCHER_1_11Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 4: + case 5: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -22472,7 +22589,7 @@ class Test_TC_CONTENTLAUNCHER_1_11Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); } break; - case 5: + case 6: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -22481,7 +22598,7 @@ class Test_TC_CONTENTLAUNCHER_1_11Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); } break; - case 6: + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -22490,7 +22607,7 @@ class Test_TC_CONTENTLAUNCHER_1_11Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); } break; - case 7: + case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -22499,7 +22616,7 @@ class Test_TC_CONTENTLAUNCHER_1_11Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); } break; - case 8: + case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -22537,41 +22654,48 @@ class Test_TC_CONTENTLAUNCHER_1_11Suite : public TestCommand } case 2: { LogStep(2, "Read the global attribute: FeatureMap"); - VerifyOrDo(!ShouldSkip("CONTENTLAUNCHER.S.CS || CONTENTLAUNCHER.S.UP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("( !CONTENTLAUNCHER.S.CS && !CONTENTLAUNCHER.S.UP )"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ContentLauncher::Id, ContentLauncher::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Read the global attribute: AttributeList"); + LogStep(3, "Read the global attribute: FeatureMap"); + VerifyOrDo(!ShouldSkip("CONTENTLAUNCHER.S.CS || CONTENTLAUNCHER.S.UP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ContentLauncher::Id, ContentLauncher::Attributes::FeatureMap::Id, + true, chip::NullOptional); + } + case 4: { + LogStep(4, "Read the global attribute: AttributeList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ContentLauncher::Id, ContentLauncher::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 4: { - LogStep(4, "Read the optional attribute(AcceptHeader): AttributeList"); + case 5: { + LogStep(5, "Read the optional attribute(AcceptHeader): AttributeList"); VerifyOrDo(!ShouldSkip("CONTENTLAUNCHER.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ContentLauncher::Id, ContentLauncher::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 5: { - LogStep(5, "Read the optional attribute(SupportedStreamingProtocols): AttributeList"); + case 6: { + LogStep(6, "Read the optional attribute(SupportedStreamingProtocols): AttributeList"); VerifyOrDo(!ShouldSkip("CONTENTLAUNCHER.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ContentLauncher::Id, ContentLauncher::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 6: { - LogStep(6, "Read the optional command(LaunchContent) in AcceptedCommandList attribute"); + case 7: { + LogStep(7, "Read the optional command(LaunchContent) in AcceptedCommandList attribute"); VerifyOrDo(!ShouldSkip("CONTENTLAUNCHER.C.C0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ContentLauncher::Id, ContentLauncher::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 7: { - LogStep(7, "Read the optional command(LaunchURL) in AcceptedCommandList attribute"); + case 8: { + LogStep(8, "Read the optional command(LaunchURL) in AcceptedCommandList attribute"); VerifyOrDo(!ShouldSkip("CONTENTLAUNCHER.C.C0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ContentLauncher::Id, ContentLauncher::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 8: { - LogStep(8, "Read the global attribute: GeneratedCommandList"); + case 9: { + LogStep(9, "Read the global attribute: GeneratedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ContentLauncher::Id, ContentLauncher::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); } @@ -25827,8 +25951,7 @@ class Test_TC_TGTNAV_8_1Suite : public TestCommand AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("targetvalue1", 0, UINT8_MAX, &mTargetvalue1); - AddArgument("targetvalue2", 0, UINT8_MAX, &mTargetvalue2); + AddArgument("targetvalue", 0, UINT8_MAX, &mTargetvalue); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } @@ -25843,8 +25966,7 @@ class Test_TC_TGTNAV_8_1Suite : public TestCommand chip::Optional mNodeId; chip::Optional mCluster; chip::Optional mEndpoint; - chip::Optional mTargetvalue1; - chip::Optional mTargetvalue2; + chip::Optional mTargetvalue; chip::Optional mTimeout; chip::app::DataModel::DecodableList TargetListValues; @@ -25896,7 +26018,7 @@ class Test_TC_TGTNAV_8_1Suite : public TestCommand { uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("currentTarget", value, mTargetvalue1.HasValue() ? mTargetvalue1.Value() : 1U)); + VerifyOrReturn(CheckValue("currentTarget", value, mTargetvalue.HasValue() ? mTargetvalue.Value() : 1U)); } break; default: @@ -25938,7 +26060,7 @@ class Test_TC_TGTNAV_8_1Suite : public TestCommand VerifyOrDo(!ShouldSkip("TGTNAV.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::TargetNavigator::Commands::NavigateTarget::Type value; - value.target = mTargetvalue1.HasValue() ? mTargetvalue1.Value() : 1U; + value.target = mTargetvalue.HasValue() ? mTargetvalue.Value() : 1U; return SendCommand(kIdentityAlpha, GetEndpoint(1), TargetNavigator::Id, TargetNavigator::Commands::NavigateTarget::Id, value, chip::NullOptional @@ -28400,7 +28522,6 @@ class Test_TC_PS_1_1Suite : public TestCommand } case 2: { LogStep(2, "Read the global attribute: FeatureMap"); - VerifyOrDo(!ShouldSkip("PS.S.F00 || PS.S.F01 || PS.S.F02 || PS.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), PowerSource::Id, PowerSource::Attributes::FeatureMap::Id, true, chip::NullOptional); } @@ -32463,7 +32584,7 @@ class Test_TC_SC_4_2Suite : public TestCommand class Test_TC_SWTCH_1_1Suite : public TestCommand { public: - Test_TC_SWTCH_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SWTCH_1_1", 7, credsIssuerConfig) + Test_TC_SWTCH_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SWTCH_1_1", 8, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -32505,12 +32626,21 @@ class Test_TC_SWTCH_1_1Suite : public TestCommand { uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("featureMap", value, 0UL)); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0UL)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 31UL)); } break; case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 1UL)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 31UL)); + } + break; + case 3: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -32518,7 +32648,7 @@ class Test_TC_SWTCH_1_1Suite : public TestCommand VerifyOrReturn(CheckValue("clusterRevision", value, 1U)); } break; - case 3: + case 4: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -32534,7 +32664,7 @@ class Test_TC_SWTCH_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 4: + case 5: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -32549,7 +32679,7 @@ class Test_TC_SWTCH_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 5: + case 6: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -32557,7 +32687,7 @@ class Test_TC_SWTCH_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; - case 6: + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -32593,35 +32723,42 @@ class Test_TC_SWTCH_1_1Suite : public TestCommand } case 1: { LogStep(1, "Read FeatureMap attribute and Check values of flags in this FeatureMap"); - VerifyOrDo(!ShouldSkip("(SWTCH.S.F00 || SWTCH.S.F01 || SWTCH.S.F02 || SWTCH.S.F03 || SWTCH.S.F04)"), + VerifyOrDo(!ShouldSkip("!SWTCH.S.F00 && SWTCH.S.F01 && !SWTCH.S.F02 && !SWTCH.S.F03 && !SWTCH.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Switch::Id, Switch::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 2: { - LogStep(2, "read the global attribute: ClusterRevision"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Switch::Id, Switch::Attributes::ClusterRevision::Id, true, + LogStep(2, "Read FeatureMap attribute and Check values of flags in this FeatureMap"); + VerifyOrDo(!ShouldSkip("(SWTCH.S.F00 || SWTCH.S.F01 || SWTCH.S.F02 || SWTCH.S.F03 || SWTCH.S.F04)"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Switch::Id, Switch::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Read the global attribute: AttributeList"); - VerifyOrDo(!ShouldSkip("SWTCH.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Switch::Id, Switch::Attributes::AttributeList::Id, true, + LogStep(3, "read the global attribute: ClusterRevision"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Switch::Id, Switch::Attributes::ClusterRevision::Id, true, chip::NullOptional); } case 4: { LogStep(4, "Read the global attribute: AttributeList"); - VerifyOrDo(!ShouldSkip("!SWTCH.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("SWTCH.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Switch::Id, Switch::Attributes::AttributeList::Id, true, chip::NullOptional); } case 5: { - LogStep(5, "Read the global attribute: AcceptedCommandList"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Switch::Id, Switch::Attributes::AcceptedCommandList::Id, true, + LogStep(5, "Read the global attribute: AttributeList"); + VerifyOrDo(!ShouldSkip("!SWTCH.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Switch::Id, Switch::Attributes::AttributeList::Id, true, chip::NullOptional); } case 6: { - LogStep(6, "Read the global attribute: GeneratedCommandList"); + LogStep(6, "Read the global attribute: AcceptedCommandList"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Switch::Id, Switch::Attributes::AcceptedCommandList::Id, true, + chip::NullOptional); + } + case 7: { + LogStep(7, "Read the global attribute: GeneratedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Switch::Id, Switch::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); } @@ -33045,7 +33182,7 @@ class Test_TC_TMP_2_1Suite : public TestCommand class Test_TC_TSTAT_1_1Suite : public TestCommand { public: - Test_TC_TSTAT_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_TSTAT_1_1", 16, credsIssuerConfig) + Test_TC_TSTAT_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_TSTAT_1_1", 17, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -33092,6 +33229,15 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand } break; case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("featureMap", value, 0UL)); + VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); + } + break; + case 3: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -33101,7 +33247,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 63UL)); } break; - case 3: + case 4: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -33117,7 +33263,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 4: + case 5: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -33126,7 +33272,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 18UL)); } break; - case 5: + case 6: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -33135,7 +33281,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 17UL)); } break; - case 6: + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -33144,7 +33290,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 2UL)); } break; - case 7: + case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -33153,7 +33299,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 20UL)); } break; - case 8: + case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -33162,7 +33308,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 19UL)); } break; - case 9: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -33173,7 +33319,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 25UL)); } break; - case 10: + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -33184,7 +33330,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 34UL)); } break; - case 11: + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -33195,7 +33341,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 54UL)); } break; - case 12: + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -33206,7 +33352,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 57UL)); } break; - case 13: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -33215,7 +33361,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); } break; - case 14: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -33227,7 +33373,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); } break; - case 15: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -33264,83 +33410,90 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand } case 2: { LogStep(2, "Read the global attribute: FeatureMap"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 || TSTAT.S.F01 || TSTAT.S.F02 || TSTAT.S.F03 || TSTAT.S.F04 || TSTAT.S.F05"), + VerifyOrDo(!ShouldSkip("!TSTAT.S.F00 && !TSTAT.S.F01 && !TSTAT.S.F02 && !TSTAT.S.F03 && !TSTAT.S.F04 && !TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Read the global attribute: AttributeList"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + LogStep(3, "Read the global attribute: FeatureMap"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 || TSTAT.S.F01 || TSTAT.S.F02 || TSTAT.S.F03 || TSTAT.S.F04 || TSTAT.S.F05"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 4: { - LogStep(4, "Read the Feature dependent(TSTAT.S.F00(HEAT)) attribute in AttributeList"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(4, "Read the global attribute: AttributeList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, chip::NullOptional); } case 5: { - LogStep(5, "Read the Feature dependent(TSTAT.S.F01(COOL)) attribute in AttributeList"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(5, "Read the Feature dependent(TSTAT.S.F00(HEAT)) attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, chip::NullOptional); } case 6: { - LogStep(6, "Read the Feature dependent(TSTAT.S.F02(OCC)) attribute in AttributeList"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(6, "Read the Feature dependent(TSTAT.S.F01(COOL)) attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, chip::NullOptional); } case 7: { - LogStep(7, "Read the Feature dependent(TSTAT.S.F00(HEAT) & TSTAT.S.F02(OCC)) attribute in AttributeList"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(7, "Read the Feature dependent(TSTAT.S.F02(OCC)) attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, chip::NullOptional); } case 8: { - LogStep(8, "Read the Feature dependent(TSTAT.S.F01(COOL) & TSTAT.S.F02(OCC)) attribute in AttributeList"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(8, "Read the Feature dependent(TSTAT.S.F00(HEAT) & TSTAT.S.F02(OCC)) attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, chip::NullOptional); } case 9: { - LogStep(9, "Read the Feature dependent(TSTAT.S.F05(AUTO)) attribute in AttributeList"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(9, "Read the Feature dependent(TSTAT.S.F01(COOL) & TSTAT.S.F02(OCC)) attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, chip::NullOptional); } case 10: { - LogStep(10, "Read the Feature dependent(TSTAT.S.F03(SCH)) attribute in AttributeList"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(10, "Read the Feature dependent(TSTAT.S.F05(AUTO)) attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, chip::NullOptional); } case 11: { - LogStep(11, "Read the Feature dependent(TSTAT.S.F04(SB)) attribute in AttributeList"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(11, "Read the Feature dependent(TSTAT.S.F03(SCH)) attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, chip::NullOptional); } case 12: { - LogStep(12, "Read the Feature dependent(TSTAT.S.F04(SB) & TSTAT.S.F02(OCC)) attribute in AttributeList"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F04 && TSTAT.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(12, "Read the Feature dependent(TSTAT.S.F04(SB)) attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, chip::NullOptional); } case 13: { - LogStep(13, "Read the global attribute: AcceptedCommandList"); + LogStep(13, "Read the Feature dependent(TSTAT.S.F04(SB) & TSTAT.S.F02(OCC)) attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F04 && TSTAT.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 14: { + LogStep(14, "Read the global attribute: AcceptedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 14: { - LogStep(14, "Read Feature dependent(TSTAT.S.F03(SCH)) commands in AcceptedCommandList"); + case 15: { + LogStep(15, "Read Feature dependent(TSTAT.S.F03(SCH)) commands in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("TSTAT.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 15: { - LogStep(15, "Read the global attribute: GeneratedCommandList"); + case 16: { + LogStep(16, "Read the global attribute: GeneratedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); } @@ -36581,8 +36734,6 @@ class Test_TC_DGTHREAD_1_1Suite : public TestCommand } case 2: { LogStep(2, "TH reads the FeatureMap from DUT"); - VerifyOrDo(!ShouldSkip("DGTHREAD.S.F00 || DGTHREAD.S.F01 || DGTHREAD.S.F02 || DGTHREAD.S.F03"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), ThreadNetworkDiagnostics::Id, ThreadNetworkDiagnostics::Attributes::FeatureMap::Id, true, chip::NullOptional); } @@ -38593,7 +38744,7 @@ class Test_TC_ULABEL_2_4Suite : public TestCommand class Test_TC_DGWIFI_1_1Suite : public TestCommand { public: - Test_TC_DGWIFI_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DGWIFI_1_1", 10, credsIssuerConfig) + Test_TC_DGWIFI_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DGWIFI_1_1", 11, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -38644,12 +38795,21 @@ class Test_TC_DGWIFI_1_1Suite : public TestCommand { uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("featureMap", value, 0UL)); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0UL)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 3UL)); } break; case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 1UL)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 3UL)); + } + break; + case 4: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -38667,7 +38827,7 @@ class Test_TC_DGWIFI_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 4: + case 5: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -38680,7 +38840,7 @@ class Test_TC_DGWIFI_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 10UL)); } break; - case 5: + case 6: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -38690,7 +38850,7 @@ class Test_TC_DGWIFI_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 12UL)); } break; - case 6: + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -38699,7 +38859,7 @@ class Test_TC_DGWIFI_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 11UL)); } break; - case 7: + case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -38711,7 +38871,7 @@ class Test_TC_DGWIFI_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; - case 8: + case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -38720,7 +38880,7 @@ class Test_TC_DGWIFI_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); } break; - case 9: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -38761,47 +38921,53 @@ class Test_TC_DGWIFI_1_1Suite : public TestCommand } case 2: { LogStep(2, "TH reads the FeatureMap from DUT"); - VerifyOrDo(!ShouldSkip("DGWIFI.S.F00 || DGWIFI.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("( !DGWIFI.S.F00 && !DGWIFI.S.F01 )"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), WiFiNetworkDiagnostics::Id, WiFiNetworkDiagnostics::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "TH reads AttributeList from DUT"); + LogStep(3, "TH reads the FeatureMap from DUT"); + VerifyOrDo(!ShouldSkip("DGWIFI.S.F00 || DGWIFI.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), WiFiNetworkDiagnostics::Id, - WiFiNetworkDiagnostics::Attributes::AttributeList::Id, true, chip::NullOptional); + WiFiNetworkDiagnostics::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 4: { - LogStep(4, "TH reads Feature dependent(DGWIFI.S.F00) attributes in attributeList from DUT"); - VerifyOrDo(!ShouldSkip("DGWIFI.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(4, "TH reads AttributeList from DUT"); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), WiFiNetworkDiagnostics::Id, WiFiNetworkDiagnostics::Attributes::AttributeList::Id, true, chip::NullOptional); } case 5: { - LogStep(5, "TH reads Feature dependent(DGWIFI.S.F01) attributes in attributeList from DUT"); - VerifyOrDo(!ShouldSkip("DGWIFI.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(5, "TH reads Feature dependent(DGWIFI.S.F00) attributes in attributeList from DUT"); + VerifyOrDo(!ShouldSkip("DGWIFI.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), WiFiNetworkDiagnostics::Id, WiFiNetworkDiagnostics::Attributes::AttributeList::Id, true, chip::NullOptional); } case 6: { - LogStep(6, "TH reads optional attribute (CurrentMaxRate) in AttributeList from DUT"); - VerifyOrDo(!ShouldSkip("DGWIFI.S.A000b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(6, "TH reads Feature dependent(DGWIFI.S.F01) attributes in attributeList from DUT"); + VerifyOrDo(!ShouldSkip("DGWIFI.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), WiFiNetworkDiagnostics::Id, WiFiNetworkDiagnostics::Attributes::AttributeList::Id, true, chip::NullOptional); } case 7: { - LogStep(7, "TH reads AcceptedCommandList from DUT"); + LogStep(7, "TH reads optional attribute (CurrentMaxRate) in AttributeList from DUT"); + VerifyOrDo(!ShouldSkip("DGWIFI.S.A000b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), WiFiNetworkDiagnostics::Id, + WiFiNetworkDiagnostics::Attributes::AttributeList::Id, true, chip::NullOptional); + } + case 8: { + LogStep(8, "TH reads AcceptedCommandList from DUT"); VerifyOrDo(!ShouldSkip(" !DGWIFI.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), WiFiNetworkDiagnostics::Id, WiFiNetworkDiagnostics::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 8: { - LogStep(8, "TH reads Feature dependent(DGWIFI.S.F01) command in AcceptedCommandList from DUT"); + case 9: { + LogStep(9, "TH reads Feature dependent(DGWIFI.S.F01) command in AcceptedCommandList from DUT"); VerifyOrDo(!ShouldSkip("DGWIFI.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), WiFiNetworkDiagnostics::Id, WiFiNetworkDiagnostics::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 9: { - LogStep(9, "TH reads GeneratedCommandList from DUT"); + case 10: { + LogStep(10, "TH reads GeneratedCommandList from DUT"); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), WiFiNetworkDiagnostics::Id, WiFiNetworkDiagnostics::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); } @@ -68572,7 +68738,7 @@ class DL_SchedulesSuite : public TestCommand class Test_TC_DRLK_1_1Suite : public TestCommand { public: - Test_TC_DRLK_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DRLK_1_1", 32, credsIssuerConfig) + Test_TC_DRLK_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DRLK_1_1", 33, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -68623,12 +68789,21 @@ class Test_TC_DRLK_1_1Suite : public TestCommand { uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("featureMap", value, 0UL)); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0UL)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 4095UL)); } break; case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 1UL)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 4095UL)); + } + break; + case 4: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68646,7 +68821,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 4: + case 5: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68657,7 +68832,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 28UL)); } break; - case 5: + case 6: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68668,7 +68843,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 24UL)); } break; - case 6: + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68679,7 +68854,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 26UL)); } break; - case 7: + case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68688,7 +68863,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 20UL)); } break; - case 8: + case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68697,7 +68872,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 21UL)); } break; - case 9: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68706,7 +68881,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 22UL)); } break; - case 10: + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68716,7 +68891,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 49UL)); } break; - case 11: + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68725,7 +68900,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 51UL)); } break; - case 12: + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68734,7 +68909,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 33UL)); } break; - case 13: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68743,7 +68918,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 34UL)); } break; - case 14: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68752,7 +68927,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 35UL)); } break; - case 15: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68761,7 +68936,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 36UL)); } break; - case 16: + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68770,7 +68945,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 39UL)); } break; - case 17: + case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68779,7 +68954,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 40UL)); } break; - case 18: + case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68788,7 +68963,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 41UL)); } break; - case 19: + case 20: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68797,7 +68972,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 42UL)); } break; - case 20: + case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68806,7 +68981,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 43UL)); } break; - case 21: + case 22: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68815,7 +68990,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 44UL)); } break; - case 22: + case 23: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68825,7 +69000,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); } break; - case 23: + case 24: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68836,7 +69011,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 13UL)); } break; - case 24: + case 25: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68847,7 +69022,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 16UL)); } break; - case 25: + case 26: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68858,7 +69033,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 19UL)); } break; - case 26: + case 27: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68872,7 +69047,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 38UL)); } break; - case 27: + case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68881,7 +69056,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); } break; - case 28: + case 29: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68890,7 +69065,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 12UL)); } break; - case 29: + case 30: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68899,7 +69074,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 15UL)); } break; - case 30: + case 31: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68908,7 +69083,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 18UL)); } break; - case 31: + case 32: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68947,180 +69122,188 @@ class Test_TC_DRLK_1_1Suite : public TestCommand } case 2: { LogStep(2, "TH reads the FeatureMap from DUT"); + VerifyOrDo(!ShouldSkip(" !DRLK.S.F00 && !DRLK.S.F01 && !DRLK.S.F02 && !DRLK.S.F04 && !DRLK.S.F05 && !DRLK.S.F06 && " + "!DRLK.S.F07 && !DRLK.S.F08 && !DRLK.S.F10 && !DRLK.S.F11 "), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::FeatureMap::Id, true, + chip::NullOptional); + } + case 3: { + LogStep(3, "TH reads the FeatureMap from DUT"); VerifyOrDo(!ShouldSkip("DRLK.S.F00 || DRLK.S.F01 || DRLK.S.F02 || DRLK.S.F04 || DRLK.S.F05 || DRLK.S.F06 || DRLK.S.F07 " "|| DRLK.S.F08 || DRLK.S.F10 || DRLK.S.F11"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::FeatureMap::Id, true, chip::NullOptional); } - case 3: { - LogStep(3, "TH reads AttributeList from DUT"); + case 4: { + LogStep(4, "TH reads AttributeList from DUT"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 4: { - LogStep(4, "TH reads Feature dependent(DRLK.S.F08) attributes in AttributeList"); + case 5: { + LogStep(5, "TH reads Feature dependent(DRLK.S.F08) attributes in AttributeList"); VerifyOrDo(!ShouldSkip("DRLK.S.F08"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 5: { - LogStep(5, "TH reads Feature dependent(DRLK.S.F00) attributes in AttributeList"); + case 6: { + LogStep(6, "TH reads Feature dependent(DRLK.S.F00) attributes in AttributeList"); VerifyOrDo(!ShouldSkip("DRLK.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 6: { - LogStep(6, "TH reads Feature dependent(DRLK.S.F01) attributes in AttributeList"); + case 7: { + LogStep(7, "TH reads Feature dependent(DRLK.S.F01) attributes in AttributeList"); VerifyOrDo(!ShouldSkip("DRLK.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 7: { - LogStep(7, "TH reads Feature dependent(DRLK.S.F04) attribute in AttributeList"); + case 8: { + LogStep(8, "TH reads Feature dependent(DRLK.S.F04) attribute in AttributeList"); VerifyOrDo(!ShouldSkip("DRLK.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 8: { - LogStep(8, "TH reads Feature dependent(DRLK.S.F10) attribute in AttributeList"); + case 9: { + LogStep(9, "TH reads Feature dependent(DRLK.S.F10) attribute in AttributeList"); VerifyOrDo(!ShouldSkip("DRLK.S.F10"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 9: { - LogStep(9, "TH reads Feature dependent(DRLK.S.F11) attribute in AttributeList"); + case 10: { + LogStep(10, "TH reads Feature dependent(DRLK.S.F11) attribute in AttributeList"); VerifyOrDo(!ShouldSkip("DRLK.S.F11"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 10: { - LogStep(10, "TH reads Feature dependent(DRLK.S.F00 or DRLK.S.F01) attributes in AttributeList"); + case 11: { + LogStep(11, "TH reads Feature dependent(DRLK.S.F00 or DRLK.S.F01) attributes in AttributeList"); VerifyOrDo(!ShouldSkip("DRLK.S.F00 || DRLK.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 11: { - LogStep(11, "TH reads Feature dependent(DRLK.S.F07 or DRLK.S.F00) attribute in AttributeList"); + case 12: { + LogStep(12, "TH reads Feature dependent(DRLK.S.F07 or DRLK.S.F00) attribute in AttributeList"); VerifyOrDo(!ShouldSkip("DRLK.S.F07 || DRLK.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 12: { - LogStep(12, "TH reads optional attribute(Language) in AttributeList"); + case 13: { + LogStep(13, "TH reads optional attribute(Language) in AttributeList"); VerifyOrDo(!ShouldSkip("DRLK.S.A0021"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 13: { - LogStep(13, "TH reads optional attribute(LEDSettings) in AttributeList"); + case 14: { + LogStep(14, "TH reads optional attribute(LEDSettings) in AttributeList"); VerifyOrDo(!ShouldSkip("DRLK.S.A0022"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 14: { - LogStep(14, "TH reads optional attribute(AutoRelockTime) in AttributeList"); + case 15: { + LogStep(15, "TH reads optional attribute(AutoRelockTime) in AttributeList"); VerifyOrDo(!ShouldSkip("DRLK.S.A0023"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 15: { - LogStep(15, "TH reads optional attribute(SoundVolume) in AttributeList"); + case 16: { + LogStep(16, "TH reads optional attribute(SoundVolume) in AttributeList"); VerifyOrDo(!ShouldSkip("DRLK.S.A0024"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 16: { - LogStep(16, "TH reads optional attribute(DefaultConfigurationRegister) in AttributeList"); + case 17: { + LogStep(17, "TH reads optional attribute(DefaultConfigurationRegister) in AttributeList"); VerifyOrDo(!ShouldSkip("DRLK.S.A0027"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 17: { - LogStep(17, "TH reads optional attribute(EnableLocalProgramming) in AttributeList"); + case 18: { + LogStep(18, "TH reads optional attribute(EnableLocalProgramming) in AttributeList"); VerifyOrDo(!ShouldSkip("DRLK.S.A0028"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 18: { - LogStep(18, "TH reads optional attribute(EnableOneTouchLocking) in AttributeList"); + case 19: { + LogStep(19, "TH reads optional attribute(EnableOneTouchLocking) in AttributeList"); VerifyOrDo(!ShouldSkip("DRLK.S.A0029"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 19: { - LogStep(19, "TH reads optional attribute(EnableInsideStatusLED) in AttributeList"); + case 20: { + LogStep(20, "TH reads optional attribute(EnableInsideStatusLED) in AttributeList"); VerifyOrDo(!ShouldSkip("DRLK.S.A002a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 20: { - LogStep(20, "TH reads optional attribute(EnablePrivacyModeButton) in AttributeList"); + case 21: { + LogStep(21, "TH reads optional attribute(EnablePrivacyModeButton) in AttributeList"); VerifyOrDo(!ShouldSkip("DRLK.S.A002b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 21: { - LogStep(21, "TH reads optional attribute(LocalProgrammingFeatures) in AttributeList"); + case 22: { + LogStep(22, "TH reads optional attribute(LocalProgrammingFeatures) in AttributeList"); VerifyOrDo(!ShouldSkip("DRLK.S.A002c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 22: { - LogStep(22, "TH reads AcceptedCommandList from DUT"); + case 23: { + LogStep(23, "TH reads AcceptedCommandList from DUT"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 23: { - LogStep(23, "TH reads Feature dependent commands(DRLK.S.F04) in AcceptedCommandList"); + case 24: { + LogStep(24, "TH reads Feature dependent commands(DRLK.S.F04) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("DRLK.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 24: { - LogStep(24, "TH reads Feature dependent commands(DRLK.S.F10) in AcceptedCommandList"); + case 25: { + LogStep(25, "TH reads Feature dependent commands(DRLK.S.F10) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("DRLK.S.F10"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 25: { - LogStep(25, "TH reads Feature dependent commands(DRLK.S.F11) in AcceptedCommandList"); + case 26: { + LogStep(26, "TH reads Feature dependent commands(DRLK.S.F11) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("DRLK.S.F11"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 26: { - LogStep(26, "TH reads Feature dependent commands(DRLK.S.F08) in AcceptedCommandList"); + case 27: { + LogStep(27, "TH reads Feature dependent commands(DRLK.S.F08) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("DRLK.S.F08"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 27: { - LogStep(27, "TH reads optional commands(DRLK.S.C03.Rsp) in AcceptedCommandList"); + case 28: { + LogStep(28, "TH reads optional commands(DRLK.S.C03.Rsp) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("DRLK.S.C03.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 28: { - LogStep(28, "TH reads Feature dependent command(DRLK.S.F04) in GeneratedCommandList"); + case 29: { + LogStep(29, "TH reads Feature dependent command(DRLK.S.F04) in GeneratedCommandList"); VerifyOrDo(!ShouldSkip("DRLK.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); } - case 29: { - LogStep(29, "TH reads Feature dependent command(DRLK.S.F10) in GeneratedCommandList"); + case 30: { + LogStep(30, "TH reads Feature dependent command(DRLK.S.F10) in GeneratedCommandList"); VerifyOrDo(!ShouldSkip("DRLK.S.F10"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); } - case 30: { - LogStep(30, "TH reads Feature dependent command(DRLK.S.F11) in GeneratedCommandList"); + case 31: { + LogStep(31, "TH reads Feature dependent command(DRLK.S.F11) in GeneratedCommandList"); VerifyOrDo(!ShouldSkip("DRLK.S.F11"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); } - case 31: { - LogStep(31, "TH reads Feature dependent command(DRLK.S.F08) in GeneratedCommandList"); + case 32: { + LogStep(32, "TH reads Feature dependent command(DRLK.S.F08) in GeneratedCommandList"); VerifyOrDo(!ShouldSkip("DRLK.S.F08"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); @@ -82402,26 +82585,31 @@ class Test_TC_CADMIN_1_11Suite : public TestCommand { public: Test_TC_CADMIN_1_11Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_CADMIN_1_11", 0, credsIssuerConfig) + TestCommand("Test_TC_CADMIN_1_11", 19, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + AddArgument("nodeId2", 0, UINT64_MAX, &mNodeId2); + AddArgument("nodeId3", 0, UINT64_MAX, &mNodeId3); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("discriminator", 0, UINT16_MAX, &mDiscriminator); + AddArgument("payload", &mPayload); + AddArgument("PakeVerifier", &mPakeVerifier); } ~Test_TC_CADMIN_1_11Suite() {} - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } + chip::System::Clock::Timeout GetWaitDuration() const override { return chip::System::Clock::Seconds16(mTimeout.ValueOr(400)); } private: chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; chip::Optional mTimeout; + chip::Optional mNodeId2; + chip::Optional mNodeId3; + chip::Optional mEndpoint; + chip::Optional mDiscriminator; + chip::Optional mPayload; + chip::Optional mPakeVerifier; chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } @@ -82435,6 +82623,106 @@ class Test_TC_CADMIN_1_11Suite : public TestCommand switch (mTestIndex - 1) { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 1: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 8: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 10: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_FAILURE)); + break; + case 11: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList< + chip::app::Clusters::OperationalCredentials::Structs::FabricDescriptor::DecodableType> + value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + { + auto iter_0 = value.begin(); + VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 0)); + VerifyOrReturn(CheckValueAsString("fabrics[0].label", iter_0.GetValue().label, chip::CharSpan("", 0))); + VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 1)); + VerifyOrReturn(CheckValueAsString("fabrics[1].label", iter_0.GetValue().label, chip::CharSpan("", 0))); + VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 2)); + VerifyOrReturn(CheckValueAsString("fabrics[2].label", iter_0.GetValue().label, chip::CharSpan("", 0))); + VerifyOrReturn(CheckNoMoreListItems("fabrics", iter_0, 3)); + } + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + } + break; + case 12: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 13: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 14: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_FAILURE)); + break; + case 15: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 16: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList< + chip::app::Clusters::OperationalCredentials::Structs::FabricDescriptor::DecodableType> + value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + { + auto iter_0 = value.begin(); + VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 0)); + VerifyOrReturn(CheckValueAsString("fabrics[0].label", iter_0.GetValue().label, chip::CharSpan("", 0))); + VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 1)); + VerifyOrReturn(CheckValueAsString("fabrics[1].label", iter_0.GetValue().label, chip::CharSpan("", 0))); + VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 2)); + VerifyOrReturn(CheckValueAsString("fabrics[2].label", iter_0.GetValue().label, chip::CharSpan("", 0))); + VerifyOrReturn(CheckNoMoreListItems("fabrics", iter_0, 3)); + } + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + } + break; + case 17: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 18: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_FAILURE)); + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -82450,6 +82738,240 @@ class Test_TC_CADMIN_1_11Suite : public TestCommand using namespace chip::app::Clusters; switch (testIndex) { + case 0: { + LogStep(0, "Precondition: Reset Devices to factory defaults"); + VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::SystemCommands::Commands::FactoryReset::Type value; + return FactoryReset(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "Precondition: Reset Devices to factory defaults"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = + chip::Span("Factory Reset the DUT and enter 'y' after successgarbage: not in length on purpose", 49); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 2: { + LogStep(2, "TH_CR1 starts a commissioning process with DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + return WaitForCommissionee(kIdentityAlpha, value); + } + case 3: { + LogStep(3, "TH_CR1 opens a commissioning window on DUT_CE using ECM"); + VerifyOrDo(!ShouldSkip("CADMIN.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; + value.commissioningTimeout = 180U; + value.PAKEVerifier = mPakeVerifier.HasValue() + ? mPakeVerifier.Value() + : chip::ByteSpan( + chip::Uint8::from_const_char( + "\271ap\252\350\0034h\204rO\351\243\262\207\303\0030\302\246`7]\027\273 " + "Z\214\361\256\3135\004W\370\253y\356%:\266\250\344k\260\236T:\344\042sm\345\001\343\3337\324A\3764I " + "\320\225H\344\301\202@c\014O\364\221(10000), chip::NullOptional + + ); + } + case 4: { + LogStep(4, "TH_CR3 starts a commissioning process with DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId3.HasValue() ? mNodeId3.Value() : 12586990ULL; + value.payload = mPayload.HasValue() ? mPayload.Value() : chip::Span("MT:-24J0AFN00KA0648G00", 22); + return PairWithCode(kIdentityGamma, value); + } + case 5: { + LogStep(5, "DUT_CE is commissioned to TH_CR3 on Fabric ID3 with Node ID3"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId3.HasValue() ? mNodeId3.Value() : 12586990ULL; + return WaitForCommissionee(kIdentityGamma, value); + } + case 6: { + LogStep(6, "TH_CR1 opens a commissioning window on DUT_CE using ECM"); + VerifyOrDo(!ShouldSkip("CADMIN.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; + value.commissioningTimeout = 180U; + value.PAKEVerifier = mPakeVerifier.HasValue() + ? mPakeVerifier.Value() + : chip::ByteSpan( + chip::Uint8::from_const_char( + "\271ap\252\350\0034h\204rO\351\243\262\207\303\0030\302\246`7]\027\273 " + "Z\214\361\256\3135\004W\370\253y\356%:\266\250\344k\260\236T:\344\042sm\345\001\343\3337\324A\3764I " + "\320\225H\344\301\202@c\014O\364\221(10000), chip::NullOptional + + ); + } + case 7: { + LogStep(7, "TH_CR2 starts a commissioning process with DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + value.payload = chip::Span("payload --commissioner-name betagarbage: not in length on purpose", 33); + return PairWithCode(kIdentityBeta, value); + } + case 8: { + LogStep(8, "DUT_CE is commissioned to TH_CR2"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + return WaitForCommissionee(kIdentityBeta, value); + } + case 9: { + LogStep(9, "TH_CR1 opens a commissioning window on DUT_CE using ECM"); + VerifyOrDo(!ShouldSkip("CADMIN.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; + value.commissioningTimeout = 180U; + value.PAKEVerifier = mPakeVerifier.HasValue() + ? mPakeVerifier.Value() + : chip::ByteSpan( + chip::Uint8::from_const_char( + "\271ap\252\350\0034h\204rO\351\243\262\207\303\0030\302\246`7]\027\273 " + "Z\214\361\256\3135\004W\370\253y\356%:\266\250\344k\260\236T:\344\042sm\345\001\343\3337\324A\3764I " + "\320\225H\344\301\202@c\014O\364\221(10000), chip::NullOptional + + ); + } + case 10: { + LogStep(10, + "Before the expiration of PIXIT.CADMIN.CwDuration seconds which was set in step 5, TH_CR1 opens a 2nd " + "commissioning window on DUT_CE using a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM"); + VerifyOrDo(!ShouldSkip("CADMIN.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; + value.commissioningTimeout = 180U; + value.PAKEVerifier = mPakeVerifier.HasValue() + ? mPakeVerifier.Value() + : chip::ByteSpan( + chip::Uint8::from_const_char( + "\271ap\252\350\0034h\204rO\351\243\262\207\303\0030\302\246`7]\027\273 " + "Z\214\361\256\3135\004W\370\253y\356%:\266\250\344k\260\236T:\344\042sm\345\001\343\3337\324A\3764I " + "\320\225H\344\301\202@c\014O\364\221(10000), chip::NullOptional + + ); + } + case 11: { + LogStep(11, "TH_CR1 reads the list of Fabrics on DUT_CE"); + VerifyOrDo(!ShouldSkip("OPCREDS.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), OperationalCredentials::Id, + OperationalCredentials::Attributes::Fabrics::Id, false, chip::NullOptional); + } + case 12: { + LogStep(12, "Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that was set in step 6"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 180000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 13: { + LogStep(13, + "TH_CR1 re-opens a commissioning window on DUT_CE using a commissioning timeout of PIXIT.CADMIN.CwDuration " + "seconds using BCM"); + VerifyOrDo(!ShouldSkip("CADMIN.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; + value.commissioningTimeout = 180U; + return SendCommand(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, + AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Id, value, + chip::Optional(10000), chip::NullOptional + + ); + } + case 14: { + LogStep(14, + "Before the expiration of PIXIT.CADMIN.CwDuration seconds that was set in step 10, TH_CR3 opens a 2nd " + "commissioning window on DUT_CE using a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM"); + VerifyOrDo(!ShouldSkip("CADMIN.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; + value.commissioningTimeout = 180U; + return SendCommand(kIdentityGamma, GetEndpoint(0), AdministratorCommissioning::Id, + AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Id, value, + chip::Optional(10000), chip::NullOptional + + ); + } + case 15: { + LogStep(15, "Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that was set in step 11"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 180000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 16: { + LogStep(16, "TH_CR1 reads the list of Fabrics on DUT_CE"); + VerifyOrDo(!ShouldSkip("OPCREDS.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), OperationalCredentials::Id, + OperationalCredentials::Attributes::Fabrics::Id, false, chip::NullOptional); + } + case 17: { + LogStep(17, "TH_CR1 opens a commissioning window on DUT_CE using BCM"); + VerifyOrDo(!ShouldSkip("CADMIN.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; + value.commissioningTimeout = 180U; + return SendCommand(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, + AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Id, value, + chip::Optional(10000), chip::NullOptional + + ); + } + case 18: { + LogStep(18, + "Before the expiration of PIXIT.CADMIN.CwDuration seconds that was set in step 14, TH_CR2 opens a second " + "commissioning window on DUT_CE using a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM"); + VerifyOrDo(!ShouldSkip("CADMIN.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; + value.commissioningTimeout = 180U; + return SendCommand(kIdentityBeta, GetEndpoint(0), AdministratorCommissioning::Id, + AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Id, value, + chip::Optional(10000), chip::NullOptional + + ); + } } return CHIP_NO_ERROR; } @@ -82573,11 +83095,15 @@ class Test_TC_CADMIN_1_15Suite : public TestCommand { public: Test_TC_CADMIN_1_15Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_CADMIN_1_15", 0, credsIssuerConfig) + TestCommand("Test_TC_CADMIN_1_15", 18, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); + AddArgument("nodeId2", 0, UINT64_MAX, &mNodeId2); + AddArgument("nodeId3", 0, UINT64_MAX, &mNodeId3); AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("discriminator", 0, UINT16_MAX, &mDiscriminator); + AddArgument("payload", &mPayload); + AddArgument("PakeVerifier", &mPakeVerifier); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } @@ -82590,8 +83116,12 @@ class Test_TC_CADMIN_1_15Suite : public TestCommand private: chip::Optional mNodeId; - chip::Optional mCluster; + chip::Optional mNodeId2; + chip::Optional mNodeId3; chip::Optional mEndpoint; + chip::Optional mDiscriminator; + chip::Optional mPayload; + chip::Optional mPakeVerifier; chip::Optional mTimeout; chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } @@ -82606,6 +83136,131 @@ class Test_TC_CADMIN_1_15Suite : public TestCommand switch (mTestIndex - 1) { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 1: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 8: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList< + chip::app::Clusters::OperationalCredentials::Structs::FabricDescriptor::DecodableType> + value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + { + auto iter_0 = value.begin(); + VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 0)); + VerifyOrReturn(CheckValueAsString("fabrics[0].label", iter_0.GetValue().label, chip::CharSpan("", 0))); + VerifyOrReturn(CheckValue("fabrics[0].fabricIndex", iter_0.GetValue().fabricIndex, 1U)); + VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 1)); + VerifyOrReturn(CheckValueAsString("fabrics[1].label", iter_0.GetValue().label, chip::CharSpan("", 0))); + VerifyOrReturn(CheckValue("fabrics[1].fabricIndex", iter_0.GetValue().fabricIndex, 2U)); + VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 2)); + VerifyOrReturn(CheckValueAsString("fabrics[2].label", iter_0.GetValue().label, chip::CharSpan("", 0))); + VerifyOrReturn(CheckValue("fabrics[2].fabricIndex", iter_0.GetValue().fabricIndex, 3U)); + VerifyOrReturn(CheckNoMoreListItems("fabrics", iter_0, 3)); + } + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + } + break; + case 10: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::Clusters::OperationalCredentials::Commands::NOCResponse::DecodableType value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + } + break; + case 11: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_FAILURE)); + break; + case 12: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 13: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList< + chip::app::Clusters::OperationalCredentials::Structs::FabricDescriptor::DecodableType> + value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + { + auto iter_0 = value.begin(); + VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 0)); + VerifyOrReturn(CheckValueAsString("fabrics[0].label", iter_0.GetValue().label, chip::CharSpan("", 0))); + VerifyOrReturn(CheckValue("fabrics[0].fabricIndex", iter_0.GetValue().fabricIndex, 1U)); + VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 1)); + VerifyOrReturn(CheckValueAsString("fabrics[1].label", iter_0.GetValue().label, chip::CharSpan("", 0))); + VerifyOrReturn(CheckValue("fabrics[1].fabricIndex", iter_0.GetValue().fabricIndex, 3U)); + VerifyOrReturn(CheckNoMoreListItems("fabrics", iter_0, 2)); + } + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + } + break; + case 14: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 15: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 16: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 17: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList< + chip::app::Clusters::OperationalCredentials::Structs::FabricDescriptor::DecodableType> + value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + { + auto iter_0 = value.begin(); + VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 0)); + VerifyOrReturn(CheckValueAsString("fabrics[0].label", iter_0.GetValue().label, chip::CharSpan("", 0))); + VerifyOrReturn(CheckValue("fabrics[0].fabricIndex", iter_0.GetValue().fabricIndex, 1U)); + VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 1)); + VerifyOrReturn(CheckValueAsString("fabrics[1].label", iter_0.GetValue().label, chip::CharSpan("", 0))); + VerifyOrReturn(CheckValue("fabrics[1].fabricIndex", iter_0.GetValue().fabricIndex, 4U)); + VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 2)); + VerifyOrReturn(CheckValueAsString("fabrics[2].label", iter_0.GetValue().label, chip::CharSpan("", 0))); + VerifyOrReturn(CheckValue("fabrics[2].fabricIndex", iter_0.GetValue().fabricIndex, 3U)); + VerifyOrReturn(CheckNoMoreListItems("fabrics", iter_0, 3)); + } + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + } + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -82621,6 +83276,201 @@ class Test_TC_CADMIN_1_15Suite : public TestCommand using namespace chip::app::Clusters; switch (testIndex) { + case 0: { + LogStep(0, "Precondition: Reset Devices to factory defaults"); + VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::SystemCommands::Commands::FactoryReset::Type value; + return FactoryReset(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "Precondition: Reset Devices to factory defaults"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = + chip::Span("Factory Reset the DUT and enter 'y' after successgarbage: not in length on purpose", 49); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 2: { + LogStep(2, "TH_CR1 starts a commissioning process with DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + return WaitForCommissionee(kIdentityAlpha, value); + } + case 3: { + LogStep(3, "TH_CR1 opens a commissioning window on DUT_CE using ECM"); + VerifyOrDo(!ShouldSkip("CADMIN.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; + value.commissioningTimeout = 180U; + value.PAKEVerifier = mPakeVerifier.HasValue() + ? mPakeVerifier.Value() + : chip::ByteSpan( + chip::Uint8::from_const_char( + "\271ap\252\350\0034h\204rO\351\243\262\207\303\0030\302\246`7]\027\273 " + "Z\214\361\256\3135\004W\370\253y\356%:\266\250\344k\260\236T:\344\042sm\345\001\343\3337\324A\3764I " + "\320\225H\344\301\202@c\014O\364\221(10000), chip::NullOptional + + ); + } + case 4: { + LogStep(4, "TH_CR2 starts a commissioning process with DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + value.payload = mPayload.HasValue() ? mPayload.Value() : chip::Span("MT:-24J0AFN00KA0648G00", 22); + return PairWithCode(kIdentityBeta, value); + } + case 5: { + LogStep(5, "DUT_CE is commissioned to TH_CR2"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + return WaitForCommissionee(kIdentityBeta, value); + } + case 6: { + LogStep(6, "TH_CR1 opens a commissioning window on DUT_CE using ECM"); + VerifyOrDo(!ShouldSkip("CADMIN.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; + value.commissioningTimeout = 180U; + value.PAKEVerifier = mPakeVerifier.HasValue() + ? mPakeVerifier.Value() + : chip::ByteSpan( + chip::Uint8::from_const_char( + "\271ap\252\350\0034h\204rO\351\243\262\207\303\0030\302\246`7]\027\273 " + "Z\214\361\256\3135\004W\370\253y\356%:\266\250\344k\260\236T:\344\042sm\345\001\343\3337\324A\3764I " + "\320\225H\344\301\202@c\014O\364\221(10000), chip::NullOptional + + ); + } + case 7: { + LogStep(7, "TH_CR3 Commissions with DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId3.HasValue() ? mNodeId3.Value() : 12586990ULL; + value.payload = mPayload.HasValue() ? mPayload.Value() : chip::Span("MT:-24J0AFN00KA0648G00", 22); + return PairWithCode(kIdentityGamma, value); + } + case 8: { + LogStep(8, "DUT_CE is commissioned to TH_CR3"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId3.HasValue() ? mNodeId3.Value() : 12586990ULL; + return WaitForCommissionee(kIdentityGamma, value); + } + case 9: { + LogStep(9, "TH_CR2 reads the list of Fabrics on DUT_CE"); + VerifyOrDo(!ShouldSkip("OPCREDS.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityBeta, GetEndpoint(0), OperationalCredentials::Id, + OperationalCredentials::Attributes::Fabrics::Id, false, chip::NullOptional); + } + case 10: { + LogStep(10, "TH_CR2 sends RemoveFabric with FabricIndex = 2 command to DUT_CE"); + VerifyOrDo(!ShouldSkip("OPCREDS.S.C0a.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::OperationalCredentials::Commands::RemoveFabric::Type value; + value.fabricIndex = 2U; + return SendCommand(kIdentityBeta, GetEndpoint(0), OperationalCredentials::Id, + OperationalCredentials::Commands::RemoveFabric::Id, value, chip::Optional(10000), + chip::NullOptional + + ); + } + case 11: { + LogStep(11, "TH_CR2 writes the Basic Information Clusters NodeLabel mandatory attribute of DUT_CE"); + VerifyOrDo(!ShouldSkip("BINFO.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::CharSpan value; + value = chip::Span("chiptestgarbage: not in length on purpose", 8); + return WriteAttribute(kIdentityBeta, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 12: { + LogStep(12, "TH_CR2 reads the Basic Information Clusters NodeLabel mandatory attribute of DUT_CE"); + VerifyOrDo(!ShouldSkip("BINFO.S.A0005 && PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 13: { + LogStep(13, "TH_CR1 reads the list of Fabrics on DUT_CE"); + VerifyOrDo(!ShouldSkip("OPCREDS.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), OperationalCredentials::Id, + OperationalCredentials::Attributes::Fabrics::Id, false, chip::NullOptional); + } + case 14: { + LogStep(14, "TH_CR1 opens a commissioning window on DUT_CE using ECM"); + VerifyOrDo(!ShouldSkip("CADMIN.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; + value.commissioningTimeout = 180U; + value.PAKEVerifier = mPakeVerifier.HasValue() + ? mPakeVerifier.Value() + : chip::ByteSpan( + chip::Uint8::from_const_char( + "\271ap\252\350\0034h\204rO\351\243\262\207\303\0030\302\246`7]\027\273 " + "Z\214\361\256\3135\004W\370\253y\356%:\266\250\344k\260\236T:\344\042sm\345\001\343\3337\324A\3764I " + "\320\225H\344\301\202@c\014O\364\221(10000), chip::NullOptional + + ); + } + case 15: { + LogStep(15, "TH_CR2 starts a commissioning process with DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + value.payload = mPayload.HasValue() ? mPayload.Value() : chip::Span("MT:-24J0AFN00KA0648G00", 22); + return PairWithCode(kIdentityBeta, value); + } + case 16: { + LogStep(16, "DUT_CE is commissioned to TH_CR2"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + return WaitForCommissionee(kIdentityBeta, value); + } + case 17: { + LogStep(17, "TH_CR1 reads the list of Fabrics on DUT_CE"); + VerifyOrDo(!ShouldSkip("OPCREDS.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), OperationalCredentials::Id, + OperationalCredentials::Attributes::Fabrics::Id, false, chip::NullOptional); + } } return CHIP_NO_ERROR; } @@ -82630,11 +83480,14 @@ class Test_TC_CADMIN_1_16Suite : public TestCommand { public: Test_TC_CADMIN_1_16Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_CADMIN_1_16", 0, credsIssuerConfig) + TestCommand("Test_TC_CADMIN_1_16", 18, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); + AddArgument("nodeId2", 0, UINT64_MAX, &mNodeId2); + AddArgument("nodeId3", 0, UINT64_MAX, &mNodeId3); AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("discriminator", 0, UINT16_MAX, &mDiscriminator); + AddArgument("payload", &mPayload); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } @@ -82647,8 +83500,11 @@ class Test_TC_CADMIN_1_16Suite : public TestCommand private: chip::Optional mNodeId; - chip::Optional mCluster; + chip::Optional mNodeId2; + chip::Optional mNodeId3; chip::Optional mEndpoint; + chip::Optional mDiscriminator; + chip::Optional mPayload; chip::Optional mTimeout; chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } @@ -82663,6 +83519,131 @@ class Test_TC_CADMIN_1_16Suite : public TestCommand switch (mTestIndex - 1) { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 1: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 8: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList< + chip::app::Clusters::OperationalCredentials::Structs::FabricDescriptor::DecodableType> + value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + { + auto iter_0 = value.begin(); + VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 0)); + VerifyOrReturn(CheckValueAsString("fabrics[0].label", iter_0.GetValue().label, chip::CharSpan("", 0))); + VerifyOrReturn(CheckValue("fabrics[0].fabricIndex", iter_0.GetValue().fabricIndex, 1U)); + VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 1)); + VerifyOrReturn(CheckValueAsString("fabrics[1].label", iter_0.GetValue().label, chip::CharSpan("", 0))); + VerifyOrReturn(CheckValue("fabrics[1].fabricIndex", iter_0.GetValue().fabricIndex, 2U)); + VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 2)); + VerifyOrReturn(CheckValueAsString("fabrics[2].label", iter_0.GetValue().label, chip::CharSpan("", 0))); + VerifyOrReturn(CheckValue("fabrics[2].fabricIndex", iter_0.GetValue().fabricIndex, 3U)); + VerifyOrReturn(CheckNoMoreListItems("fabrics", iter_0, 3)); + } + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + } + break; + case 10: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::Clusters::OperationalCredentials::Commands::NOCResponse::DecodableType value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + } + break; + case 11: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_FAILURE)); + break; + case 12: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 13: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList< + chip::app::Clusters::OperationalCredentials::Structs::FabricDescriptor::DecodableType> + value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + { + auto iter_0 = value.begin(); + VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 0)); + VerifyOrReturn(CheckValueAsString("fabrics[0].label", iter_0.GetValue().label, chip::CharSpan("", 0))); + VerifyOrReturn(CheckValue("fabrics[0].fabricIndex", iter_0.GetValue().fabricIndex, 1U)); + VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 1)); + VerifyOrReturn(CheckValueAsString("fabrics[1].label", iter_0.GetValue().label, chip::CharSpan("", 0))); + VerifyOrReturn(CheckValue("fabrics[1].fabricIndex", iter_0.GetValue().fabricIndex, 3U)); + VerifyOrReturn(CheckNoMoreListItems("fabrics", iter_0, 2)); + } + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + } + break; + case 14: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 15: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 16: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 17: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList< + chip::app::Clusters::OperationalCredentials::Structs::FabricDescriptor::DecodableType> + value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + { + auto iter_0 = value.begin(); + VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 0)); + VerifyOrReturn(CheckValueAsString("fabrics[0].label", iter_0.GetValue().label, chip::CharSpan("", 0))); + VerifyOrReturn(CheckValue("fabrics[0].fabricIndex", iter_0.GetValue().fabricIndex, 1U)); + VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 1)); + VerifyOrReturn(CheckValueAsString("fabrics[1].label", iter_0.GetValue().label, chip::CharSpan("", 0))); + VerifyOrReturn(CheckValue("fabrics[1].fabricIndex", iter_0.GetValue().fabricIndex, 4U)); + VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 2)); + VerifyOrReturn(CheckValueAsString("fabrics[2].label", iter_0.GetValue().label, chip::CharSpan("", 0))); + VerifyOrReturn(CheckValue("fabrics[2].fabricIndex", iter_0.GetValue().fabricIndex, 3U)); + VerifyOrReturn(CheckNoMoreListItems("fabrics", iter_0, 3)); + } + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + } + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -82678,6 +83659,168 @@ class Test_TC_CADMIN_1_16Suite : public TestCommand using namespace chip::app::Clusters; switch (testIndex) { + case 0: { + LogStep(0, "Precondition: Reset Devices to factory defaults"); + VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::SystemCommands::Commands::FactoryReset::Type value; + return FactoryReset(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "Precondition: Reset Devices to factory defaults"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = + chip::Span("Factory Reset the DUT and enter 'y' after successgarbage: not in length on purpose", 49); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 2: { + LogStep(2, "TH_CR1 starts a commissioning process with DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + return WaitForCommissionee(kIdentityAlpha, value); + } + case 3: { + LogStep(3, "TH_CR1 opens a commissioning window on DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; + value.commissioningTimeout = 180U; + return SendCommand(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, + AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Id, value, + chip::Optional(10000), chip::NullOptional + + ); + } + case 4: { + LogStep(4, "TH_CR2 starts a commissioning process with DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + value.payload = mPayload.HasValue() ? mPayload.Value() : chip::Span("MT:-24J0AFN00KA0648G00", 22); + return PairWithCode(kIdentityBeta, value); + } + case 5: { + LogStep(5, "DUT_CE is commissioned to TH_CR2"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + return WaitForCommissionee(kIdentityBeta, value); + } + case 6: { + LogStep(6, "TH_CR1 opens a commissioning window on DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; + value.commissioningTimeout = 180U; + return SendCommand(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, + AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Id, value, + chip::Optional(10000), chip::NullOptional + + ); + } + case 7: { + LogStep(7, "TH_CR3 Commissions with DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId3.HasValue() ? mNodeId3.Value() : 12586990ULL; + value.payload = mPayload.HasValue() ? mPayload.Value() : chip::Span("MT:-24J0AFN00KA0648G00", 22); + return PairWithCode(kIdentityGamma, value); + } + case 8: { + LogStep(8, "DUT_CE is commissioned to TH_CR3"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId3.HasValue() ? mNodeId3.Value() : 12586990ULL; + return WaitForCommissionee(kIdentityGamma, value); + } + case 9: { + LogStep(9, "TH_CR2 reads the list of Fabrics on DUT_CE"); + VerifyOrDo(!ShouldSkip("OPCREDS.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityBeta, GetEndpoint(0), OperationalCredentials::Id, + OperationalCredentials::Attributes::Fabrics::Id, false, chip::NullOptional); + } + case 10: { + LogStep(10, "TH_CR2 sends RemoveFabric with FabricIndex = 2 command to DUT_CE"); + VerifyOrDo(!ShouldSkip("OPCREDS.S.C0a.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::OperationalCredentials::Commands::RemoveFabric::Type value; + value.fabricIndex = 2U; + return SendCommand(kIdentityBeta, GetEndpoint(0), OperationalCredentials::Id, + OperationalCredentials::Commands::RemoveFabric::Id, value, chip::Optional(10000), + chip::NullOptional + + ); + } + case 11: { + LogStep(11, "TH_CR2 writes the Basic Information Clusters NodeLabel mandatory attribute of DUT_CE"); + VerifyOrDo(!ShouldSkip("BINFO.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::CharSpan value; + value = chip::Span("chiptestgarbage: not in length on purpose", 8); + return WriteAttribute(kIdentityBeta, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 12: { + LogStep(12, "TH_CR2 reads the Basic Information Clusters NodeLabel mandatory attribute of DUT_CE"); + VerifyOrDo(!ShouldSkip("BINFO.S.A0005 && PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 13: { + LogStep(13, "TH_CR1 reads the list of Fabrics on DUT_CE"); + VerifyOrDo(!ShouldSkip("OPCREDS.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), OperationalCredentials::Id, + OperationalCredentials::Attributes::Fabrics::Id, false, chip::NullOptional); + } + case 14: { + LogStep(14, "TH_CR1 opens a commissioning window on DUT_CE using BCM"); + VerifyOrDo(!ShouldSkip("CADMIN.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; + value.commissioningTimeout = 180U; + return SendCommand(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, + AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Id, value, + chip::Optional(10000), chip::NullOptional + + ); + } + case 15: { + LogStep(15, "TH_CR2 starts a commissioning process with DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + value.payload = mPayload.HasValue() ? mPayload.Value() : chip::Span("MT:-24J0AFN00KA0648G00", 22); + return PairWithCode(kIdentityBeta, value); + } + case 16: { + LogStep(16, "DUT_CE is commissioned to TH_CR2"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + return WaitForCommissionee(kIdentityBeta, value); + } + case 17: { + LogStep(17, "TH_CR1 reads the list of Fabrics on DUT_CE"); + VerifyOrDo(!ShouldSkip("OPCREDS.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), OperationalCredentials::Id, + OperationalCredentials::Attributes::Fabrics::Id, false, chip::NullOptional); + } } return CHIP_NO_ERROR; } @@ -82915,26 +84058,23 @@ class Test_TC_CADMIN_1_21Suite : public TestCommand { public: Test_TC_CADMIN_1_21Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_CADMIN_1_21", 0, credsIssuerConfig) + TestCommand("Test_TC_CADMIN_1_21", 8, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("discriminator", 0, UINT16_MAX, &mDiscriminator); } ~Test_TC_CADMIN_1_21Suite() {} - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } + chip::System::Clock::Timeout GetWaitDuration() const override { return chip::System::Clock::Seconds16(mTimeout.ValueOr(950)); } private: chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; chip::Optional mTimeout; + chip::Optional mEndpoint; + chip::Optional mDiscriminator; chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } @@ -82948,6 +84088,44 @@ class Test_TC_CADMIN_1_21Suite : public TestCommand switch (mTestIndex - 1) { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 1: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::Clusters::AdministratorCommissioning::CommissioningWindowStatus value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("windowStatus", value, 0U)); + } + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_INVALID_COMMAND)); + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::Clusters::AdministratorCommissioning::CommissioningWindowStatus value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("windowStatus", value, 0U)); + } + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -82963,6 +84141,75 @@ class Test_TC_CADMIN_1_21Suite : public TestCommand using namespace chip::app::Clusters; switch (testIndex) { + case 0: { + LogStep(0, "Precondition: Reset Devices to factory defaults"); + VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::SystemCommands::Commands::FactoryReset::Type value; + return FactoryReset(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "Precondition: Reset Devices to factory defaults"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = + chip::Span("Factory Reset the DUT and enter 'y' after successgarbage: not in length on purpose", 49); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 2: { + LogStep(2, "TH_CR1 starts a commissioning process with DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + return WaitForCommissionee(kIdentityAlpha, value); + } + case 3: { + LogStep(3, "TH_CR1 opens a commissioning window on DUT_CE using BCM"); + VerifyOrDo(!ShouldSkip("CADMIN.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; + value.commissioningTimeout = 900U; + return SendCommand(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, + AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Id, value, + chip::Optional(10000), chip::NullOptional + + ); + } + case 4: { + LogStep(4, "Wait for commissioning Window to 901 seconds"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 901000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 5: { + LogStep(5, "TH_CR1 reads the window status to verify the DUT_CE window is closed"); + VerifyOrDo(!ShouldSkip("CADMIN.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, + AdministratorCommissioning::Attributes::WindowStatus::Id, true, chip::NullOptional); + } + case 6: { + LogStep(6, "TH_CR1 opens a commissioning window on DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; + value.commissioningTimeout = 901U; + return SendCommand(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, + AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Id, value, + chip::Optional(10000), chip::NullOptional + + ); + } + case 7: { + LogStep(7, "TH_CR1 reads the window status to verify the DUT_CE window is closed"); + VerifyOrDo(!ShouldSkip("CADMIN.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, + AdministratorCommissioning::Attributes::WindowStatus::Id, true, chip::NullOptional); + } } return CHIP_NO_ERROR; } @@ -82972,26 +84219,25 @@ class Test_TC_CADMIN_1_22Suite : public TestCommand { public: Test_TC_CADMIN_1_22Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_CADMIN_1_22", 0, credsIssuerConfig) + TestCommand("Test_TC_CADMIN_1_22", 8, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("discriminator", 0, UINT16_MAX, &mDiscriminator); + AddArgument("PakeVerifier", &mPakeVerifier); } ~Test_TC_CADMIN_1_22Suite() {} - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } + chip::System::Clock::Timeout GetWaitDuration() const override { return chip::System::Clock::Seconds16(mTimeout.ValueOr(950)); } private: chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; chip::Optional mTimeout; + chip::Optional mEndpoint; + chip::Optional mDiscriminator; + chip::Optional mPakeVerifier; chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } @@ -83005,6 +84251,44 @@ class Test_TC_CADMIN_1_22Suite : public TestCommand switch (mTestIndex - 1) { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 1: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::Clusters::AdministratorCommissioning::CommissioningWindowStatus value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("windowStatus", value, 0U)); + } + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_INVALID_COMMAND)); + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::Clusters::AdministratorCommissioning::CommissioningWindowStatus value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("windowStatus", value, 0U)); + } + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -83020,6 +84304,97 @@ class Test_TC_CADMIN_1_22Suite : public TestCommand using namespace chip::app::Clusters; switch (testIndex) { + case 0: { + LogStep(0, "Precondition: Reset Devices to factory defaults"); + VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::SystemCommands::Commands::FactoryReset::Type value; + return FactoryReset(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "Precondition: Reset Devices to factory defaults"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = + chip::Span("Factory Reset the DUT and enter 'y' after successgarbage: not in length on purpose", 49); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 2: { + LogStep(2, "TH_CR1 starts a commissioning process with DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + return WaitForCommissionee(kIdentityAlpha, value); + } + case 3: { + LogStep(3, "TH_CR1 opens a commissioning window on DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; + value.commissioningTimeout = 900U; + value.PAKEVerifier = mPakeVerifier.HasValue() + ? mPakeVerifier.Value() + : chip::ByteSpan( + chip::Uint8::from_const_char( + "\271ap\252\350\0034h\204rO\351\243\262\207\303\0030\302\246`7]\027\273 " + "Z\214\361\256\3135\004W\370\253y\356%:\266\250\344k\260\236T:\344\042sm\345\001\343\3337\324A\3764I " + "\320\225H\344\301\202@c\014O\364\221(10000), chip::NullOptional + + ); + } + case 4: { + LogStep(4, "Wait for commissioning Window to 901 seconds"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 901000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 5: { + LogStep(5, "TH_CR1 reads the window status to verify the DUT_CE window is closed"); + VerifyOrDo(!ShouldSkip("CADMIN.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, + AdministratorCommissioning::Attributes::WindowStatus::Id, true, chip::NullOptional); + } + case 6: { + LogStep(6, "TH_CR1 opens a commissioning window on DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; + value.commissioningTimeout = 901U; + value.PAKEVerifier = mPakeVerifier.HasValue() + ? mPakeVerifier.Value() + : chip::ByteSpan( + chip::Uint8::from_const_char( + "\271ap\252\350\0034h\204rO\351\243\262\207\303\0030\302\246`7]\027\273 " + "Z\214\361\256\3135\004W\370\253y\356%:\266\250\344k\260\236T:\344\042sm\345\001\343\3337\324A\3764I " + "\320\225H\344\301\202@c\014O\364\221(10000), chip::NullOptional + + ); + } + case 7: { + LogStep(7, "TH_CR1 reads the window status to verify the DUT_CE window is closed"); + VerifyOrDo(!ShouldSkip("CADMIN.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, + AdministratorCommissioning::Attributes::WindowStatus::Id, true, chip::NullOptional); + } } return CHIP_NO_ERROR; } @@ -84261,7 +85636,7 @@ class Test_TC_CADMIN_1_6Suite : public TestCommand return WaitForMs(kIdentityAlpha, value); } case 5: { - LogStep(5, "Commission from beta"); + LogStep(5, "TH_CR2 starts a commissioning process with DUT_CE"); VerifyOrDo(!ShouldSkip("CADMIN.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; @@ -85924,7 +87299,7 @@ class Test_TC_CADMIN_1_23Suite : public TestCommand ~Test_TC_CADMIN_1_23Suite() {} - chip::System::Clock::Timeout GetWaitDuration() const override { return chip::System::Clock::Seconds16(mTimeout.ValueOr(330)); } + chip::System::Clock::Timeout GetWaitDuration() const override { return chip::System::Clock::Seconds16(mTimeout.ValueOr(200)); } private: chip::Optional mNodeId; @@ -86036,7 +87411,7 @@ class Test_TC_CADMIN_1_23Suite : public TestCommand ); } case 4: { - LogStep(4, "Wait for commissioning Window to 301 seconds"); + LogStep(4, "Wait for commissioning Window to 181 seconds"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 181000UL; @@ -86086,7 +87461,7 @@ class Test_TC_CADMIN_1_24Suite : public TestCommand ~Test_TC_CADMIN_1_24Suite() {} - chip::System::Clock::Timeout GetWaitDuration() const override { return chip::System::Clock::Seconds16(mTimeout.ValueOr(330)); } + chip::System::Clock::Timeout GetWaitDuration() const override { return chip::System::Clock::Seconds16(mTimeout.ValueOr(200)); } private: chip::Optional mNodeId; @@ -86210,7 +87585,7 @@ class Test_TC_CADMIN_1_24Suite : public TestCommand ); } case 4: { - LogStep(4, "Wait for commissioning Window to 301 seconds"); + LogStep(4, "Wait for commissioning Window to 181 seconds"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 181000UL; @@ -89775,62 +91150,6 @@ class Test_TC_OCC_3_1Suite : public TestCommand } }; -class Test_TC_OCC_3_2Suite : public TestCommand -{ -public: - Test_TC_OCC_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_OCC_3_2", 0, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_OCC_3_2Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - { - } - return CHIP_NO_ERROR; - } -}; - class Test_TC_PRS_3_1Suite : public TestCommand { public: @@ -100651,7 +101970,6 @@ void registerCommandsTests(Commands & commands, CredentialIssuerCommands * creds make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), - make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), diff --git a/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h index b29a4a8455674d..59a1a11c980eb2 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h @@ -93054,6 +93054,7 @@ class SubscribeAttributeTestClusterClusterRevision : public SubscribeAttribute { |------------------------------------------------------------------------------| | Commands: | | | * FailAtFault | 0x00 | +| * FailRandomlyAtFault | 0x01 | |------------------------------------------------------------------------------| | Attributes: | | | * GeneratedCommandList | 0xFFF8 | @@ -93119,6 +93120,56 @@ class FaultInjectionFailAtFault : public ClusterCommand { chip::app::Clusters::FaultInjection::Commands::FailAtFault::Type mRequest; }; +/* + * Command FailRandomlyAtFault + */ +class FaultInjectionFailRandomlyAtFault : public ClusterCommand { +public: + FaultInjectionFailRandomlyAtFault() + : ClusterCommand("fail-randomly-at-fault") + { + AddArgument("Type", 0, UINT8_MAX, &mRequest.type); + AddArgument("Id", 0, UINT32_MAX, &mRequest.id); + AddArgument("Percentage", 0, UINT8_MAX, &mRequest.percentage); + ClusterCommand::AddArguments(); + } + + CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC06) command (0x00000001) on endpoint %u", endpointId); + + dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL); + MTRBaseClusterFaultInjection * cluster = [[MTRBaseClusterFaultInjection alloc] initWithDevice:device + endpoint:endpointId + queue:callbackQueue]; + __auto_type * params = [[MTRFaultInjectionClusterFailRandomlyAtFaultParams alloc] init]; + params.timedInvokeTimeoutMs + = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil; + params.type = [NSNumber numberWithUnsignedChar:chip::to_underlying(mRequest.type)]; + params.id = [NSNumber numberWithUnsignedInt:mRequest.id]; + params.percentage = [NSNumber numberWithUnsignedChar:mRequest.percentage]; + uint16_t repeatCount = mRepeatCount.ValueOr(1); + uint16_t __block responsesNeeded = repeatCount; + while (repeatCount--) { + [cluster failRandomlyAtFaultWithParams:params + completionHandler:^(NSError * _Nullable error) { + responsesNeeded--; + if (error != nil) { + mError = error; + LogNSError("Error", error); + } + if (responsesNeeded == 0) { + SetCommandExitStatus(mError); + } + }]; + } + return CHIP_NO_ERROR; + } + +private: + chip::app::Clusters::FaultInjection::Commands::FailRandomlyAtFault::Type mRequest; +}; + /* * Attribute GeneratedCommandList */ @@ -97018,6 +97069,7 @@ void registerClusterFaultInjection(Commands & commands) commands_list clusterCommands = { make_unique(Id), // make_unique(), // + make_unique(), // make_unique(Id), // make_unique(), // make_unique(Id), // diff --git a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h index 7f5059b72519be..3e6b294d6b85c1 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h @@ -3239,6 +3239,11 @@ class Test_TC_ACT_1_1 : public TestCommandBridge { VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); VerifyOrReturn(CheckConstraintContains("attributeList", value, 0UL)); VerifyOrReturn(CheckConstraintContains("attributeList", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65532UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65533UL)); NextTest(); }]; @@ -3258,8 +3263,6 @@ class Test_TC_ACT_1_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 0UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 1UL)); VerifyOrReturn(CheckConstraintContains("attributeList", value, 2UL)); NextTest(); @@ -3595,328 +3598,336 @@ class Test_TC_CC_1_1 : public TestCommandBridge { break; case 2: ChipLogProgress(chipTool, " ***** Test Step 2 : Read the global attribute: FeatureMap\n"); - if (ShouldSkip("( CC.S.F00 || CC.S.F01 || CC.S.F02 || CC.S.F03 )")) { + if (ShouldSkip("( !CC.S.F00 && !CC.S.F01 && !CC.S.F02 && !CC.S.F03 )")) { NextTest(); return; } err = TestReadTheGlobalAttributeFeatureMap_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Read the global attribute: AttributeList\n"); - err = TestReadTheGlobalAttributeAttributeList_3(); + ChipLogProgress(chipTool, " ***** Test Step 3 : Read the global attribute: FeatureMap\n"); + if (ShouldSkip("( CC.S.F00 || CC.S.F01 || CC.S.F02 || CC.S.F03 )")) { + NextTest(); + return; + } + err = TestReadTheGlobalAttributeFeatureMap_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Read the optional attribute(CurrentHue) in AttributeList\n"); + ChipLogProgress(chipTool, " ***** Test Step 4 : Read the global attribute: AttributeList\n"); + err = TestReadTheGlobalAttributeAttributeList_4(); + break; + case 5: + ChipLogProgress(chipTool, " ***** Test Step 5 : Read the optional attribute(CurrentHue) in AttributeList\n"); if (ShouldSkip("CC.S.A0000")) { NextTest(); return; } - err = TestReadTheOptionalAttributeCurrentHueInAttributeList_4(); + err = TestReadTheOptionalAttributeCurrentHueInAttributeList_5(); break; - case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Read the optional attribute(CurrentSaturation) in AttributeList\n"); + case 6: + ChipLogProgress(chipTool, " ***** Test Step 6 : Read the optional attribute(CurrentSaturation) in AttributeList\n"); if (ShouldSkip("CC.S.A0001")) { NextTest(); return; } - err = TestReadTheOptionalAttributeCurrentSaturationInAttributeList_5(); + err = TestReadTheOptionalAttributeCurrentSaturationInAttributeList_6(); break; - case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : Read the optional attribute(RemainingTime) in AttributeList\n"); + case 7: + ChipLogProgress(chipTool, " ***** Test Step 7 : Read the optional attribute(RemainingTime) in AttributeList\n"); if (ShouldSkip("CC.S.A0002")) { NextTest(); return; } - err = TestReadTheOptionalAttributeRemainingTimeInAttributeList_6(); + err = TestReadTheOptionalAttributeRemainingTimeInAttributeList_7(); break; - case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : Read the optional attribute(CurrentX) in AttributeList\n"); + case 8: + ChipLogProgress(chipTool, " ***** Test Step 8 : Read the optional attribute(CurrentX) in AttributeList\n"); if (ShouldSkip("CC.S.A0003")) { NextTest(); return; } - err = TestReadTheOptionalAttributeCurrentXInAttributeList_7(); + err = TestReadTheOptionalAttributeCurrentXInAttributeList_8(); break; - case 8: - ChipLogProgress(chipTool, " ***** Test Step 8 : Read the optional attribute(CurrentY) in AttributeList\n"); + case 9: + ChipLogProgress(chipTool, " ***** Test Step 9 : Read the optional attribute(CurrentY) in AttributeList\n"); if (ShouldSkip("CC.S.A0004")) { NextTest(); return; } - err = TestReadTheOptionalAttributeCurrentYInAttributeList_8(); + err = TestReadTheOptionalAttributeCurrentYInAttributeList_9(); break; - case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Read the optional attribute(DriftCompensation) in AttributeList\n"); + case 10: + ChipLogProgress(chipTool, " ***** Test Step 10 : Read the optional attribute(DriftCompensation) in AttributeList\n"); if (ShouldSkip("CC.S.A0005")) { NextTest(); return; } - err = TestReadTheOptionalAttributeDriftCompensationInAttributeList_9(); + err = TestReadTheOptionalAttributeDriftCompensationInAttributeList_10(); break; - case 10: - ChipLogProgress(chipTool, " ***** Test Step 10 : Read the optional attribute(CompensationText) in AttributeList\n"); + case 11: + ChipLogProgress(chipTool, " ***** Test Step 11 : Read the optional attribute(CompensationText) in AttributeList\n"); if (ShouldSkip("CC.S.A0006")) { NextTest(); return; } - err = TestReadTheOptionalAttributeCompensationTextInAttributeList_10(); + err = TestReadTheOptionalAttributeCompensationTextInAttributeList_11(); break; - case 11: + case 12: ChipLogProgress( - chipTool, " ***** Test Step 11 : Read the optional attribute(ColorTemperatureMireds) in AttributeList\n"); + chipTool, " ***** Test Step 12 : Read the optional attribute(ColorTemperatureMireds) in AttributeList\n"); if (ShouldSkip("CC.S.A0007")) { NextTest(); return; } - err = TestReadTheOptionalAttributeColorTemperatureMiredsInAttributeList_11(); + err = TestReadTheOptionalAttributeColorTemperatureMiredsInAttributeList_12(); break; - case 12: - ChipLogProgress(chipTool, " ***** Test Step 12 : Read the optional attribute(EnhancedCurrentHue) in AttributeList\n"); + case 13: + ChipLogProgress(chipTool, " ***** Test Step 13 : Read the optional attribute(EnhancedCurrentHue) in AttributeList\n"); if (ShouldSkip("CC.S.A4000")) { NextTest(); return; } - err = TestReadTheOptionalAttributeEnhancedCurrentHueInAttributeList_12(); + err = TestReadTheOptionalAttributeEnhancedCurrentHueInAttributeList_13(); break; - case 13: - ChipLogProgress(chipTool, " ***** Test Step 13 : Read the optional attribute(ColorLoopActive) in AttributeList\n"); + case 14: + ChipLogProgress(chipTool, " ***** Test Step 14 : Read the optional attribute(ColorLoopActive) in AttributeList\n"); if (ShouldSkip("CC.S.A4002")) { NextTest(); return; } - err = TestReadTheOptionalAttributeColorLoopActiveInAttributeList_13(); + err = TestReadTheOptionalAttributeColorLoopActiveInAttributeList_14(); break; - case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : Read the optional attribute(ColorLoopDirection) in AttributeList\n"); + case 15: + ChipLogProgress(chipTool, " ***** Test Step 15 : Read the optional attribute(ColorLoopDirection) in AttributeList\n"); if (ShouldSkip("CC.S.A4003")) { NextTest(); return; } - err = TestReadTheOptionalAttributeColorLoopDirectionInAttributeList_14(); + err = TestReadTheOptionalAttributeColorLoopDirectionInAttributeList_15(); break; - case 15: - ChipLogProgress(chipTool, " ***** Test Step 15 : Read the optional attribute(ColorLoopTime) in AttributeList\n"); + case 16: + ChipLogProgress(chipTool, " ***** Test Step 16 : Read the optional attribute(ColorLoopTime) in AttributeList\n"); if (ShouldSkip("CC.S.A4004")) { NextTest(); return; } - err = TestReadTheOptionalAttributeColorLoopTimeInAttributeList_15(); + err = TestReadTheOptionalAttributeColorLoopTimeInAttributeList_16(); break; - case 16: + case 17: ChipLogProgress( - chipTool, " ***** Test Step 16 : Read the optional attribute(ColorLoopStartEnhancedHue) in AttributeList\n"); + chipTool, " ***** Test Step 17 : Read the optional attribute(ColorLoopStartEnhancedHue) in AttributeList\n"); if (ShouldSkip("CC.S.A4005")) { NextTest(); return; } - err = TestReadTheOptionalAttributeColorLoopStartEnhancedHueInAttributeList_16(); + err = TestReadTheOptionalAttributeColorLoopStartEnhancedHueInAttributeList_17(); break; - case 17: + case 18: ChipLogProgress( - chipTool, " ***** Test Step 17 : Read the optional attribute(ColorLoopStoredEnhancedHue) in AttributeList\n"); + chipTool, " ***** Test Step 18 : Read the optional attribute(ColorLoopStoredEnhancedHue) in AttributeList\n"); if (ShouldSkip("CC.S.A4006")) { NextTest(); return; } - err = TestReadTheOptionalAttributeColorLoopStoredEnhancedHueInAttributeList_17(); + err = TestReadTheOptionalAttributeColorLoopStoredEnhancedHueInAttributeList_18(); break; - case 18: + case 19: ChipLogProgress( - chipTool, " ***** Test Step 18 : Read the optional attribute(ColorTempPhysicalMinMireds) in AttributeList\n"); + chipTool, " ***** Test Step 19 : Read the optional attribute(ColorTempPhysicalMinMireds) in AttributeList\n"); if (ShouldSkip("CC.S.A400b")) { NextTest(); return; } - err = TestReadTheOptionalAttributeColorTempPhysicalMinMiredsInAttributeList_18(); + err = TestReadTheOptionalAttributeColorTempPhysicalMinMiredsInAttributeList_19(); break; - case 19: + case 20: ChipLogProgress( - chipTool, " ***** Test Step 19 : Read the optional attribute(ColorTempPhysicalMaxMireds) in AttributeList\n"); + chipTool, " ***** Test Step 20 : Read the optional attribute(ColorTempPhysicalMaxMireds) in AttributeList\n"); if (ShouldSkip("CC.S.A400c")) { NextTest(); return; } - err = TestReadTheOptionalAttributeColorTempPhysicalMaxMiredsInAttributeList_19(); + err = TestReadTheOptionalAttributeColorTempPhysicalMaxMiredsInAttributeList_20(); break; - case 20: + case 21: ChipLogProgress( - chipTool, " ***** Test Step 20 : Read the optional attribute(CoupleColorTempToLevelMinMireds) in AttributeList\n"); + chipTool, " ***** Test Step 21 : Read the optional attribute(CoupleColorTempToLevelMinMireds) in AttributeList\n"); if (ShouldSkip("CC.S.A400d")) { NextTest(); return; } - err = TestReadTheOptionalAttributeCoupleColorTempToLevelMinMiredsInAttributeList_20(); + err = TestReadTheOptionalAttributeCoupleColorTempToLevelMinMiredsInAttributeList_21(); break; - case 21: + case 22: ChipLogProgress( - chipTool, " ***** Test Step 21 : Read the optional attribute(StartUpColorTemperatureMireds) in AttributeList\n"); + chipTool, " ***** Test Step 22 : Read the optional attribute(StartUpColorTemperatureMireds) in AttributeList\n"); if (ShouldSkip("CC.S.A4010")) { NextTest(); return; } - err = TestReadTheOptionalAttributeStartUpColorTemperatureMiredsInAttributeList_21(); + err = TestReadTheOptionalAttributeStartUpColorTemperatureMiredsInAttributeList_22(); break; - case 22: - ChipLogProgress(chipTool, " ***** Test Step 22 : Read the optional command(MoveToHue) in AcceptedCommandList\n"); + case 23: + ChipLogProgress(chipTool, " ***** Test Step 23 : Read the optional command(MoveToHue) in AcceptedCommandList\n"); if (ShouldSkip("CC.S.C00.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandMoveToHueInAcceptedCommandList_22(); + err = TestReadTheOptionalCommandMoveToHueInAcceptedCommandList_23(); break; - case 23: - ChipLogProgress(chipTool, " ***** Test Step 23 : Read the optional command(MoveHue) in AcceptedCommandList\n"); + case 24: + ChipLogProgress(chipTool, " ***** Test Step 24 : Read the optional command(MoveHue) in AcceptedCommandList\n"); if (ShouldSkip("CC.S.C01.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandMoveHueInAcceptedCommandList_23(); + err = TestReadTheOptionalCommandMoveHueInAcceptedCommandList_24(); break; - case 24: - ChipLogProgress(chipTool, " ***** Test Step 24 : Read the optional command(StepHue) in AcceptedCommandList\n"); + case 25: + ChipLogProgress(chipTool, " ***** Test Step 25 : Read the optional command(StepHue) in AcceptedCommandList\n"); if (ShouldSkip("CC.S.C02.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandStepHueInAcceptedCommandList_24(); + err = TestReadTheOptionalCommandStepHueInAcceptedCommandList_25(); break; - case 25: - ChipLogProgress(chipTool, " ***** Test Step 25 : Read the optional command(MoveToSaturation) in AcceptedCommandList\n"); + case 26: + ChipLogProgress(chipTool, " ***** Test Step 26 : Read the optional command(MoveToSaturation) in AcceptedCommandList\n"); if (ShouldSkip("CC.S.C03.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandMoveToSaturationInAcceptedCommandList_25(); + err = TestReadTheOptionalCommandMoveToSaturationInAcceptedCommandList_26(); break; - case 26: - ChipLogProgress(chipTool, " ***** Test Step 26 : Read the optional command(MoveSaturation) in AcceptedCommandList\n"); + case 27: + ChipLogProgress(chipTool, " ***** Test Step 27 : Read the optional command(MoveSaturation) in AcceptedCommandList\n"); if (ShouldSkip("CC.S.C04.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandMoveSaturationInAcceptedCommandList_26(); + err = TestReadTheOptionalCommandMoveSaturationInAcceptedCommandList_27(); break; - case 27: - ChipLogProgress(chipTool, " ***** Test Step 27 : Read the optional command(StepSaturation) in AcceptedCommandList\n"); + case 28: + ChipLogProgress(chipTool, " ***** Test Step 28 : Read the optional command(StepSaturation) in AcceptedCommandList\n"); if (ShouldSkip("CC.S.C05.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandStepSaturationInAcceptedCommandList_27(); + err = TestReadTheOptionalCommandStepSaturationInAcceptedCommandList_28(); break; - case 28: + case 29: ChipLogProgress( - chipTool, " ***** Test Step 28 : Read the optional command(MoveToHueAndSaturation) in AcceptedCommandList\n"); + chipTool, " ***** Test Step 29 : Read the optional command(MoveToHueAndSaturation) in AcceptedCommandList\n"); if (ShouldSkip("CC.S.C06.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandMoveToHueAndSaturationInAcceptedCommandList_28(); + err = TestReadTheOptionalCommandMoveToHueAndSaturationInAcceptedCommandList_29(); break; - case 29: - ChipLogProgress(chipTool, " ***** Test Step 29 : Read the optional command(MoveToColor) in AcceptedCommandList\n"); + case 30: + ChipLogProgress(chipTool, " ***** Test Step 30 : Read the optional command(MoveToColor) in AcceptedCommandList\n"); if (ShouldSkip("CC.S.C07.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandMoveToColorInAcceptedCommandList_29(); + err = TestReadTheOptionalCommandMoveToColorInAcceptedCommandList_30(); break; - case 30: - ChipLogProgress(chipTool, " ***** Test Step 30 : Read the optional command(MoveColor) in AcceptedCommandList\n"); + case 31: + ChipLogProgress(chipTool, " ***** Test Step 31 : Read the optional command(MoveColor) in AcceptedCommandList\n"); if (ShouldSkip("CC.S.C08.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandMoveColorInAcceptedCommandList_30(); + err = TestReadTheOptionalCommandMoveColorInAcceptedCommandList_31(); break; - case 31: - ChipLogProgress(chipTool, " ***** Test Step 31 : Read the optional command(StepColor) in AcceptedCommandList\n"); + case 32: + ChipLogProgress(chipTool, " ***** Test Step 32 : Read the optional command(StepColor) in AcceptedCommandList\n"); if (ShouldSkip("CC.S.C09.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandStepColorInAcceptedCommandList_31(); + err = TestReadTheOptionalCommandStepColorInAcceptedCommandList_32(); break; - case 32: + case 33: ChipLogProgress( - chipTool, " ***** Test Step 32 : Read the optional command(MoveToColorTemperature) in AcceptedCommandList\n"); + chipTool, " ***** Test Step 33 : Read the optional command(MoveToColorTemperature) in AcceptedCommandList\n"); if (ShouldSkip("CC.S.C0a.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandMoveToColorTemperatureInAcceptedCommandList_32(); + err = TestReadTheOptionalCommandMoveToColorTemperatureInAcceptedCommandList_33(); break; - case 33: + case 34: ChipLogProgress( - chipTool, " ***** Test Step 33 : Read the optional command(EnhancedMoveToHue) in AcceptedCommandList\n"); + chipTool, " ***** Test Step 34 : Read the optional command(EnhancedMoveToHue) in AcceptedCommandList\n"); if (ShouldSkip("CC.S.C40.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandEnhancedMoveToHueInAcceptedCommandList_33(); + err = TestReadTheOptionalCommandEnhancedMoveToHueInAcceptedCommandList_34(); break; - case 34: - ChipLogProgress(chipTool, " ***** Test Step 34 : Read the optional command(EnhancedMoveHue) in AcceptedCommandList\n"); + case 35: + ChipLogProgress(chipTool, " ***** Test Step 35 : Read the optional command(EnhancedMoveHue) in AcceptedCommandList\n"); if (ShouldSkip("CC.S.C41.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandEnhancedMoveHueInAcceptedCommandList_34(); + err = TestReadTheOptionalCommandEnhancedMoveHueInAcceptedCommandList_35(); break; - case 35: - ChipLogProgress(chipTool, " ***** Test Step 35 : Read the optional command(EnhancedStepHue) in AcceptedCommandList\n"); + case 36: + ChipLogProgress(chipTool, " ***** Test Step 36 : Read the optional command(EnhancedStepHue) in AcceptedCommandList\n"); if (ShouldSkip("CC.S.C42.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandEnhancedStepHueInAcceptedCommandList_35(); + err = TestReadTheOptionalCommandEnhancedStepHueInAcceptedCommandList_36(); break; - case 36: + case 37: ChipLogProgress(chipTool, - " ***** Test Step 36 : Read the optional command(EnhancedMoveToHueAndSaturation) in AcceptedCommandList\n"); + " ***** Test Step 37 : Read the optional command(EnhancedMoveToHueAndSaturation) in AcceptedCommandList\n"); if (ShouldSkip("CC.S.C43.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandEnhancedMoveToHueAndSaturationInAcceptedCommandList_36(); + err = TestReadTheOptionalCommandEnhancedMoveToHueAndSaturationInAcceptedCommandList_37(); break; - case 37: - ChipLogProgress(chipTool, " ***** Test Step 37 : Read the optional command(ColorLoopSet) in AcceptedCommandList\n"); + case 38: + ChipLogProgress(chipTool, " ***** Test Step 38 : Read the optional command(ColorLoopSet) in AcceptedCommandList\n"); if (ShouldSkip("CC.S.C44.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandColorLoopSetInAcceptedCommandList_37(); + err = TestReadTheOptionalCommandColorLoopSetInAcceptedCommandList_38(); break; - case 38: - ChipLogProgress(chipTool, " ***** Test Step 38 : Read the optional command(StopMoveStep) in AcceptedCommandList\n"); + case 39: + ChipLogProgress(chipTool, " ***** Test Step 39 : Read the optional command(StopMoveStep) in AcceptedCommandList\n"); if (ShouldSkip("CC.S.C47.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandStopMoveStepInAcceptedCommandList_38(); + err = TestReadTheOptionalCommandStopMoveStepInAcceptedCommandList_39(); break; - case 39: + case 40: ChipLogProgress( - chipTool, " ***** Test Step 39 : Read the optional command(MoveColorTemperature) in AcceptedCommandList\n"); + chipTool, " ***** Test Step 40 : Read the optional command(MoveColorTemperature) in AcceptedCommandList\n"); if (ShouldSkip("CC.S.C4b.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandMoveColorTemperatureInAcceptedCommandList_39(); + err = TestReadTheOptionalCommandMoveColorTemperatureInAcceptedCommandList_40(); break; - case 40: + case 41: ChipLogProgress( - chipTool, " ***** Test Step 40 : Read the optional command(StepColorTemperature) in AcceptedCommandList\n"); + chipTool, " ***** Test Step 41 : Read the optional command(StepColorTemperature) in AcceptedCommandList\n"); if (ShouldSkip("CC.S.C4c.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandStepColorTemperatureInAcceptedCommandList_40(); + err = TestReadTheOptionalCommandStepColorTemperatureInAcceptedCommandList_41(); break; - case 41: - ChipLogProgress(chipTool, " ***** Test Step 41 : Read the global attribute: GeneratedCommandList\n"); - err = TestReadTheGlobalAttributeGeneratedCommandList_41(); + case 42: + ChipLogProgress(chipTool, " ***** Test Step 42 : Read the global attribute: GeneratedCommandList\n"); + err = TestReadTheGlobalAttributeGeneratedCommandList_42(); break; } @@ -4055,6 +4066,9 @@ class Test_TC_CC_1_1 : public TestCommandBridge { case 41: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 42: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -4068,7 +4082,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 42; + const uint16_t mTestCount = 43; chip::Optional mNodeId; chip::Optional mCluster; @@ -4120,8 +4134,33 @@ class Test_TC_CC_1_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + { + id actualValue = value; + VerifyOrReturn(CheckValue("FeatureMap", actualValue, 0UL)); + } + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintMinValue("featureMap", [value unsignedIntValue], 0UL)); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadTheGlobalAttributeFeatureMap_3() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeFeatureMapWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the global attribute: FeatureMap Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + VerifyOrReturn(CheckConstraintMinValue("featureMap", [value unsignedIntValue], 1UL)); VerifyOrReturn(CheckConstraintMaxValue("featureMap", [value unsignedIntValue], 31UL)); NextTest(); @@ -4130,7 +4169,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheGlobalAttributeAttributeList_3() + CHIP_ERROR TestReadTheGlobalAttributeAttributeList_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4160,7 +4199,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeCurrentHueInAttributeList_4() + CHIP_ERROR TestReadTheOptionalAttributeCurrentHueInAttributeList_5() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4182,7 +4221,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeCurrentSaturationInAttributeList_5() + CHIP_ERROR TestReadTheOptionalAttributeCurrentSaturationInAttributeList_6() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4204,7 +4243,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeRemainingTimeInAttributeList_6() + CHIP_ERROR TestReadTheOptionalAttributeRemainingTimeInAttributeList_7() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4226,7 +4265,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeCurrentXInAttributeList_7() + CHIP_ERROR TestReadTheOptionalAttributeCurrentXInAttributeList_8() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4248,7 +4287,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeCurrentYInAttributeList_8() + CHIP_ERROR TestReadTheOptionalAttributeCurrentYInAttributeList_9() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4270,7 +4309,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeDriftCompensationInAttributeList_9() + CHIP_ERROR TestReadTheOptionalAttributeDriftCompensationInAttributeList_10() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4292,7 +4331,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeCompensationTextInAttributeList_10() + CHIP_ERROR TestReadTheOptionalAttributeCompensationTextInAttributeList_11() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4314,7 +4353,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeColorTemperatureMiredsInAttributeList_11() + CHIP_ERROR TestReadTheOptionalAttributeColorTemperatureMiredsInAttributeList_12() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4336,7 +4375,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeEnhancedCurrentHueInAttributeList_12() + CHIP_ERROR TestReadTheOptionalAttributeEnhancedCurrentHueInAttributeList_13() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4358,7 +4397,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeColorLoopActiveInAttributeList_13() + CHIP_ERROR TestReadTheOptionalAttributeColorLoopActiveInAttributeList_14() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4380,7 +4419,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeColorLoopDirectionInAttributeList_14() + CHIP_ERROR TestReadTheOptionalAttributeColorLoopDirectionInAttributeList_15() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4402,7 +4441,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeColorLoopTimeInAttributeList_15() + CHIP_ERROR TestReadTheOptionalAttributeColorLoopTimeInAttributeList_16() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4424,7 +4463,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeColorLoopStartEnhancedHueInAttributeList_16() + CHIP_ERROR TestReadTheOptionalAttributeColorLoopStartEnhancedHueInAttributeList_17() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4446,7 +4485,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeColorLoopStoredEnhancedHueInAttributeList_17() + CHIP_ERROR TestReadTheOptionalAttributeColorLoopStoredEnhancedHueInAttributeList_18() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4468,7 +4507,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeColorTempPhysicalMinMiredsInAttributeList_18() + CHIP_ERROR TestReadTheOptionalAttributeColorTempPhysicalMinMiredsInAttributeList_19() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4490,7 +4529,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeColorTempPhysicalMaxMiredsInAttributeList_19() + CHIP_ERROR TestReadTheOptionalAttributeColorTempPhysicalMaxMiredsInAttributeList_20() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4512,7 +4551,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeCoupleColorTempToLevelMinMiredsInAttributeList_20() + CHIP_ERROR TestReadTheOptionalAttributeCoupleColorTempToLevelMinMiredsInAttributeList_21() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4534,7 +4573,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeStartUpColorTemperatureMiredsInAttributeList_21() + CHIP_ERROR TestReadTheOptionalAttributeStartUpColorTemperatureMiredsInAttributeList_22() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4556,7 +4595,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandMoveToHueInAcceptedCommandList_22() + CHIP_ERROR TestReadTheOptionalCommandMoveToHueInAcceptedCommandList_23() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4578,7 +4617,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandMoveHueInAcceptedCommandList_23() + CHIP_ERROR TestReadTheOptionalCommandMoveHueInAcceptedCommandList_24() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4600,7 +4639,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandStepHueInAcceptedCommandList_24() + CHIP_ERROR TestReadTheOptionalCommandStepHueInAcceptedCommandList_25() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4622,7 +4661,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandMoveToSaturationInAcceptedCommandList_25() + CHIP_ERROR TestReadTheOptionalCommandMoveToSaturationInAcceptedCommandList_26() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4644,7 +4683,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandMoveSaturationInAcceptedCommandList_26() + CHIP_ERROR TestReadTheOptionalCommandMoveSaturationInAcceptedCommandList_27() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4666,7 +4705,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandStepSaturationInAcceptedCommandList_27() + CHIP_ERROR TestReadTheOptionalCommandStepSaturationInAcceptedCommandList_28() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4688,7 +4727,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandMoveToHueAndSaturationInAcceptedCommandList_28() + CHIP_ERROR TestReadTheOptionalCommandMoveToHueAndSaturationInAcceptedCommandList_29() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4710,7 +4749,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandMoveToColorInAcceptedCommandList_29() + CHIP_ERROR TestReadTheOptionalCommandMoveToColorInAcceptedCommandList_30() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4732,7 +4771,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandMoveColorInAcceptedCommandList_30() + CHIP_ERROR TestReadTheOptionalCommandMoveColorInAcceptedCommandList_31() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4754,7 +4793,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandStepColorInAcceptedCommandList_31() + CHIP_ERROR TestReadTheOptionalCommandStepColorInAcceptedCommandList_32() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4776,7 +4815,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandMoveToColorTemperatureInAcceptedCommandList_32() + CHIP_ERROR TestReadTheOptionalCommandMoveToColorTemperatureInAcceptedCommandList_33() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4798,7 +4837,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandEnhancedMoveToHueInAcceptedCommandList_33() + CHIP_ERROR TestReadTheOptionalCommandEnhancedMoveToHueInAcceptedCommandList_34() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4820,7 +4859,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandEnhancedMoveHueInAcceptedCommandList_34() + CHIP_ERROR TestReadTheOptionalCommandEnhancedMoveHueInAcceptedCommandList_35() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4842,7 +4881,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandEnhancedStepHueInAcceptedCommandList_35() + CHIP_ERROR TestReadTheOptionalCommandEnhancedStepHueInAcceptedCommandList_36() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4864,7 +4903,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandEnhancedMoveToHueAndSaturationInAcceptedCommandList_36() + CHIP_ERROR TestReadTheOptionalCommandEnhancedMoveToHueAndSaturationInAcceptedCommandList_37() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4886,7 +4925,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandColorLoopSetInAcceptedCommandList_37() + CHIP_ERROR TestReadTheOptionalCommandColorLoopSetInAcceptedCommandList_38() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4908,7 +4947,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandStopMoveStepInAcceptedCommandList_38() + CHIP_ERROR TestReadTheOptionalCommandStopMoveStepInAcceptedCommandList_39() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4930,7 +4969,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandMoveColorTemperatureInAcceptedCommandList_39() + CHIP_ERROR TestReadTheOptionalCommandMoveColorTemperatureInAcceptedCommandList_40() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4952,7 +4991,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandStepColorTemperatureInAcceptedCommandList_40() + CHIP_ERROR TestReadTheOptionalCommandStepColorTemperatureInAcceptedCommandList_41() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4974,7 +5013,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheGlobalAttributeGeneratedCommandList_41() + CHIP_ERROR TestReadTheGlobalAttributeGeneratedCommandList_42() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -21305,6 +21344,7 @@ class Test_TC_DGGEN_1_1 : public TestCommandBridge { VerifyOrReturn(CheckConstraintContains("attributeList", value, 65528UL)); VerifyOrReturn(CheckConstraintContains("attributeList", value, 65529UL)); VerifyOrReturn(CheckConstraintContains("attributeList", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65532UL)); VerifyOrReturn(CheckConstraintContains("attributeList", value, 65533UL)); NextTest(); @@ -24279,92 +24319,100 @@ class Test_TC_LVL_1_1 : public TestCommandBridge { err = TestReadTheGlobalAttributeFeatureMap_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Read the global attribute: AttributeList\n"); - err = TestReadTheGlobalAttributeAttributeList_3(); + ChipLogProgress(chipTool, " ***** Test Step 3 : Read the global attribute: FeatureMap\n"); + if (ShouldSkip(" !LVL.S.F00 && !LVL.S.F01 && !LVL.S.F02 ")) { + NextTest(); + return; + } + err = TestReadTheGlobalAttributeFeatureMap_3(); break; case 4: + ChipLogProgress(chipTool, " ***** Test Step 4 : Read the global attribute: AttributeList\n"); + err = TestReadTheGlobalAttributeAttributeList_4(); + break; + case 5: ChipLogProgress(chipTool, - " ***** Test Step 4 : Read the optional attribute(StartUpCurrentLevel and RemainingTime) in AttributeList\n"); + " ***** Test Step 5 : Read the optional attribute(StartUpCurrentLevel and RemainingTime) in AttributeList\n"); if (ShouldSkip("LVL.S.F01")) { NextTest(); return; } - err = TestReadTheOptionalAttributeStartUpCurrentLevelAndRemainingTimeInAttributeList_4(); + err = TestReadTheOptionalAttributeStartUpCurrentLevelAndRemainingTimeInAttributeList_5(); break; - case 5: + case 6: ChipLogProgress(chipTool, - " ***** Test Step 5 : Read the optional attribute(CurrentFrequency, MinFrequency and MinFrequency) in " + " ***** Test Step 6 : Read the optional attribute(CurrentFrequency, MinFrequency and MinFrequency) in " "AttributeList\n"); if (ShouldSkip("LVL.S.F02")) { NextTest(); return; } - err = TestReadTheOptionalAttributeCurrentFrequencyMinFrequencyAndMinFrequencyInAttributeList_5(); + err = TestReadTheOptionalAttributeCurrentFrequencyMinFrequencyAndMinFrequencyInAttributeList_6(); break; - case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : Read the optional attribute(MinLevel) in AttributeList\n"); + case 7: + ChipLogProgress(chipTool, " ***** Test Step 7 : Read the optional attribute(MinLevel) in AttributeList\n"); if (ShouldSkip("LVL.S.A0002")) { NextTest(); return; } - err = TestReadTheOptionalAttributeMinLevelInAttributeList_6(); + err = TestReadTheOptionalAttributeMinLevelInAttributeList_7(); break; - case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : Read the optional attribute(MaxLevel) in AttributeList\n"); + case 8: + ChipLogProgress(chipTool, " ***** Test Step 8 : Read the optional attribute(MaxLevel) in AttributeList\n"); if (ShouldSkip("LVL.S.A0003")) { NextTest(); return; } - err = TestReadTheOptionalAttributeMaxLevelInAttributeList_7(); + err = TestReadTheOptionalAttributeMaxLevelInAttributeList_8(); break; - case 8: - ChipLogProgress(chipTool, " ***** Test Step 8 : Read the optional attribute(OnOffTransitionTime) in AttributeList\n"); + case 9: + ChipLogProgress(chipTool, " ***** Test Step 9 : Read the optional attribute(OnOffTransitionTime) in AttributeList\n"); if (ShouldSkip("LVL.S.A0010")) { NextTest(); return; } - err = TestReadTheOptionalAttributeOnOffTransitionTimeInAttributeList_8(); + err = TestReadTheOptionalAttributeOnOffTransitionTimeInAttributeList_9(); break; - case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Read the optional attribute(OnTransitionTime) in AttributeList\n"); + case 10: + ChipLogProgress(chipTool, " ***** Test Step 10 : Read the optional attribute(OnTransitionTime) in AttributeList\n"); if (ShouldSkip("LVL.S.A0012")) { NextTest(); return; } - err = TestReadTheOptionalAttributeOnTransitionTimeInAttributeList_9(); + err = TestReadTheOptionalAttributeOnTransitionTimeInAttributeList_10(); break; - case 10: - ChipLogProgress(chipTool, " ***** Test Step 10 : Read the optional attribute(OffTransitionTime) in AttributeList\n"); + case 11: + ChipLogProgress(chipTool, " ***** Test Step 11 : Read the optional attribute(OffTransitionTime) in AttributeList\n"); if (ShouldSkip("LVL.S.A0013")) { NextTest(); return; } - err = TestReadTheOptionalAttributeOffTransitionTimeInAttributeList_10(); + err = TestReadTheOptionalAttributeOffTransitionTimeInAttributeList_11(); break; - case 11: - ChipLogProgress(chipTool, " ***** Test Step 11 : Read the optional attribute(DefaultMoveRate) in AttributeList\n"); + case 12: + ChipLogProgress(chipTool, " ***** Test Step 12 : Read the optional attribute(DefaultMoveRate) in AttributeList\n"); if (ShouldSkip("LVL.S.A0014")) { NextTest(); return; } - err = TestReadTheOptionalAttributeDefaultMoveRateInAttributeList_11(); - break; - case 12: - ChipLogProgress(chipTool, " ***** Test Step 12 : Read the global attribute: AcceptedCommandList\n"); - err = TestReadTheGlobalAttributeAcceptedCommandList_12(); + err = TestReadTheOptionalAttributeDefaultMoveRateInAttributeList_12(); break; case 13: + ChipLogProgress(chipTool, " ***** Test Step 13 : Read the global attribute: AcceptedCommandList\n"); + err = TestReadTheGlobalAttributeAcceptedCommandList_13(); + break; + case 14: ChipLogProgress( - chipTool, " ***** Test Step 13 : Read the Feature-dependent(LVL.S.F02) attribute in AcceptedCommandList\n"); + chipTool, " ***** Test Step 14 : Read the Feature-dependent(LVL.S.F02) attribute in AcceptedCommandList\n"); if (ShouldSkip("LVL.S.F02")) { NextTest(); return; } - err = TestReadTheFeatureDependentLVLSF02AttributeInAcceptedCommandList_13(); + err = TestReadTheFeatureDependentLVLSF02AttributeInAcceptedCommandList_14(); break; - case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : Read the global attribute: GeneratedCommandList\n"); - err = TestReadTheGlobalAttributeGeneratedCommandList_14(); + case 15: + ChipLogProgress(chipTool, " ***** Test Step 15 : Read the global attribute: GeneratedCommandList\n"); + err = TestReadTheGlobalAttributeGeneratedCommandList_15(); break; } @@ -24422,6 +24470,9 @@ class Test_TC_LVL_1_1 : public TestCommandBridge { case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 15: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -24435,7 +24486,7 @@ class Test_TC_LVL_1_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 15; + const uint16_t mTestCount = 16; chip::Optional mNodeId; chip::Optional mCluster; @@ -24488,7 +24539,7 @@ class Test_TC_LVL_1_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintMinValue("featureMap", [value unsignedIntValue], 0UL)); + VerifyOrReturn(CheckConstraintMinValue("featureMap", [value unsignedIntValue], 1UL)); VerifyOrReturn(CheckConstraintMaxValue("featureMap", [value unsignedIntValue], 7UL)); NextTest(); @@ -24497,7 +24548,32 @@ class Test_TC_LVL_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheGlobalAttributeAttributeList_3() + CHIP_ERROR TestReadTheGlobalAttributeFeatureMap_3() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeFeatureMapWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the global attribute: FeatureMap Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("FeatureMap", actualValue, 0UL)); + } + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadTheGlobalAttributeAttributeList_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -24514,6 +24590,11 @@ class Test_TC_LVL_1_1 : public TestCommandBridge { VerifyOrReturn(CheckConstraintContains("attributeList", value, 0UL)); VerifyOrReturn(CheckConstraintContains("attributeList", value, 15UL)); VerifyOrReturn(CheckConstraintContains("attributeList", value, 17UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65532UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65533UL)); NextTest(); }]; @@ -24521,7 +24602,7 @@ class Test_TC_LVL_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeStartUpCurrentLevelAndRemainingTimeInAttributeList_4() + CHIP_ERROR TestReadTheOptionalAttributeStartUpCurrentLevelAndRemainingTimeInAttributeList_5() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -24544,7 +24625,7 @@ class Test_TC_LVL_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeCurrentFrequencyMinFrequencyAndMinFrequencyInAttributeList_5() + CHIP_ERROR TestReadTheOptionalAttributeCurrentFrequencyMinFrequencyAndMinFrequencyInAttributeList_6() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -24568,7 +24649,7 @@ class Test_TC_LVL_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeMinLevelInAttributeList_6() + CHIP_ERROR TestReadTheOptionalAttributeMinLevelInAttributeList_7() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -24590,7 +24671,7 @@ class Test_TC_LVL_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeMaxLevelInAttributeList_7() + CHIP_ERROR TestReadTheOptionalAttributeMaxLevelInAttributeList_8() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -24612,7 +24693,7 @@ class Test_TC_LVL_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeOnOffTransitionTimeInAttributeList_8() + CHIP_ERROR TestReadTheOptionalAttributeOnOffTransitionTimeInAttributeList_9() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -24634,7 +24715,7 @@ class Test_TC_LVL_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeOnTransitionTimeInAttributeList_9() + CHIP_ERROR TestReadTheOptionalAttributeOnTransitionTimeInAttributeList_10() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -24656,7 +24737,7 @@ class Test_TC_LVL_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeOffTransitionTimeInAttributeList_10() + CHIP_ERROR TestReadTheOptionalAttributeOffTransitionTimeInAttributeList_11() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -24678,7 +24759,7 @@ class Test_TC_LVL_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeDefaultMoveRateInAttributeList_11() + CHIP_ERROR TestReadTheOptionalAttributeDefaultMoveRateInAttributeList_12() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -24700,7 +24781,7 @@ class Test_TC_LVL_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheGlobalAttributeAcceptedCommandList_12() + CHIP_ERROR TestReadTheGlobalAttributeAcceptedCommandList_13() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -24729,7 +24810,7 @@ class Test_TC_LVL_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheFeatureDependentLVLSF02AttributeInAcceptedCommandList_13() + CHIP_ERROR TestReadTheFeatureDependentLVLSF02AttributeInAcceptedCommandList_14() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -24751,7 +24832,7 @@ class Test_TC_LVL_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheGlobalAttributeGeneratedCommandList_14() + CHIP_ERROR TestReadTheGlobalAttributeGeneratedCommandList_15() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -26499,345 +26580,337 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { err = TestCheckOnOffAttributeValueIsTrueAfterOnCommand_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : TH writes 0 to the Options attribute\n"); - if (ShouldSkip("LVL.S.A000f")) { + ChipLogProgress(chipTool, " ***** Test Step 3 : Precondition: write default value of OnOffTransitionTime attribute\n"); + if (ShouldSkip("LVL.S.A0010")) { NextTest(); return; } - err = TestThWrites0ToTheOptionsAttribute_3(); + err = TestPreconditionWriteDefaultValueOfOnOffTransitionTimeAttribute_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : TH sends Off command to DUT\n"); - if (ShouldSkip("LVL.S.C04.Rsp && OO.S.C00.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 4 : TH writes 0 to the Options attribute\n"); + if (ShouldSkip("LVL.S.A000f")) { NextTest(); return; } - err = TestThSendsOffCommandToDut_4(); + err = TestThWrites0ToTheOptionsAttribute_4(); break; case 5: + ChipLogProgress(chipTool, " ***** Test Step 5 : TH sends Off command to DUT\n"); + if (ShouldSkip("LVL.S.C04.Rsp && OO.S.C00.Rsp")) { + NextTest(); + return; + } + err = TestThSendsOffCommandToDut_5(); + break; + case 6: ChipLogProgress(chipTool, - " ***** Test Step 5 : TH sends a MoveToLevelWithOnOff command to DUT, with Level =50 and TransitionTime =0 " + " ***** Test Step 6 : TH sends a MoveToLevelWithOnOff command to DUT, with Level =50 and TransitionTime =0 " "(immediate)\n"); if (ShouldSkip("LVL.S.C04.Rsp")) { NextTest(); return; } - err = TestThSendsAMoveToLevelWithOnOffCommandToDutWithLevel50AndTransitionTime0Immediate_5(); + err = TestThSendsAMoveToLevelWithOnOffCommandToDutWithLevel50AndTransitionTime0Immediate_6(); break; - case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : TH reads OnOff attribute (On/Off cluster) from DUT\n"); + case 7: + ChipLogProgress(chipTool, " ***** Test Step 7 : TH reads OnOff attribute (On/Off cluster) from DUT\n"); if (ShouldSkip("OO.S.A0000 && LVL.S.C04.Rsp")) { NextTest(); return; } - err = TestThReadsOnOffAttributeOnOffClusterFromDut_6(); + err = TestThReadsOnOffAttributeOnOffClusterFromDut_7(); break; - case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : TH reads CurrentLevel attribute from DUT\n"); + case 8: + ChipLogProgress(chipTool, " ***** Test Step 8 : TH reads CurrentLevel attribute from DUT\n"); if (ShouldSkip("LVL.S.C04.Rsp && LVL.S.A0000")) { NextTest(); return; } - err = TestThReadsCurrentLevelAttributeFromDut_7(); + err = TestThReadsCurrentLevelAttributeFromDut_8(); break; - case 8: - ChipLogProgress(chipTool, " ***** Test Step 8 : TH sends On command to DUT\n"); + case 9: + ChipLogProgress(chipTool, " ***** Test Step 9 : TH sends On command to DUT\n"); if (ShouldSkip("LVL.S.C04.Rsp && OO.S.C01.Rsp")) { NextTest(); return; } - err = TestThSendsOnCommandToDut_8(); + err = TestThSendsOnCommandToDut_9(); break; - case 9: + case 10: ChipLogProgress(chipTool, - " ***** Test Step 9 : TH sends a MoveToLevel command to DUT, with Level =50 and TransitionTime =0 (immediate)\n"); + " ***** Test Step 10 : TH sends a MoveToLevel command to DUT, with Level =50 and TransitionTime =0 (immediate)\n"); if (ShouldSkip("LVL.S.C00.Rsp")) { NextTest(); return; } - err = TestThSendsAMoveToLevelCommandToDutWithLevel50AndTransitionTime0Immediate_9(); + err = TestThSendsAMoveToLevelCommandToDutWithLevel50AndTransitionTime0Immediate_10(); break; - case 10: - ChipLogProgress(chipTool, " ***** Test Step 10 : TH reads CurrentLevel attribute from DUT\n"); + case 11: + ChipLogProgress(chipTool, " ***** Test Step 11 : TH reads CurrentLevel attribute from DUT\n"); if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000")) { NextTest(); return; } - err = TestThReadsCurrentLevelAttributeFromDut_10(); + err = TestThReadsCurrentLevelAttributeFromDut_11(); break; - case 11: + case 12: ChipLogProgress(chipTool, - " ***** Test Step 11 : TH sends a MoveToLevel command to the DUT with Level = 200 and TransitionTime = 300 (30 s). " + " ***** Test Step 12 : TH sends a MoveToLevel command to the DUT with Level = 200 and TransitionTime = 300 (30 s). " "This means the level should increase by 150 units in 30s, so 5 units/s\n"); if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.M.VarRate")) { NextTest(); return; } - err = TestThSendsAMoveToLevelCommandToTheDutWithLevel200AndTransitionTime30030SThisMeansTheLevelShouldIncreaseBy150UnitsIn30sSo5UnitsS_11(); - break; - case 12: - ChipLogProgress(chipTool, " ***** Test Step 12 : Wait 10000ms\n"); - err = TestWait10000ms_12(); + err = TestThSendsAMoveToLevelCommandToTheDutWithLevel200AndTransitionTime30030SThisMeansTheLevelShouldIncreaseBy150UnitsIn30sSo5UnitsS_12(); break; case 13: - ChipLogProgress(chipTool, " ***** Test Step 13 : TH reads CurrentLevel attribute from DUT\n"); - if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000 && LVL.S.M.VarRate")) { - NextTest(); - return; - } - err = TestThReadsCurrentLevelAttributeFromDut_13(); + ChipLogProgress(chipTool, " ***** Test Step 13 : Wait 10000ms\n"); + err = TestWait10000ms_13(); break; case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : Wait 10000ms\n"); - err = TestWait10000ms_14(); - break; - case 15: - ChipLogProgress(chipTool, " ***** Test Step 15 : TH reads CurrentLevel attribute from DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 14 : TH reads CurrentLevel attribute from DUT\n"); if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000 && LVL.S.M.VarRate")) { NextTest(); return; } - err = TestThReadsCurrentLevelAttributeFromDut_15(); + err = TestThReadsCurrentLevelAttributeFromDut_14(); break; - case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : Wait 10000ms\n"); - err = TestWait10000ms_16(); + case 15: + ChipLogProgress(chipTool, " ***** Test Step 15 : Wait 10000ms\n"); + err = TestWait10000ms_15(); break; - case 17: - ChipLogProgress(chipTool, " ***** Test Step 17 : TH reads CurrentLevel attribute from DUT\n"); + case 16: + ChipLogProgress(chipTool, " ***** Test Step 16 : TH reads CurrentLevel attribute from DUT\n"); if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000 && LVL.S.M.VarRate")) { NextTest(); return; } - err = TestThReadsCurrentLevelAttributeFromDut_17(); + err = TestThReadsCurrentLevelAttributeFromDut_16(); break; - case 18: - ChipLogProgress(chipTool, " ***** Test Step 18 : Wait 5000ms\n"); - err = TestWait5000ms_18(); + case 17: + ChipLogProgress(chipTool, " ***** Test Step 17 : Wait 10000ms\n"); + err = TestWait10000ms_17(); break; - case 19: - ChipLogProgress(chipTool, " ***** Test Step 19 : TH reads CurrentLevel attribute from DUT\n"); + case 18: + ChipLogProgress(chipTool, " ***** Test Step 18 : TH reads CurrentLevel attribute from DUT\n"); if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000 && LVL.S.M.VarRate")) { NextTest(); return; } - err = TestThReadsCurrentLevelAttributeFromDut_19(); + err = TestThReadsCurrentLevelAttributeFromDut_18(); + break; + case 19: + ChipLogProgress(chipTool, " ***** Test Step 19 : Wait 5000ms\n"); + err = TestWait5000ms_19(); break; case 20: ChipLogProgress(chipTool, " ***** Test Step 20 : TH reads CurrentLevel attribute from DUT\n"); - if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000 && !LVL.S.M.VarRate")) { + if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000 && LVL.S.M.VarRate")) { NextTest(); return; } err = TestThReadsCurrentLevelAttributeFromDut_20(); break; case 21: - ChipLogProgress(chipTool, " ***** Test Step 21 : TH writes 0 to the Options attribute\n"); - if (ShouldSkip("LVL.S.A000f")) { + ChipLogProgress(chipTool, " ***** Test Step 21 : TH reads CurrentLevel attribute from DUT\n"); + if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000 && !LVL.S.M.VarRate")) { NextTest(); return; } - err = TestThWrites0ToTheOptionsAttribute_21(); + err = TestThReadsCurrentLevelAttributeFromDut_21(); break; case 22: - ChipLogProgress(chipTool, " ***** Test Step 22 : TH reads Options attribute\n"); + ChipLogProgress(chipTool, " ***** Test Step 22 : TH writes 0 to the Options attribute\n"); if (ShouldSkip("LVL.S.A000f")) { NextTest(); return; } - err = TestThReadsOptionsAttribute_22(); + err = TestThWrites0ToTheOptionsAttribute_22(); break; case 23: - ChipLogProgress(chipTool, " ***** Test Step 23 : TH sends On command to DUT\n"); - if (ShouldSkip("OO.S.C01.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 23 : TH reads Options attribute\n"); + if (ShouldSkip("LVL.S.A000f")) { NextTest(); return; } - err = TestThSendsOnCommandToDut_23(); + err = TestThReadsOptionsAttribute_23(); break; case 24: - ChipLogProgress(chipTool, " ***** Test Step 24 : TH sends a MoveToLevel command to the DUT with\n"); - if (ShouldSkip("LVL.S.C00.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 24 : TH sends On command to DUT\n"); + if (ShouldSkip("OO.S.C01.Rsp")) { NextTest(); return; } - err = TestThSendsAMoveToLevelCommandToTheDutWith_24(); + err = TestThSendsOnCommandToDut_24(); break; case 25: - ChipLogProgress(chipTool, " ***** Test Step 25 : TH reads CurrentLevel attribute from DUT\n"); - if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000")) { + ChipLogProgress(chipTool, " ***** Test Step 25 : TH sends a MoveToLevel command to the DUT with\n"); + if (ShouldSkip("LVL.S.C00.Rsp")) { NextTest(); return; } - err = TestThReadsCurrentLevelAttributeFromDut_25(); + err = TestThSendsAMoveToLevelCommandToTheDutWith_25(); break; case 26: - ChipLogProgress(chipTool, " ***** Test Step 26 : TH sends Off command to DUT\n"); - if (ShouldSkip("OO.S.C00.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 26 : TH reads CurrentLevel attribute from DUT\n"); + if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000")) { NextTest(); return; } - err = TestThSendsOffCommandToDut_26(); + err = TestThReadsCurrentLevelAttributeFromDut_26(); break; case 27: - ChipLogProgress(chipTool, " ***** Test Step 27 : TH sends a MoveToLevel command to the DUT with\n"); - if (ShouldSkip("LVL.S.C00.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 27 : TH sends Off command to DUT\n"); + if (ShouldSkip("OO.S.C00.Rsp")) { NextTest(); return; } - err = TestThSendsAMoveToLevelCommandToTheDutWith_27(); + err = TestThSendsOffCommandToDut_27(); break; case 28: - ChipLogProgress(chipTool, " ***** Test Step 28 : TH reads CurrentLevel attribute from DUT\n"); - if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000")) { + ChipLogProgress(chipTool, " ***** Test Step 28 : TH sends a MoveToLevel command to the DUT with\n"); + if (ShouldSkip("LVL.S.C00.Rsp")) { NextTest(); return; } - err = TestThReadsCurrentLevelAttributeFromDut_28(); + err = TestThSendsAMoveToLevelCommandToTheDutWith_28(); break; case 29: - ChipLogProgress(chipTool, " ***** Test Step 29 : TH sends a MoveToLevel command to the DUT with\n"); - if (ShouldSkip("LVL.S.C00.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 29 : TH reads CurrentLevel attribute from DUT\n"); + if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000")) { NextTest(); return; } - err = TestThSendsAMoveToLevelCommandToTheDutWith_29(); + err = TestThReadsCurrentLevelAttributeFromDut_29(); break; case 30: - ChipLogProgress(chipTool, " ***** Test Step 30 : TH reads CurrentLevel attribute from DUT\n"); - if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000")) { + ChipLogProgress(chipTool, " ***** Test Step 30 : TH sends a MoveToLevel command to the DUT with\n"); + if (ShouldSkip("LVL.S.C00.Rsp")) { NextTest(); return; } - err = TestThReadsCurrentLevelAttributeFromDut_30(); + err = TestThSendsAMoveToLevelCommandToTheDutWith_30(); break; case 31: - ChipLogProgress(chipTool, " ***** Test Step 31 : TH sends a MoveToLevel command to the DUT with\n"); - if (ShouldSkip("LVL.S.C00.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 31 : TH reads CurrentLevel attribute from DUT\n"); + if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000")) { NextTest(); return; } - err = TestThSendsAMoveToLevelCommandToTheDutWith_31(); + err = TestThReadsCurrentLevelAttributeFromDut_31(); break; case 32: - ChipLogProgress(chipTool, " ***** Test Step 32 : TH reads CurrentLevel attribute from DUT\n"); - if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000")) { + ChipLogProgress(chipTool, " ***** Test Step 32 : TH sends a MoveToLevel command to the DUT with\n"); + if (ShouldSkip("LVL.S.C00.Rsp")) { NextTest(); return; } - err = TestThReadsCurrentLevelAttributeFromDut_32(); + err = TestThSendsAMoveToLevelCommandToTheDutWith_32(); break; case 33: - ChipLogProgress(chipTool, " ***** Test Step 33 : TH writes 1 to the Options attribute\n"); - if (ShouldSkip("LVL.S.A000f")) { + ChipLogProgress(chipTool, " ***** Test Step 33 : TH reads CurrentLevel attribute from DUT\n"); + if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000")) { NextTest(); return; } - err = TestThWrites1ToTheOptionsAttribute_33(); + err = TestThReadsCurrentLevelAttributeFromDut_33(); break; case 34: - ChipLogProgress(chipTool, " ***** Test Step 34 : TH reads Options attribute\n"); + ChipLogProgress(chipTool, " ***** Test Step 34 : TH writes 1 to the Options attribute\n"); if (ShouldSkip("LVL.S.A000f")) { NextTest(); return; } - err = TestThReadsOptionsAttribute_34(); + err = TestThWrites1ToTheOptionsAttribute_34(); break; case 35: - ChipLogProgress(chipTool, " ***** Test Step 35 : TH sends On command to DUT\n"); - if (ShouldSkip("OO.S.C01.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 35 : TH reads Options attribute\n"); + if (ShouldSkip("LVL.S.A000f")) { NextTest(); return; } - err = TestThSendsOnCommandToDut_35(); + err = TestThReadsOptionsAttribute_35(); break; case 36: - ChipLogProgress(chipTool, " ***** Test Step 36 : TH sends a MoveToLevel command to the DUT with\n"); - if (ShouldSkip("LVL.S.C00.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 36 : TH sends On command to DUT\n"); + if (ShouldSkip("OO.S.C01.Rsp")) { NextTest(); return; } - err = TestThSendsAMoveToLevelCommandToTheDutWith_36(); + err = TestThSendsOnCommandToDut_36(); break; case 37: - ChipLogProgress(chipTool, " ***** Test Step 37 : TH reads CurrentLevel attribute from DUT\n"); - if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000")) { + ChipLogProgress(chipTool, " ***** Test Step 37 : TH sends a MoveToLevel command to the DUT with\n"); + if (ShouldSkip("LVL.S.C00.Rsp")) { NextTest(); return; } - err = TestThReadsCurrentLevelAttributeFromDut_37(); + err = TestThSendsAMoveToLevelCommandToTheDutWith_37(); break; case 38: - ChipLogProgress(chipTool, " ***** Test Step 38 : TH sends Off command to DUT\n"); - if (ShouldSkip("OO.S.C00.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 38 : TH reads CurrentLevel attribute from DUT\n"); + if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000")) { NextTest(); return; } - err = TestThSendsOffCommandToDut_38(); + err = TestThReadsCurrentLevelAttributeFromDut_38(); break; case 39: - ChipLogProgress(chipTool, " ***** Test Step 39 : TH sends a MoveToLevel command to the DUT with\n"); - if (ShouldSkip("LVL.S.C00.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 39 : TH sends Off command to DUT\n"); + if (ShouldSkip("OO.S.C00.Rsp")) { NextTest(); return; } - err = TestThSendsAMoveToLevelCommandToTheDutWith_39(); + err = TestThSendsOffCommandToDut_39(); break; case 40: - ChipLogProgress(chipTool, " ***** Test Step 40 : TH reads CurrentLevel attribute from DUT\n"); - if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000")) { + ChipLogProgress(chipTool, " ***** Test Step 40 : TH sends a MoveToLevel command to the DUT with\n"); + if (ShouldSkip("LVL.S.C00.Rsp")) { NextTest(); return; } - err = TestThReadsCurrentLevelAttributeFromDut_40(); + err = TestThSendsAMoveToLevelCommandToTheDutWith_40(); break; case 41: - ChipLogProgress(chipTool, " ***** Test Step 41 : TH sends a MoveToLevel command to the DUT with\n"); - if (ShouldSkip("LVL.S.C00.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 41 : TH reads CurrentLevel attribute from DUT\n"); + if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000")) { NextTest(); return; } - err = TestThSendsAMoveToLevelCommandToTheDutWith_41(); + err = TestThReadsCurrentLevelAttributeFromDut_41(); break; case 42: - ChipLogProgress(chipTool, " ***** Test Step 42 : TH reads CurrentLevel attribute from DUT\n"); - if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000")) { + ChipLogProgress(chipTool, " ***** Test Step 42 : TH sends a MoveToLevel command to the DUT with\n"); + if (ShouldSkip("LVL.S.C00.Rsp")) { NextTest(); return; } - err = TestThReadsCurrentLevelAttributeFromDut_42(); + err = TestThSendsAMoveToLevelCommandToTheDutWith_42(); break; case 43: - ChipLogProgress(chipTool, " ***** Test Step 43 : TH sends a MoveToLevel command to the DUT with\n"); - if (ShouldSkip("LVL.S.C00.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 43 : TH reads CurrentLevel attribute from DUT\n"); + if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000")) { NextTest(); return; } - err = TestThSendsAMoveToLevelCommandToTheDutWith_43(); + err = TestThReadsCurrentLevelAttributeFromDut_43(); break; case 44: - ChipLogProgress(chipTool, " ***** Test Step 44 : TH reads CurrentLevel attribute from DUT\n"); - if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000")) { + ChipLogProgress(chipTool, " ***** Test Step 44 : TH sends a MoveToLevel command to the DUT with\n"); + if (ShouldSkip("LVL.S.C00.Rsp")) { NextTest(); return; } - err = TestThReadsCurrentLevelAttributeFromDut_44(); + err = TestThSendsAMoveToLevelCommandToTheDutWith_44(); break; case 45: - ChipLogProgress(chipTool, " ***** Test Step 45 : Precondition send Off Command\n"); - if (ShouldSkip("OO.S.C00.Rsp")) { - NextTest(); - return; - } - err = TestPreconditionSendOffCommand_45(); - break; - case 46: - ChipLogProgress(chipTool, " ***** Test Step 46 : Check on/off attribute value is false after off command\n"); - if (ShouldSkip("OO.S.A0000")) { + ChipLogProgress(chipTool, " ***** Test Step 45 : TH reads CurrentLevel attribute from DUT\n"); + if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000")) { NextTest(); return; } - err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_46(); + err = TestThReadsCurrentLevelAttributeFromDut_45(); break; } @@ -26988,9 +27061,6 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { case 45: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 46: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; } // Go on to the next test. @@ -27004,7 +27074,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 47; + const uint16_t mTestCount = 46; chip::Optional mNodeId; chip::Optional mCluster; @@ -27057,7 +27127,30 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThWrites0ToTheOptionsAttribute_3() + CHIP_ERROR TestPreconditionWriteDefaultValueOfOnOffTransitionTimeAttribute_3() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + id onOffTransitionTimeArgument; + onOffTransitionTimeArgument = [NSNumber numberWithUnsignedShort:0U]; + [cluster writeAttributeOnOffTransitionTimeWithValue:onOffTransitionTimeArgument + completionHandler:^(NSError * _Nullable err) { + NSLog(@"Precondition: write default value of OnOffTransitionTime attribute Error: %@", + err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThWrites0ToTheOptionsAttribute_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27079,7 +27172,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsOffCommandToDut_4() + CHIP_ERROR TestThSendsOffCommandToDut_5() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -27096,7 +27189,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsAMoveToLevelWithOnOffCommandToDutWithLevel50AndTransitionTime0Immediate_5() + CHIP_ERROR TestThSendsAMoveToLevelWithOnOffCommandToDutWithLevel50AndTransitionTime0Immediate_6() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27123,7 +27216,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsOnOffAttributeOnOffClusterFromDut_6() + CHIP_ERROR TestThReadsOnOffAttributeOnOffClusterFromDut_7() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -27145,7 +27238,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_7() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_8() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27170,7 +27263,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsOnCommandToDut_8() + CHIP_ERROR TestThSendsOnCommandToDut_9() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -27187,7 +27280,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsAMoveToLevelCommandToDutWithLevel50AndTransitionTime0Immediate_9() + CHIP_ERROR TestThSendsAMoveToLevelCommandToDutWithLevel50AndTransitionTime0Immediate_10() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27213,7 +27306,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_10() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_11() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27239,7 +27332,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { } CHIP_ERROR - TestThSendsAMoveToLevelCommandToTheDutWithLevel200AndTransitionTime30030SThisMeansTheLevelShouldIncreaseBy150UnitsIn30sSo5UnitsS_11() + TestThSendsAMoveToLevelCommandToTheDutWithLevel200AndTransitionTime30030SThisMeansTheLevelShouldIncreaseBy150UnitsIn30sSo5UnitsS_12() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27266,14 +27359,14 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait10000ms_12() + CHIP_ERROR TestWait10000ms_13() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 10000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_13() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_14() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27298,14 +27391,14 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait10000ms_14() + CHIP_ERROR TestWait10000ms_15() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 10000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_15() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_16() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27330,14 +27423,14 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait10000ms_16() + CHIP_ERROR TestWait10000ms_17() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 10000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_17() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_18() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27362,14 +27455,14 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait5000ms_18() + CHIP_ERROR TestWait5000ms_19() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 5000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_19() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_20() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27394,7 +27487,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_20() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_21() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27419,7 +27512,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThWrites0ToTheOptionsAttribute_21() + CHIP_ERROR TestThWrites0ToTheOptionsAttribute_22() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27441,7 +27534,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsOptionsAttribute_22() + CHIP_ERROR TestThReadsOptionsAttribute_23() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27465,7 +27558,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsOnCommandToDut_23() + CHIP_ERROR TestThSendsOnCommandToDut_24() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -27482,7 +27575,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsAMoveToLevelCommandToTheDutWith_24() + CHIP_ERROR TestThSendsAMoveToLevelCommandToTheDutWith_25() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27507,7 +27600,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_25() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_26() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27532,7 +27625,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsOffCommandToDut_26() + CHIP_ERROR TestThSendsOffCommandToDut_27() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -27549,7 +27642,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsAMoveToLevelCommandToTheDutWith_27() + CHIP_ERROR TestThSendsAMoveToLevelCommandToTheDutWith_28() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27574,7 +27667,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_28() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_29() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27599,7 +27692,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsAMoveToLevelCommandToTheDutWith_29() + CHIP_ERROR TestThSendsAMoveToLevelCommandToTheDutWith_30() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27624,7 +27717,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_30() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_31() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27649,7 +27742,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsAMoveToLevelCommandToTheDutWith_31() + CHIP_ERROR TestThSendsAMoveToLevelCommandToTheDutWith_32() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27674,7 +27767,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_32() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_33() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27699,7 +27792,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThWrites1ToTheOptionsAttribute_33() + CHIP_ERROR TestThWrites1ToTheOptionsAttribute_34() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27721,7 +27814,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsOptionsAttribute_34() + CHIP_ERROR TestThReadsOptionsAttribute_35() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27745,7 +27838,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsOnCommandToDut_35() + CHIP_ERROR TestThSendsOnCommandToDut_36() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -27762,7 +27855,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsAMoveToLevelCommandToTheDutWith_36() + CHIP_ERROR TestThSendsAMoveToLevelCommandToTheDutWith_37() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27787,7 +27880,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_37() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_38() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27812,7 +27905,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsOffCommandToDut_38() + CHIP_ERROR TestThSendsOffCommandToDut_39() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -27829,7 +27922,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsAMoveToLevelCommandToTheDutWith_39() + CHIP_ERROR TestThSendsAMoveToLevelCommandToTheDutWith_40() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27854,7 +27947,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_40() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_41() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27879,7 +27972,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsAMoveToLevelCommandToTheDutWith_41() + CHIP_ERROR TestThSendsAMoveToLevelCommandToTheDutWith_42() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27904,7 +27997,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_42() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_43() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27929,7 +28022,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsAMoveToLevelCommandToTheDutWith_43() + CHIP_ERROR TestThSendsAMoveToLevelCommandToTheDutWith_44() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27954,7 +28047,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_44() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_45() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -27978,45 +28071,6 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - - CHIP_ERROR TestPreconditionSendOffCommand_45() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster offWithCompletionHandler:^(NSError * _Nullable err) { - NSLog(@"Precondition send Off Command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_46() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeOnOffWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check on/off attribute value is false after off command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("OnOff", actualValue, 0)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } }; class Test_TC_LVL_4_1 : public TestCommandBridge { @@ -28078,163 +28132,171 @@ class Test_TC_LVL_4_1 : public TestCommandBridge { err = TestCheckOnOffAttributeValueIsTrueAfterOnCommand_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : TH writes 0 to the Options attribute\n"); - if (ShouldSkip("LVL.S.A000f")) { + ChipLogProgress(chipTool, " ***** Test Step 3 : Precondition: write default value of OnOffTransitionTime attribute\n"); + if (ShouldSkip("LVL.S.A0013")) { NextTest(); return; } - err = TestThWrites0ToTheOptionsAttribute_3(); + err = TestPreconditionWriteDefaultValueOfOnOffTransitionTimeAttribute_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : TH reads the MaxLevel attribute from the DUT\n"); - if (ShouldSkip("LVL.S.A0003")) { + ChipLogProgress(chipTool, " ***** Test Step 4 : TH writes 0 to the Options attribute\n"); + if (ShouldSkip("LVL.S.A000f")) { NextTest(); return; } - err = TestThReadsTheMaxLevelAttributeFromTheDut_4(); + err = TestThWrites0ToTheOptionsAttribute_4(); break; case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : TH sends Off command to DUT\n"); - if (ShouldSkip("OO.S.C00.Rsp && LVL.S.C05.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 5 : TH reads the MaxLevel attribute from the DUT\n"); + if (ShouldSkip("LVL.S.A0003")) { NextTest(); return; } - err = TestThSendsOffCommandToDut_5(); + err = TestThReadsTheMaxLevelAttributeFromTheDut_5(); break; case 6: - ChipLogProgress(chipTool, - " ***** Test Step 6 : TH sends a MoveWithOnOff command to DUT, with MoveMode =0x00 (up) and Rate =10 (units/s)\n"); - if (ShouldSkip("LVL.S.C05.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 6 : TH sends Off command to DUT\n"); + if (ShouldSkip("OO.S.C00.Rsp && LVL.S.C05.Rsp")) { NextTest(); return; } - err = TestThSendsAMoveWithOnOffCommandToDutWithMoveMode0x00UpAndRate10UnitsS_6(); + err = TestThSendsOffCommandToDut_6(); break; case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : TH reads OnOff attribute (On/Off cluster) from DUT\n"); - if (ShouldSkip("OO.S.A0000 && LVL.S.C05.Rsp")) { + ChipLogProgress(chipTool, + " ***** Test Step 7 : TH sends a MoveWithOnOff command to DUT, with MoveMode =0x00 (up) and Rate =10 (units/s)\n"); + if (ShouldSkip("LVL.S.C05.Rsp")) { NextTest(); return; } - err = TestThReadsOnOffAttributeOnOffClusterFromDut_7(); + err = TestThSendsAMoveWithOnOffCommandToDutWithMoveMode0x00UpAndRate10UnitsS_7(); break; case 8: - ChipLogProgress(chipTool, " ***** Test Step 8 : TH reads CurrentLevel attribute from DUT\n"); - if (ShouldSkip("LVL.S.C05.Rsp && LVL.S.A0000")) { + ChipLogProgress(chipTool, " ***** Test Step 8 : TH reads OnOff attribute (On/Off cluster) from DUT\n"); + if (ShouldSkip("OO.S.A0000 && LVL.S.C05.Rsp")) { NextTest(); return; } - err = TestThReadsCurrentLevelAttributeFromDut_8(); + err = TestThReadsOnOffAttributeOnOffClusterFromDut_8(); break; case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Wait 5000ms\n"); - err = TestWait5000ms_9(); + ChipLogProgress(chipTool, " ***** Test Step 9 : TH reads CurrentLevel attribute from DUT\n"); + if (ShouldSkip("LVL.S.C05.Rsp && LVL.S.A0000")) { + NextTest(); + return; + } + err = TestThReadsCurrentLevelAttributeFromDut_9(); break; case 10: - ChipLogProgress(chipTool, " ***** Test Step 10 : TH reads CurrentLevel attribute from DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 10 : Wait 5000ms\n"); + err = TestWait5000ms_10(); + break; + case 11: + ChipLogProgress(chipTool, " ***** Test Step 11 : TH reads CurrentLevel attribute from DUT\n"); if (ShouldSkip("LVL.S.C05.Rsp && LVL.S.A0000")) { NextTest(); return; } - err = TestThReadsCurrentLevelAttributeFromDut_10(); + err = TestThReadsCurrentLevelAttributeFromDut_11(); break; - case 11: - ChipLogProgress(chipTool, " ***** Test Step 11 : TH sends On command to DUT\n"); + case 12: + ChipLogProgress(chipTool, " ***** Test Step 12 : TH sends On command to DUT\n"); if (ShouldSkip("OO.S.C01.Rsp")) { NextTest(); return; } - err = TestThSendsOnCommandToDut_11(); + err = TestThSendsOnCommandToDut_12(); break; - case 12: + case 13: ChipLogProgress(chipTool, - " ***** Test Step 12 : TH sends a MoveToLevel command to DUT, with Level =50 and TransitionTime =0 (immediate)\n"); + " ***** Test Step 13 : TH sends a MoveToLevel command to DUT, with Level =50 and TransitionTime =0 (immediate)\n"); if (ShouldSkip("LVL.S.C00.Rsp")) { NextTest(); return; } - err = TestThSendsAMoveToLevelCommandToDutWithLevel50AndTransitionTime0Immediate_12(); + err = TestThSendsAMoveToLevelCommandToDutWithLevel50AndTransitionTime0Immediate_13(); break; - case 13: - ChipLogProgress(chipTool, " ***** Test Step 13 : TH reads CurrentLevel attribute from DUT\n"); + case 14: + ChipLogProgress(chipTool, " ***** Test Step 14 : TH reads CurrentLevel attribute from DUT\n"); if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000")) { NextTest(); return; } - err = TestThReadsCurrentLevelAttributeFromDut_13(); + err = TestThReadsCurrentLevelAttributeFromDut_14(); break; - case 14: + case 15: ChipLogProgress(chipTool, - " ***** Test Step 14 : TH sends a Move command to the DUT with MoveMode =0x00 (up) and Rate =5 (units/s)\n"); + " ***** Test Step 15 : TH sends a Move command to the DUT with MoveMode =0x00 (up) and Rate =5 (units/s)\n"); if (ShouldSkip("LVL.S.C01.Rsp")) { NextTest(); return; } - err = TestThSendsAMoveCommandToTheDutWithMoveMode0x00UpAndRate5UnitsS_14(); - break; - case 15: - ChipLogProgress(chipTool, " ***** Test Step 15 : Wait 10s\n"); - err = TestWait10s_15(); + err = TestThSendsAMoveCommandToTheDutWithMoveMode0x00UpAndRate5UnitsS_15(); break; case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : TH reads CurrentLevel attribute from DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 16 : Wait 10s\n"); + err = TestWait10s_16(); + break; + case 17: + ChipLogProgress(chipTool, " ***** Test Step 17 : TH reads CurrentLevel attribute from DUT\n"); if (ShouldSkip("LVL.S.C01.Rsp && LVL.S.A0000")) { NextTest(); return; } - err = TestThReadsCurrentLevelAttributeFromDut_16(); - break; - case 17: - ChipLogProgress(chipTool, " ***** Test Step 17 : Wait 10s\n"); - err = TestWait10s_17(); + err = TestThReadsCurrentLevelAttributeFromDut_17(); break; case 18: - ChipLogProgress(chipTool, " ***** Test Step 18 : TH reads CurrentLevel attribute from DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 18 : Wait 10s\n"); + err = TestWait10s_18(); + break; + case 19: + ChipLogProgress(chipTool, " ***** Test Step 19 : TH reads CurrentLevel attribute from DUT\n"); if (ShouldSkip("LVL.S.C01.Rsp && LVL.S.A0000")) { NextTest(); return; } - err = TestThReadsCurrentLevelAttributeFromDut_18(); - break; - case 19: - ChipLogProgress(chipTool, " ***** Test Step 19 : Wait 10s\n"); - err = TestWait10s_19(); + err = TestThReadsCurrentLevelAttributeFromDut_19(); break; case 20: - ChipLogProgress(chipTool, " ***** Test Step 20 : TH reads CurrentLevel attribute from DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 20 : Wait 10s\n"); + err = TestWait10s_20(); + break; + case 21: + ChipLogProgress(chipTool, " ***** Test Step 21 : TH reads CurrentLevel attribute from DUT\n"); if (ShouldSkip("LVL.S.C01.Rsp && LVL.S.A0000")) { NextTest(); return; } - err = TestThReadsCurrentLevelAttributeFromDut_20(); - break; - case 21: - ChipLogProgress(chipTool, " ***** Test Step 21 : Wait 13s\n"); - err = TestWait13s_21(); + err = TestThReadsCurrentLevelAttributeFromDut_21(); break; case 22: - ChipLogProgress(chipTool, " ***** Test Step 22 : TH reads CurrentLevel attribute from DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 22 : Wait 13s\n"); + err = TestWait13s_22(); + break; + case 23: + ChipLogProgress(chipTool, " ***** Test Step 23 : TH reads CurrentLevel attribute from DUT\n"); if (ShouldSkip("LVL.S.C01.Rsp && LVL.S.A0000")) { NextTest(); return; } - err = TestThReadsCurrentLevelAttributeFromDut_22(); + err = TestThReadsCurrentLevelAttributeFromDut_23(); break; - case 23: - ChipLogProgress(chipTool, " ***** Test Step 23 : Precondition send Off Command\n"); + case 24: + ChipLogProgress(chipTool, " ***** Test Step 24 : Precondition send Off Command\n"); if (ShouldSkip("OO.S.C00.Rsp")) { NextTest(); return; } - err = TestPreconditionSendOffCommand_23(); + err = TestPreconditionSendOffCommand_24(); break; - case 24: - ChipLogProgress(chipTool, " ***** Test Step 24 : Check on/off attribute value is false after off command\n"); + case 25: + ChipLogProgress(chipTool, " ***** Test Step 25 : Check on/off attribute value is false after off command\n"); if (ShouldSkip("OO.S.A0000")) { NextTest(); return; } - err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_24(); + err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_25(); break; } @@ -28322,6 +28384,9 @@ class Test_TC_LVL_4_1 : public TestCommandBridge { case 24: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 25: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -28335,7 +28400,7 @@ class Test_TC_LVL_4_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 25; + const uint16_t mTestCount = 26; chip::Optional mNodeId; chip::Optional mCluster; @@ -28388,7 +28453,30 @@ class Test_TC_LVL_4_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThWrites0ToTheOptionsAttribute_3() + CHIP_ERROR TestPreconditionWriteDefaultValueOfOnOffTransitionTimeAttribute_3() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + id onOffTransitionTimeArgument; + onOffTransitionTimeArgument = [NSNumber numberWithUnsignedShort:0U]; + [cluster writeAttributeOnOffTransitionTimeWithValue:onOffTransitionTimeArgument + completionHandler:^(NSError * _Nullable err) { + NSLog(@"Precondition: write default value of OnOffTransitionTime attribute Error: %@", + err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThWrites0ToTheOptionsAttribute_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -28410,7 +28498,7 @@ class Test_TC_LVL_4_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsTheMaxLevelAttributeFromTheDut_4() + CHIP_ERROR TestThReadsTheMaxLevelAttributeFromTheDut_5() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -28433,7 +28521,7 @@ class Test_TC_LVL_4_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsOffCommandToDut_5() + CHIP_ERROR TestThSendsOffCommandToDut_6() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -28450,7 +28538,7 @@ class Test_TC_LVL_4_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsAMoveWithOnOffCommandToDutWithMoveMode0x00UpAndRate10UnitsS_6() + CHIP_ERROR TestThSendsAMoveWithOnOffCommandToDutWithMoveMode0x00UpAndRate10UnitsS_7() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -28477,7 +28565,7 @@ class Test_TC_LVL_4_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsOnOffAttributeOnOffClusterFromDut_7() + CHIP_ERROR TestThReadsOnOffAttributeOnOffClusterFromDut_8() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -28500,7 +28588,7 @@ class Test_TC_LVL_4_1 : public TestCommandBridge { } NSNumber * _Nullable CurrentLevelValue; - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_8() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_9() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -28527,14 +28615,14 @@ class Test_TC_LVL_4_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait5000ms_9() + CHIP_ERROR TestWait5000ms_10() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 5000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_10() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_11() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -28559,7 +28647,7 @@ class Test_TC_LVL_4_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsOnCommandToDut_11() + CHIP_ERROR TestThSendsOnCommandToDut_12() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -28576,7 +28664,7 @@ class Test_TC_LVL_4_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsAMoveToLevelCommandToDutWithLevel50AndTransitionTime0Immediate_12() + CHIP_ERROR TestThSendsAMoveToLevelCommandToDutWithLevel50AndTransitionTime0Immediate_13() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -28602,7 +28690,7 @@ class Test_TC_LVL_4_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_13() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_14() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -28627,7 +28715,7 @@ class Test_TC_LVL_4_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsAMoveCommandToTheDutWithMoveMode0x00UpAndRate5UnitsS_14() + CHIP_ERROR TestThSendsAMoveCommandToTheDutWithMoveMode0x00UpAndRate5UnitsS_15() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -28652,14 +28740,14 @@ class Test_TC_LVL_4_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait10s_15() + CHIP_ERROR TestWait10s_16() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 10000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_16() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_17() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -28684,14 +28772,14 @@ class Test_TC_LVL_4_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait10s_17() + CHIP_ERROR TestWait10s_18() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 10000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_18() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_19() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -28716,14 +28804,14 @@ class Test_TC_LVL_4_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait10s_19() + CHIP_ERROR TestWait10s_20() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 10000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_20() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_21() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -28748,14 +28836,14 @@ class Test_TC_LVL_4_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait13s_21() + CHIP_ERROR TestWait13s_22() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 13000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_22() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_23() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -28780,7 +28868,7 @@ class Test_TC_LVL_4_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestPreconditionSendOffCommand_23() + CHIP_ERROR TestPreconditionSendOffCommand_24() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -28797,7 +28885,7 @@ class Test_TC_LVL_4_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_24() + CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_25() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -28879,146 +28967,154 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { err = TestCheckOnOffAttributeValueIsTrueAfterOnCommand_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : TH writes 0 to the Options attribute\n"); - if (ShouldSkip("LVL.S.A000f")) { + ChipLogProgress(chipTool, " ***** Test Step 3 : Precondition: write default value of OnOffTransitionTime attribute\n"); + if (ShouldSkip("LVL.S.A0013")) { NextTest(); return; } - err = TestThWrites0ToTheOptionsAttribute_3(); + err = TestPreconditionWriteDefaultValueOfOnOffTransitionTimeAttribute_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : TH sends Off command to DUT\n"); - if (ShouldSkip("OO.S.C00.Rsp && LVL.S.C06.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 4 : TH writes 0 to the Options attribute\n"); + if (ShouldSkip("LVL.S.A000f")) { NextTest(); return; } - err = TestThSendsOffCommandToDut_4(); + err = TestThWrites0ToTheOptionsAttribute_4(); break; case 5: + ChipLogProgress(chipTool, " ***** Test Step 5 : TH sends Off command to DUT\n"); + if (ShouldSkip("OO.S.C00.Rsp && LVL.S.C06.Rsp")) { + NextTest(); + return; + } + err = TestThSendsOffCommandToDut_5(); + break; + case 6: ChipLogProgress(chipTool, - " ***** Test Step 5 : TH sends a StepWithOnOff command to DUT, with StepMode =0x00 (up), StepSize =50 and " + " ***** Test Step 6 : TH sends a StepWithOnOff command to DUT, with StepMode =0x00 (up), StepSize =50 and " "TransitionTime =0 (immediate)\n"); if (ShouldSkip("LVL.S.C06.Rsp")) { NextTest(); return; } - err = TestThSendsAStepWithOnOffCommandToDutWithStepMode0x00UpStepSize50AndTransitionTime0Immediate_5(); + err = TestThSendsAStepWithOnOffCommandToDutWithStepMode0x00UpStepSize50AndTransitionTime0Immediate_6(); break; - case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : TH reads OnOff attribute (On/Off cluster) from DUT\n"); + case 7: + ChipLogProgress(chipTool, " ***** Test Step 7 : TH reads OnOff attribute (On/Off cluster) from DUT\n"); if (ShouldSkip("OO.S.A0000 && LVL.S.C06.Rsp")) { NextTest(); return; } - err = TestThReadsOnOffAttributeOnOffClusterFromDut_6(); + err = TestThReadsOnOffAttributeOnOffClusterFromDut_7(); break; - case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : TH sends On command to DUT\n"); + case 8: + ChipLogProgress(chipTool, " ***** Test Step 8 : TH sends On command to DUT\n"); if (ShouldSkip("OO.S.C01.Rsp")) { NextTest(); return; } - err = TestThSendsOnCommandToDut_7(); + err = TestThSendsOnCommandToDut_8(); break; - case 8: + case 9: ChipLogProgress(chipTool, - " ***** Test Step 8 : TH sends a MoveToLevel command to DUT, with Level =50 and TransitionTime =0 (immediate)\n"); + " ***** Test Step 9 : TH sends a MoveToLevel command to DUT, with Level =50 and TransitionTime =0 (immediate)\n"); if (ShouldSkip("LVL.S.C00.Rsp")) { NextTest(); return; } - err = TestThSendsAMoveToLevelCommandToDutWithLevel50AndTransitionTime0Immediate_8(); + err = TestThSendsAMoveToLevelCommandToDutWithLevel50AndTransitionTime0Immediate_9(); break; - case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Reads current level attribute from DUT\n"); + case 10: + ChipLogProgress(chipTool, " ***** Test Step 10 : Reads current level attribute from DUT\n"); if (ShouldSkip("LVL.S.A0000 && LVL.S.C00.Rsp")) { NextTest(); return; } - err = TestReadsCurrentLevelAttributeFromDut_9(); + err = TestReadsCurrentLevelAttributeFromDut_10(); break; - case 10: + case 11: ChipLogProgress(chipTool, - " ***** Test Step 10 : TH sends a Step command to the DUT with StepMode =0x00 (up), StepSize =150 and " + " ***** Test Step 11 : TH sends a Step command to the DUT with StepMode =0x00 (up), StepSize =150 and " "TransitionTime =300\n"); if (ShouldSkip("LVL.S.C02.Rsp && LVL.S.M.VarRate")) { NextTest(); return; } - err = TestThSendsAStepCommandToTheDutWithStepMode0x00UpStepSize150AndTransitionTime300_10(); - break; - case 11: - ChipLogProgress(chipTool, " ***** Test Step 11 : Wait 10s\n"); - err = TestWait10s_11(); + err = TestThSendsAStepCommandToTheDutWithStepMode0x00UpStepSize150AndTransitionTime300_11(); break; case 12: - ChipLogProgress(chipTool, " ***** Test Step 12 : TH reads CurrentLevel attribute from DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 12 : Wait 10s\n"); + err = TestWait10s_12(); + break; + case 13: + ChipLogProgress(chipTool, " ***** Test Step 13 : TH reads CurrentLevel attribute from DUT\n"); if (ShouldSkip("LVL.S.C02.Rsp && LVL.S.A0000 && LVL.S.M.VarRate")) { NextTest(); return; } - err = TestThReadsCurrentLevelAttributeFromDut_12(); - break; - case 13: - ChipLogProgress(chipTool, " ***** Test Step 13 : Wait 10s\n"); - err = TestWait10s_13(); + err = TestThReadsCurrentLevelAttributeFromDut_13(); break; case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : TH reads CurrentLevel attribute from DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 14 : Wait 10s\n"); + err = TestWait10s_14(); + break; + case 15: + ChipLogProgress(chipTool, " ***** Test Step 15 : TH reads CurrentLevel attribute from DUT\n"); if (ShouldSkip("LVL.S.C02.Rsp && LVL.S.A0000 && LVL.S.M.VarRate")) { NextTest(); return; } - err = TestThReadsCurrentLevelAttributeFromDut_14(); - break; - case 15: - ChipLogProgress(chipTool, " ***** Test Step 15 : Wait 10s\n"); - err = TestWait10s_15(); + err = TestThReadsCurrentLevelAttributeFromDut_15(); break; case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : TH reads CurrentLevel attribute from DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 16 : Wait 10s\n"); + err = TestWait10s_16(); + break; + case 17: + ChipLogProgress(chipTool, " ***** Test Step 17 : TH reads CurrentLevel attribute from DUT\n"); if (ShouldSkip("LVL.S.C02.Rsp && LVL.S.A0000 && LVL.S.M.VarRate")) { NextTest(); return; } - err = TestThReadsCurrentLevelAttributeFromDut_16(); - break; - case 17: - ChipLogProgress(chipTool, " ***** Test Step 17 : Wait 5000ms\n"); - err = TestWait5000ms_17(); + err = TestThReadsCurrentLevelAttributeFromDut_17(); break; case 18: - ChipLogProgress(chipTool, " ***** Test Step 18 : TH reads CurrentLevel attribute from DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 18 : Wait 5000ms\n"); + err = TestWait5000ms_18(); + break; + case 19: + ChipLogProgress(chipTool, " ***** Test Step 19 : TH reads CurrentLevel attribute from DUT\n"); if (ShouldSkip("LVL.S.C02.Rsp && LVL.S.A0000 && LVL.S.M.VarRate")) { NextTest(); return; } - err = TestThReadsCurrentLevelAttributeFromDut_18(); + err = TestThReadsCurrentLevelAttributeFromDut_19(); break; - case 19: + case 20: ChipLogProgress(chipTool, - " ***** Test Step 19 : TH reads CurrentLevel attribute from DUT (after DUT has finished the transition)\n"); + " ***** Test Step 20 : TH reads CurrentLevel attribute from DUT (after DUT has finished the transition)\n"); if (ShouldSkip("LVL.S.C02.Rsp && LVL.S.A0000 && !LVL.S.M.VarRate")) { NextTest(); return; } - err = TestThReadsCurrentLevelAttributeFromDutAfterDutHasFinishedTheTransition_19(); + err = TestThReadsCurrentLevelAttributeFromDutAfterDutHasFinishedTheTransition_20(); break; - case 20: - ChipLogProgress(chipTool, " ***** Test Step 20 : Precondition send Off Command\n"); + case 21: + ChipLogProgress(chipTool, " ***** Test Step 21 : Precondition send Off Command\n"); if (ShouldSkip("OO.S.C00.Rsp")) { NextTest(); return; } - err = TestPreconditionSendOffCommand_20(); + err = TestPreconditionSendOffCommand_21(); break; - case 21: - ChipLogProgress(chipTool, " ***** Test Step 21 : Check on/off attribute value is false after off command\n"); + case 22: + ChipLogProgress(chipTool, " ***** Test Step 22 : Check on/off attribute value is false after off command\n"); if (ShouldSkip("OO.S.A0000")) { NextTest(); return; } - err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_21(); + err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_22(); break; } @@ -29097,6 +29193,9 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 22: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -29110,7 +29209,7 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 22; + const uint16_t mTestCount = 23; chip::Optional mNodeId; chip::Optional mCluster; @@ -29163,7 +29262,30 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThWrites0ToTheOptionsAttribute_3() + CHIP_ERROR TestPreconditionWriteDefaultValueOfOnOffTransitionTimeAttribute_3() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + id onOffTransitionTimeArgument; + onOffTransitionTimeArgument = [NSNumber numberWithUnsignedShort:0U]; + [cluster writeAttributeOnOffTransitionTimeWithValue:onOffTransitionTimeArgument + completionHandler:^(NSError * _Nullable err) { + NSLog(@"Precondition: write default value of OnOffTransitionTime attribute Error: %@", + err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThWrites0ToTheOptionsAttribute_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -29185,7 +29307,7 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsOffCommandToDut_4() + CHIP_ERROR TestThSendsOffCommandToDut_5() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -29202,7 +29324,7 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsAStepWithOnOffCommandToDutWithStepMode0x00UpStepSize50AndTransitionTime0Immediate_5() + CHIP_ERROR TestThSendsAStepWithOnOffCommandToDutWithStepMode0x00UpStepSize50AndTransitionTime0Immediate_6() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -29230,7 +29352,7 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsOnOffAttributeOnOffClusterFromDut_6() + CHIP_ERROR TestThReadsOnOffAttributeOnOffClusterFromDut_7() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -29252,7 +29374,7 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsOnCommandToDut_7() + CHIP_ERROR TestThSendsOnCommandToDut_8() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -29269,7 +29391,7 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsAMoveToLevelCommandToDutWithLevel50AndTransitionTime0Immediate_8() + CHIP_ERROR TestThSendsAMoveToLevelCommandToDutWithLevel50AndTransitionTime0Immediate_9() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -29295,7 +29417,7 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsCurrentLevelAttributeFromDut_9() + CHIP_ERROR TestReadsCurrentLevelAttributeFromDut_10() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -29320,7 +29442,7 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsAStepCommandToTheDutWithStepMode0x00UpStepSize150AndTransitionTime300_10() + CHIP_ERROR TestThSendsAStepCommandToTheDutWithStepMode0x00UpStepSize150AndTransitionTime300_11() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -29349,14 +29471,14 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait10s_11() + CHIP_ERROR TestWait10s_12() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 10000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_12() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_13() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -29381,14 +29503,14 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait10s_13() + CHIP_ERROR TestWait10s_14() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 10000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_14() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_15() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -29413,14 +29535,14 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait10s_15() + CHIP_ERROR TestWait10s_16() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 10000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_16() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_17() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -29445,14 +29567,14 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait5000ms_17() + CHIP_ERROR TestWait5000ms_18() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 5000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_18() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_19() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -29477,7 +29599,7 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDutAfterDutHasFinishedTheTransition_19() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDutAfterDutHasFinishedTheTransition_20() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -29502,7 +29624,7 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestPreconditionSendOffCommand_20() + CHIP_ERROR TestPreconditionSendOffCommand_21() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -29519,7 +29641,7 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_21() + CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_22() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -29601,129 +29723,137 @@ class Test_TC_LVL_6_1 : public TestCommandBridge { err = TestCheckOnOffAttributeValueIsTrueAfterOnCommand_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : TH writes 0 to the Options attribute\n"); - if (ShouldSkip("LVL.S.A000f")) { + ChipLogProgress(chipTool, " ***** Test Step 3 : Precondition: write default value of OnOffTransitionTime attribute\n"); + if (ShouldSkip("LVL.S.A0013")) { NextTest(); return; } - err = TestThWrites0ToTheOptionsAttribute_3(); + err = TestPreconditionWriteDefaultValueOfOnOffTransitionTimeAttribute_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : TH sends On command to DUT\n"); - if (ShouldSkip("OO.S.C01.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 4 : TH writes 0 to the Options attribute\n"); + if (ShouldSkip("LVL.S.A000f")) { NextTest(); return; } - err = TestThSendsOnCommandToDut_4(); + err = TestThWrites0ToTheOptionsAttribute_4(); break; case 5: + ChipLogProgress(chipTool, " ***** Test Step 5 : TH sends On command to DUT\n"); + if (ShouldSkip("OO.S.C01.Rsp")) { + NextTest(); + return; + } + err = TestThSendsOnCommandToDut_5(); + break; + case 6: ChipLogProgress(chipTool, - " ***** Test Step 5 : TH sends a MoveToLevel command to DUT, with Level =50 and TransitionTime =0 (immediate)\n"); + " ***** Test Step 6 : TH sends a MoveToLevel command to DUT, with Level =50 and TransitionTime =0 (immediate)\n"); if (ShouldSkip("LVL.S.C00.Rsp")) { NextTest(); return; } - err = TestThSendsAMoveToLevelCommandToDutWithLevel50AndTransitionTime0Immediate_5(); + err = TestThSendsAMoveToLevelCommandToDutWithLevel50AndTransitionTime0Immediate_6(); break; - case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : TH reads CurrentLevel attribute from DUT\n"); + case 7: + ChipLogProgress(chipTool, " ***** Test Step 7 : TH reads CurrentLevel attribute from DUT\n"); if (ShouldSkip("LVL.S.A0000 && LVL.S.C00.Rsp")) { NextTest(); return; } - err = TestThReadsCurrentLevelAttributeFromDut_6(); + err = TestThReadsCurrentLevelAttributeFromDut_7(); break; - case 7: + case 8: ChipLogProgress(chipTool, - " ***** Test Step 7 : TH sends a Move command to the DUT, with the MoveMode field set to 0x00 (move up) and the " + " ***** Test Step 8 : TH sends a Move command to the DUT, with the MoveMode field set to 0x00 (move up) and the " "Rate field set to 0x05 (5 units/s)\n"); if (ShouldSkip("LVL.S.C01.Rsp")) { NextTest(); return; } - err = TestThSendsAMoveCommandToTheDutWithTheMoveModeFieldSetTo0x00MoveUpAndTheRateFieldSetTo0x055UnitsS_7(); - break; - case 8: - ChipLogProgress(chipTool, " ***** Test Step 8 : Wait 5000ms\n"); - err = TestWait5000ms_8(); + err = TestThSendsAMoveCommandToTheDutWithTheMoveModeFieldSetTo0x00MoveUpAndTheRateFieldSetTo0x055UnitsS_8(); break; case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Sends stop command to DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 9 : Wait 5000ms\n"); + err = TestWait5000ms_9(); + break; + case 10: + ChipLogProgress(chipTool, " ***** Test Step 10 : Sends stop command to DUT\n"); if (ShouldSkip("LVL.S.C03.Rsp")) { NextTest(); return; } - err = TestSendsStopCommandToDut_9(); + err = TestSendsStopCommandToDut_10(); break; - case 10: - ChipLogProgress(chipTool, " ***** Test Step 10 : Physically verify that the device has stopped transitioning\n"); + case 11: + ChipLogProgress(chipTool, " ***** Test Step 11 : Physically verify that the device has stopped transitioning\n"); if (ShouldSkip("PICS_USER_PROMPT && LVL.S.C03.Rsp")) { NextTest(); return; } - err = TestPhysicallyVerifyThatTheDeviceHasStoppedTransitioning_10(); + err = TestPhysicallyVerifyThatTheDeviceHasStoppedTransitioning_11(); break; - case 11: - ChipLogProgress(chipTool, " ***** Test Step 11 : TH reads CurrentLevel attribute from DUT\n"); + case 12: + ChipLogProgress(chipTool, " ***** Test Step 12 : TH reads CurrentLevel attribute from DUT\n"); if (ShouldSkip("LVL.S.C01.Rsp && LVL.S.C03.Rsp && LVL.S.A0000")) { NextTest(); return; } - err = TestThReadsCurrentLevelAttributeFromDut_11(); + err = TestThReadsCurrentLevelAttributeFromDut_12(); break; - case 12: + case 13: ChipLogProgress(chipTool, - " ***** Test Step 12 : TH sends a Move command to the DUT, with the MoveMode field set to 0x00 (move up) and the " + " ***** Test Step 13 : TH sends a Move command to the DUT, with the MoveMode field set to 0x00 (move up) and the " "Rate field set to 0x05 (5 units/s)\n"); if (ShouldSkip("LVL.S.C01.Rsp")) { NextTest(); return; } - err = TestThSendsAMoveCommandToTheDutWithTheMoveModeFieldSetTo0x00MoveUpAndTheRateFieldSetTo0x055UnitsS_12(); - break; - case 13: - ChipLogProgress(chipTool, " ***** Test Step 13 : Wait 5000ms\n"); - err = TestWait5000ms_13(); + err = TestThSendsAMoveCommandToTheDutWithTheMoveModeFieldSetTo0x00MoveUpAndTheRateFieldSetTo0x055UnitsS_13(); break; case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : TH sends a StopWithOnOff command to the DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 14 : Wait 5000ms\n"); + err = TestWait5000ms_14(); + break; + case 15: + ChipLogProgress(chipTool, " ***** Test Step 15 : TH sends a StopWithOnOff command to the DUT\n"); if (ShouldSkip("LVL.S.C07.Rsp")) { NextTest(); return; } - err = TestThSendsAStopWithOnOffCommandToTheDut_14(); + err = TestThSendsAStopWithOnOffCommandToTheDut_15(); break; - case 15: - ChipLogProgress(chipTool, " ***** Test Step 15 : Physically verify that the device has stopped transitioning\n"); + case 16: + ChipLogProgress(chipTool, " ***** Test Step 16 : Physically verify that the device has stopped transitioning\n"); if (ShouldSkip("PICS_USER_PROMPT && LVL.S.C07.Rsp")) { NextTest(); return; } - err = TestPhysicallyVerifyThatTheDeviceHasStoppedTransitioning_15(); + err = TestPhysicallyVerifyThatTheDeviceHasStoppedTransitioning_16(); break; - case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : Reads CurrentLevel attribute from DUT\n"); + case 17: + ChipLogProgress(chipTool, " ***** Test Step 17 : Reads CurrentLevel attribute from DUT\n"); if (ShouldSkip("LVL.S.C01.Rsp && LVL.S.C07.Rsp && LVL.S.A0000")) { NextTest(); return; } - err = TestReadsCurrentLevelAttributeFromDut_16(); + err = TestReadsCurrentLevelAttributeFromDut_17(); break; - case 17: - ChipLogProgress(chipTool, " ***** Test Step 17 : Precondition send Off Command\n"); + case 18: + ChipLogProgress(chipTool, " ***** Test Step 18 : Precondition send Off Command\n"); if (ShouldSkip("OO.S.C00.Rsp")) { NextTest(); return; } - err = TestPreconditionSendOffCommand_17(); + err = TestPreconditionSendOffCommand_18(); break; - case 18: - ChipLogProgress(chipTool, " ***** Test Step 18 : Check on/off attribute value is false after off command\n"); + case 19: + ChipLogProgress(chipTool, " ***** Test Step 19 : Check on/off attribute value is false after off command\n"); if (ShouldSkip("OO.S.A0000")) { NextTest(); return; } - err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_18(); + err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_19(); break; } @@ -29793,6 +29923,9 @@ class Test_TC_LVL_6_1 : public TestCommandBridge { case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 19: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -29806,7 +29939,7 @@ class Test_TC_LVL_6_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 19; + const uint16_t mTestCount = 20; chip::Optional mNodeId; chip::Optional mCluster; @@ -29859,7 +29992,30 @@ class Test_TC_LVL_6_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThWrites0ToTheOptionsAttribute_3() + CHIP_ERROR TestPreconditionWriteDefaultValueOfOnOffTransitionTimeAttribute_3() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + id onOffTransitionTimeArgument; + onOffTransitionTimeArgument = [NSNumber numberWithUnsignedShort:0U]; + [cluster writeAttributeOnOffTransitionTimeWithValue:onOffTransitionTimeArgument + completionHandler:^(NSError * _Nullable err) { + NSLog(@"Precondition: write default value of OnOffTransitionTime attribute Error: %@", + err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThWrites0ToTheOptionsAttribute_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -29881,7 +30037,7 @@ class Test_TC_LVL_6_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsOnCommandToDut_4() + CHIP_ERROR TestThSendsOnCommandToDut_5() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -29898,7 +30054,7 @@ class Test_TC_LVL_6_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsAMoveToLevelCommandToDutWithLevel50AndTransitionTime0Immediate_5() + CHIP_ERROR TestThSendsAMoveToLevelCommandToDutWithLevel50AndTransitionTime0Immediate_6() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -29924,7 +30080,7 @@ class Test_TC_LVL_6_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_6() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_7() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -29949,7 +30105,7 @@ class Test_TC_LVL_6_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsAMoveCommandToTheDutWithTheMoveModeFieldSetTo0x00MoveUpAndTheRateFieldSetTo0x055UnitsS_7() + CHIP_ERROR TestThSendsAMoveCommandToTheDutWithTheMoveModeFieldSetTo0x00MoveUpAndTheRateFieldSetTo0x055UnitsS_8() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -29976,14 +30132,14 @@ class Test_TC_LVL_6_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait5000ms_8() + CHIP_ERROR TestWait5000ms_9() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 5000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestSendsStopCommandToDut_9() + CHIP_ERROR TestSendsStopCommandToDut_10() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -30006,7 +30162,7 @@ class Test_TC_LVL_6_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestPhysicallyVerifyThatTheDeviceHasStoppedTransitioning_10() + CHIP_ERROR TestPhysicallyVerifyThatTheDeviceHasStoppedTransitioning_11() { chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); @@ -30015,7 +30171,7 @@ class Test_TC_LVL_6_1 : public TestCommandBridge { return UserPrompt("alpha", value); } - CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_11() + CHIP_ERROR TestThReadsCurrentLevelAttributeFromDut_12() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -30040,7 +30196,7 @@ class Test_TC_LVL_6_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThSendsAMoveCommandToTheDutWithTheMoveModeFieldSetTo0x00MoveUpAndTheRateFieldSetTo0x055UnitsS_12() + CHIP_ERROR TestThSendsAMoveCommandToTheDutWithTheMoveModeFieldSetTo0x00MoveUpAndTheRateFieldSetTo0x055UnitsS_13() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -30067,14 +30223,14 @@ class Test_TC_LVL_6_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait5000ms_13() + CHIP_ERROR TestWait5000ms_14() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 5000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestThSendsAStopWithOnOffCommandToTheDut_14() + CHIP_ERROR TestThSendsAStopWithOnOffCommandToTheDut_15() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -30097,7 +30253,7 @@ class Test_TC_LVL_6_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestPhysicallyVerifyThatTheDeviceHasStoppedTransitioning_15() + CHIP_ERROR TestPhysicallyVerifyThatTheDeviceHasStoppedTransitioning_16() { chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); @@ -30106,7 +30262,7 @@ class Test_TC_LVL_6_1 : public TestCommandBridge { return UserPrompt("alpha", value); } - CHIP_ERROR TestReadsCurrentLevelAttributeFromDut_16() + CHIP_ERROR TestReadsCurrentLevelAttributeFromDut_17() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -30131,7 +30287,7 @@ class Test_TC_LVL_6_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestPreconditionSendOffCommand_17() + CHIP_ERROR TestPreconditionSendOffCommand_18() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -30148,7 +30304,7 @@ class Test_TC_LVL_6_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_18() + CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_19() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -30841,23 +30997,31 @@ class Test_TC_KEYPADINPUT_1_2 : public TestCommandBridge { break; case 2: ChipLogProgress(chipTool, " ***** Test Step 2 : Read the global attribute: FeatureMap\n"); - if (ShouldSkip("KEYPADINPUT.S.NV || KEYPADINPUT.S.LK || KEYPADINPUT.S.NK")) { + if (ShouldSkip(" !KEYPADINPUT.S.NV && KEYPADINPUT.S.LK && !KEYPADINPUT.S.NK ")) { NextTest(); return; } err = TestReadTheGlobalAttributeFeatureMap_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Read the global attribute: AttributeList\n"); - err = TestReadTheGlobalAttributeAttributeList_3(); + ChipLogProgress(chipTool, " ***** Test Step 3 : Read the global attribute: FeatureMap\n"); + if (ShouldSkip("KEYPADINPUT.S.NV || KEYPADINPUT.S.LK || KEYPADINPUT.S.NK")) { + NextTest(); + return; + } + err = TestReadTheGlobalAttributeFeatureMap_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Read the global attribute: AcceptedCommandList\n"); - err = TestReadTheGlobalAttributeAcceptedCommandList_4(); + ChipLogProgress(chipTool, " ***** Test Step 4 : Read the global attribute: AttributeList\n"); + err = TestReadTheGlobalAttributeAttributeList_4(); break; case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Read the global attribute: GeneratedCommandList\n"); - err = TestReadTheGlobalAttributeGeneratedCommandList_5(); + ChipLogProgress(chipTool, " ***** Test Step 5 : Read the global attribute: AcceptedCommandList\n"); + err = TestReadTheGlobalAttributeAcceptedCommandList_5(); + break; + case 6: + ChipLogProgress(chipTool, " ***** Test Step 6 : Read the global attribute: GeneratedCommandList\n"); + err = TestReadTheGlobalAttributeGeneratedCommandList_6(); break; } @@ -30888,6 +31052,9 @@ class Test_TC_KEYPADINPUT_1_2 : public TestCommandBridge { case 5: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -30901,7 +31068,7 @@ class Test_TC_KEYPADINPUT_1_2 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 6; + const uint16_t mTestCount = 7; chip::Optional mNodeId; chip::Optional mCluster; @@ -30953,8 +31120,33 @@ class Test_TC_KEYPADINPUT_1_2 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + { + id actualValue = value; + VerifyOrReturn(CheckValue("FeatureMap", actualValue, 0UL)); + } + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintMinValue("featureMap", [value unsignedIntValue], 0UL)); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadTheGlobalAttributeFeatureMap_3() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterKeypadInput * cluster = [[MTRBaseClusterKeypadInput alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeFeatureMapWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the global attribute: FeatureMap Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + VerifyOrReturn(CheckConstraintMinValue("featureMap", [value unsignedIntValue], 1UL)); VerifyOrReturn(CheckConstraintMaxValue("featureMap", [value unsignedIntValue], 7UL)); NextTest(); @@ -30963,7 +31155,7 @@ class Test_TC_KEYPADINPUT_1_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheGlobalAttributeAttributeList_3() + CHIP_ERROR TestReadTheGlobalAttributeAttributeList_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterKeypadInput * cluster = [[MTRBaseClusterKeypadInput alloc] initWithDevice:device @@ -30989,7 +31181,7 @@ class Test_TC_KEYPADINPUT_1_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheGlobalAttributeAcceptedCommandList_4() + CHIP_ERROR TestReadTheGlobalAttributeAcceptedCommandList_5() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterKeypadInput * cluster = [[MTRBaseClusterKeypadInput alloc] initWithDevice:device @@ -31011,7 +31203,7 @@ class Test_TC_KEYPADINPUT_1_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheGlobalAttributeGeneratedCommandList_5() + CHIP_ERROR TestReadTheGlobalAttributeGeneratedCommandList_6() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterKeypadInput * cluster = [[MTRBaseClusterKeypadInput alloc] initWithDevice:device @@ -32004,72 +32196,80 @@ class Test_TC_CHANNEL_1_6 : public TestCommandBridge { break; case 2: ChipLogProgress(chipTool, " ***** Test Step 2 : Read the global attribute: FeatureMap\n"); - if (ShouldSkip("CHANNEL.S.CL || CHANNEL.S.LI")) { + if (ShouldSkip("( !CHANNEL.S.CL && !CHANNEL.S.LI )")) { NextTest(); return; } err = TestReadTheGlobalAttributeFeatureMap_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Read the global attribute: AttributeList\n"); - err = TestReadTheGlobalAttributeAttributeList_3(); + ChipLogProgress(chipTool, " ***** Test Step 3 : Read the global attribute: FeatureMap\n"); + if (ShouldSkip("CHANNEL.S.CL || CHANNEL.S.LI")) { + NextTest(); + return; + } + err = TestReadTheGlobalAttributeFeatureMap_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Read the optional attribute(ChannelList): AttributeList\n"); + ChipLogProgress(chipTool, " ***** Test Step 4 : Read the global attribute: AttributeList\n"); + err = TestReadTheGlobalAttributeAttributeList_4(); + break; + case 5: + ChipLogProgress(chipTool, " ***** Test Step 5 : Read the optional attribute(ChannelList): AttributeList\n"); if (ShouldSkip("CHANNEL.S.A0000")) { NextTest(); return; } - err = TestReadTheOptionalAttributeChannelListAttributeList_4(); + err = TestReadTheOptionalAttributeChannelListAttributeList_5(); break; - case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Reading optional attribute(Lineup) in AttributeList\n"); + case 6: + ChipLogProgress(chipTool, " ***** Test Step 6 : Reading optional attribute(Lineup) in AttributeList\n"); if (ShouldSkip("CHANNEL.S.A0001")) { NextTest(); return; } - err = TestReadingOptionalAttributeLineupInAttributeList_5(); + err = TestReadingOptionalAttributeLineupInAttributeList_6(); break; - case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : Read the optional attribute(CurrentChannel): AttributeList\n"); + case 7: + ChipLogProgress(chipTool, " ***** Test Step 7 : Read the optional attribute(CurrentChannel): AttributeList\n"); if (ShouldSkip("CHANNEL.S.A0002")) { NextTest(); return; } - err = TestReadTheOptionalAttributeCurrentChannelAttributeList_6(); + err = TestReadTheOptionalAttributeCurrentChannelAttributeList_7(); break; - case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : Read the optional command(ChangeChannel) in AcceptedCommandList\n"); + case 8: + ChipLogProgress(chipTool, " ***** Test Step 8 : Read the optional command(ChangeChannel) in AcceptedCommandList\n"); if (ShouldSkip("CHANNEL.S.C00.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandChangeChannelInAcceptedCommandList_7(); + err = TestReadTheOptionalCommandChangeChannelInAcceptedCommandList_8(); break; - case 8: + case 9: ChipLogProgress( - chipTool, " ***** Test Step 8 : Read the optional command(ChangeChannelByNumber) in AcceptedCommandList\n"); + chipTool, " ***** Test Step 9 : Read the optional command(ChangeChannelByNumber) in AcceptedCommandList\n"); if (ShouldSkip("CHANNEL.S.C02.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandChangeChannelByNumberInAcceptedCommandList_8(); + err = TestReadTheOptionalCommandChangeChannelByNumberInAcceptedCommandList_9(); break; - case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Read the optional command(SkipChannel) in AcceptedCommandList\n"); + case 10: + ChipLogProgress(chipTool, " ***** Test Step 10 : Read the optional command(SkipChannel) in AcceptedCommandList\n"); if (ShouldSkip("CHANNEL.S.C03.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandSkipChannelInAcceptedCommandList_9(); + err = TestReadTheOptionalCommandSkipChannelInAcceptedCommandList_10(); break; - case 10: - ChipLogProgress(chipTool, " ***** Test Step 10 : Read the global attribute: GeneratedCommandList\n"); + case 11: + ChipLogProgress(chipTool, " ***** Test Step 11 : Read the global attribute: GeneratedCommandList\n"); if (ShouldSkip("CHANNEL.S.CL || CHANNEL.S.LI")) { NextTest(); return; } - err = TestReadTheGlobalAttributeGeneratedCommandList_10(); + err = TestReadTheGlobalAttributeGeneratedCommandList_11(); break; } @@ -32115,6 +32315,9 @@ class Test_TC_CHANNEL_1_6 : public TestCommandBridge { case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 11: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -32128,7 +32331,7 @@ class Test_TC_CHANNEL_1_6 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 11; + const uint16_t mTestCount = 12; chip::Optional mNodeId; chip::Optional mCluster; @@ -32171,13 +32374,36 @@ class Test_TC_CHANNEL_1_6 : public TestCommandBridge { MTRBaseClusterChannel * cluster = [[MTRBaseClusterChannel alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + [cluster readAttributeFeatureMapWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the global attribute: FeatureMap Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("FeatureMap", actualValue, 0UL)); + } + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadTheGlobalAttributeFeatureMap_3() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterChannel * cluster = [[MTRBaseClusterChannel alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + [cluster readAttributeFeatureMapWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { NSLog(@"Read the global attribute: FeatureMap Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintMinValue("featureMap", [value unsignedIntValue], 0UL)); + VerifyOrReturn(CheckConstraintMinValue("featureMap", [value unsignedIntValue], 1UL)); VerifyOrReturn(CheckConstraintMaxValue("featureMap", [value unsignedIntValue], 3UL)); NextTest(); @@ -32186,7 +32412,7 @@ class Test_TC_CHANNEL_1_6 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheGlobalAttributeAttributeList_3() + CHIP_ERROR TestReadTheGlobalAttributeAttributeList_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterChannel * cluster = [[MTRBaseClusterChannel alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -32210,7 +32436,7 @@ class Test_TC_CHANNEL_1_6 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeChannelListAttributeList_4() + CHIP_ERROR TestReadTheOptionalAttributeChannelListAttributeList_5() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterChannel * cluster = [[MTRBaseClusterChannel alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -32230,7 +32456,7 @@ class Test_TC_CHANNEL_1_6 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadingOptionalAttributeLineupInAttributeList_5() + CHIP_ERROR TestReadingOptionalAttributeLineupInAttributeList_6() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterChannel * cluster = [[MTRBaseClusterChannel alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -32250,7 +32476,7 @@ class Test_TC_CHANNEL_1_6 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeCurrentChannelAttributeList_6() + CHIP_ERROR TestReadTheOptionalAttributeCurrentChannelAttributeList_7() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterChannel * cluster = [[MTRBaseClusterChannel alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -32270,7 +32496,7 @@ class Test_TC_CHANNEL_1_6 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandChangeChannelInAcceptedCommandList_7() + CHIP_ERROR TestReadTheOptionalCommandChangeChannelInAcceptedCommandList_8() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterChannel * cluster = [[MTRBaseClusterChannel alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -32290,7 +32516,7 @@ class Test_TC_CHANNEL_1_6 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandChangeChannelByNumberInAcceptedCommandList_8() + CHIP_ERROR TestReadTheOptionalCommandChangeChannelByNumberInAcceptedCommandList_9() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterChannel * cluster = [[MTRBaseClusterChannel alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -32310,7 +32536,7 @@ class Test_TC_CHANNEL_1_6 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandSkipChannelInAcceptedCommandList_9() + CHIP_ERROR TestReadTheOptionalCommandSkipChannelInAcceptedCommandList_10() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterChannel * cluster = [[MTRBaseClusterChannel alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -32330,7 +32556,7 @@ class Test_TC_CHANNEL_1_6 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheGlobalAttributeGeneratedCommandList_10() + CHIP_ERROR TestReadTheGlobalAttributeGeneratedCommandList_11() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterChannel * cluster = [[MTRBaseClusterChannel alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -32399,135 +32625,143 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { break; case 2: ChipLogProgress(chipTool, " ***** Test Step 2 : Read the global attribute: FeatureMap\n"); - if (ShouldSkip("MEDIAPLAYBACK.S.AS || MEDIAPLAYBACK.S.VS")) { + if (ShouldSkip(" !MEDIAPLAYBACK.S.AS && !MEDIAPLAYBACK.S.VS ")) { NextTest(); return; } err = TestReadTheGlobalAttributeFeatureMap_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Read the global attribute: AttributeList\n"); - err = TestReadTheGlobalAttributeAttributeList_3(); + ChipLogProgress(chipTool, " ***** Test Step 3 : Read the global attribute: FeatureMap\n"); + if (ShouldSkip("MEDIAPLAYBACK.S.AS || MEDIAPLAYBACK.S.VS")) { + NextTest(); + return; + } + err = TestReadTheGlobalAttributeFeatureMap_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Read the optional attribute(StartTime) in AttributeList\n"); + ChipLogProgress(chipTool, " ***** Test Step 4 : Read the global attribute: AttributeList\n"); + err = TestReadTheGlobalAttributeAttributeList_4(); + break; + case 5: + ChipLogProgress(chipTool, " ***** Test Step 5 : Read the optional attribute(StartTime) in AttributeList\n"); if (ShouldSkip("MEDIAPLAYBACK.S.A0001")) { NextTest(); return; } - err = TestReadTheOptionalAttributeStartTimeInAttributeList_4(); + err = TestReadTheOptionalAttributeStartTimeInAttributeList_5(); break; - case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Read the optional attribute(Duration) in AttributeList\n"); + case 6: + ChipLogProgress(chipTool, " ***** Test Step 6 : Read the optional attribute(Duration) in AttributeList\n"); if (ShouldSkip("MEDIAPLAYBACK.S.A0002")) { NextTest(); return; } - err = TestReadTheOptionalAttributeDurationInAttributeList_5(); + err = TestReadTheOptionalAttributeDurationInAttributeList_6(); break; - case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : Read the optional attribute(SampledPosition) in AttributeList\n"); + case 7: + ChipLogProgress(chipTool, " ***** Test Step 7 : Read the optional attribute(SampledPosition) in AttributeList\n"); if (ShouldSkip("MEDIAPLAYBACK.S.A0003")) { NextTest(); return; } - err = TestReadTheOptionalAttributeSampledPositionInAttributeList_6(); + err = TestReadTheOptionalAttributeSampledPositionInAttributeList_7(); break; - case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : Read the optional attribute(PlaybackSpeed) in AttributeList\n"); + case 8: + ChipLogProgress(chipTool, " ***** Test Step 8 : Read the optional attribute(PlaybackSpeed) in AttributeList\n"); if (ShouldSkip("MEDIAPLAYBACK.S.A0004")) { NextTest(); return; } - err = TestReadTheOptionalAttributePlaybackSpeedInAttributeList_7(); + err = TestReadTheOptionalAttributePlaybackSpeedInAttributeList_8(); break; - case 8: - ChipLogProgress(chipTool, " ***** Test Step 8 : Read the optional attribute(SeekRangeEnd) in AttributeList\n"); + case 9: + ChipLogProgress(chipTool, " ***** Test Step 9 : Read the optional attribute(SeekRangeEnd) in AttributeList\n"); if (ShouldSkip("MEDIAPLAYBACK.S.A0005")) { NextTest(); return; } - err = TestReadTheOptionalAttributeSeekRangeEndInAttributeList_8(); + err = TestReadTheOptionalAttributeSeekRangeEndInAttributeList_9(); break; - case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Read the optional attribute(SeekRangeStart) in AttributeList\n"); + case 10: + ChipLogProgress(chipTool, " ***** Test Step 10 : Read the optional attribute(SeekRangeStart) in AttributeList\n"); if (ShouldSkip("MEDIAPLAYBACK.S.A0006")) { NextTest(); return; } - err = TestReadTheOptionalAttributeSeekRangeStartInAttributeList_9(); - break; - case 10: - ChipLogProgress(chipTool, " ***** Test Step 10 : Read the global attribute: AcceptedCommandList\n"); - err = TestReadTheGlobalAttributeAcceptedCommandList_10(); + err = TestReadTheOptionalAttributeSeekRangeStartInAttributeList_10(); break; case 11: - ChipLogProgress(chipTool, " ***** Test Step 11 : Read the optional command(StartOver) in AcceptedCommandList\n"); + ChipLogProgress(chipTool, " ***** Test Step 11 : Read the global attribute: AcceptedCommandList\n"); + err = TestReadTheGlobalAttributeAcceptedCommandList_11(); + break; + case 12: + ChipLogProgress(chipTool, " ***** Test Step 12 : Read the optional command(StartOver) in AcceptedCommandList\n"); if (ShouldSkip("MEDIAPLAYBACK.S.C03.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandStartOverInAcceptedCommandList_11(); + err = TestReadTheOptionalCommandStartOverInAcceptedCommandList_12(); break; - case 12: - ChipLogProgress(chipTool, " ***** Test Step 12 : Read the optional command(Previous) in AcceptedCommandList\n"); + case 13: + ChipLogProgress(chipTool, " ***** Test Step 13 : Read the optional command(Previous) in AcceptedCommandList\n"); if (ShouldSkip("MEDIAPLAYBACK.S.C04.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandPreviousInAcceptedCommandList_12(); + err = TestReadTheOptionalCommandPreviousInAcceptedCommandList_13(); break; - case 13: - ChipLogProgress(chipTool, " ***** Test Step 13 : Read the optional command(Next) in AcceptedCommandList\n"); + case 14: + ChipLogProgress(chipTool, " ***** Test Step 14 : Read the optional command(Next) in AcceptedCommandList\n"); if (ShouldSkip("MEDIAPLAYBACK.S.C05.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandNextInAcceptedCommandList_13(); + err = TestReadTheOptionalCommandNextInAcceptedCommandList_14(); break; - case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : Read the optional command(Rewind) in AcceptedCommandList\n"); + case 15: + ChipLogProgress(chipTool, " ***** Test Step 15 : Read the optional command(Rewind) in AcceptedCommandList\n"); if (ShouldSkip("MEDIAPLAYBACK.S.C06.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandRewindInAcceptedCommandList_14(); + err = TestReadTheOptionalCommandRewindInAcceptedCommandList_15(); break; - case 15: - ChipLogProgress(chipTool, " ***** Test Step 15 : Read the optional command(FastForward) in AcceptedCommandList\n"); + case 16: + ChipLogProgress(chipTool, " ***** Test Step 16 : Read the optional command(FastForward) in AcceptedCommandList\n"); if (ShouldSkip("MEDIAPLAYBACK.S.C07.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandFastForwardInAcceptedCommandList_15(); + err = TestReadTheOptionalCommandFastForwardInAcceptedCommandList_16(); break; - case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : Read the optional command(SkipForward) in AcceptedCommandList\n"); + case 17: + ChipLogProgress(chipTool, " ***** Test Step 17 : Read the optional command(SkipForward) in AcceptedCommandList\n"); if (ShouldSkip("MEDIAPLAYBACK.S.C08.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandSkipForwardInAcceptedCommandList_16(); + err = TestReadTheOptionalCommandSkipForwardInAcceptedCommandList_17(); break; - case 17: - ChipLogProgress(chipTool, " ***** Test Step 17 : Read the optional command(SkipBackward) in AcceptedCommandList\n"); + case 18: + ChipLogProgress(chipTool, " ***** Test Step 18 : Read the optional command(SkipBackward) in AcceptedCommandList\n"); if (ShouldSkip("MEDIAPLAYBACK.S.C09.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandSkipBackwardInAcceptedCommandList_17(); + err = TestReadTheOptionalCommandSkipBackwardInAcceptedCommandList_18(); break; - case 18: - ChipLogProgress(chipTool, " ***** Test Step 18 : Read the optional command(Seek) in AcceptedCommandList\n"); + case 19: + ChipLogProgress(chipTool, " ***** Test Step 19 : Read the optional command(Seek) in AcceptedCommandList\n"); if (ShouldSkip("MEDIAPLAYBACK.S.C0B.Rsp")) { NextTest(); return; } - err = TestReadTheOptionalCommandSeekInAcceptedCommandList_18(); + err = TestReadTheOptionalCommandSeekInAcceptedCommandList_19(); break; - case 19: - ChipLogProgress(chipTool, " ***** Test Step 19 : Read the global attribute: GeneratedCommandList\n"); - err = TestReadTheGlobalAttributeGeneratedCommandList_19(); + case 20: + ChipLogProgress(chipTool, " ***** Test Step 20 : Read the global attribute: GeneratedCommandList\n"); + err = TestReadTheGlobalAttributeGeneratedCommandList_20(); break; } @@ -32600,6 +32834,9 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 20: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -32613,7 +32850,7 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 20; + const uint16_t mTestCount = 21; chip::Optional mNodeId; chip::Optional mCluster; @@ -32665,8 +32902,33 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + { + id actualValue = value; + VerifyOrReturn(CheckValue("FeatureMap", actualValue, 0UL)); + } + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintMinValue("featureMap", [value unsignedIntValue], 0UL)); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadTheGlobalAttributeFeatureMap_3() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeFeatureMapWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the global attribute: FeatureMap Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + VerifyOrReturn(CheckConstraintMinValue("featureMap", [value unsignedIntValue], 1UL)); VerifyOrReturn(CheckConstraintMaxValue("featureMap", [value unsignedIntValue], 3UL)); NextTest(); @@ -32675,7 +32937,7 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheGlobalAttributeAttributeList_3() + CHIP_ERROR TestReadTheGlobalAttributeAttributeList_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device @@ -32702,7 +32964,7 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeStartTimeInAttributeList_4() + CHIP_ERROR TestReadTheOptionalAttributeStartTimeInAttributeList_5() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device @@ -32724,7 +32986,7 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeDurationInAttributeList_5() + CHIP_ERROR TestReadTheOptionalAttributeDurationInAttributeList_6() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device @@ -32746,7 +33008,7 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeSampledPositionInAttributeList_6() + CHIP_ERROR TestReadTheOptionalAttributeSampledPositionInAttributeList_7() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device @@ -32768,7 +33030,7 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributePlaybackSpeedInAttributeList_7() + CHIP_ERROR TestReadTheOptionalAttributePlaybackSpeedInAttributeList_8() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device @@ -32790,7 +33052,7 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeSeekRangeEndInAttributeList_8() + CHIP_ERROR TestReadTheOptionalAttributeSeekRangeEndInAttributeList_9() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device @@ -32812,7 +33074,7 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeSeekRangeStartInAttributeList_9() + CHIP_ERROR TestReadTheOptionalAttributeSeekRangeStartInAttributeList_10() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device @@ -32834,7 +33096,7 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheGlobalAttributeAcceptedCommandList_10() + CHIP_ERROR TestReadTheGlobalAttributeAcceptedCommandList_11() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device @@ -32858,7 +33120,7 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandStartOverInAcceptedCommandList_11() + CHIP_ERROR TestReadTheOptionalCommandStartOverInAcceptedCommandList_12() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device @@ -32880,7 +33142,7 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandPreviousInAcceptedCommandList_12() + CHIP_ERROR TestReadTheOptionalCommandPreviousInAcceptedCommandList_13() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device @@ -32902,7 +33164,7 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandNextInAcceptedCommandList_13() + CHIP_ERROR TestReadTheOptionalCommandNextInAcceptedCommandList_14() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device @@ -32924,7 +33186,7 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandRewindInAcceptedCommandList_14() + CHIP_ERROR TestReadTheOptionalCommandRewindInAcceptedCommandList_15() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device @@ -32946,7 +33208,7 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandFastForwardInAcceptedCommandList_15() + CHIP_ERROR TestReadTheOptionalCommandFastForwardInAcceptedCommandList_16() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device @@ -32968,7 +33230,7 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandSkipForwardInAcceptedCommandList_16() + CHIP_ERROR TestReadTheOptionalCommandSkipForwardInAcceptedCommandList_17() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device @@ -32990,7 +33252,7 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandSkipBackwardInAcceptedCommandList_17() + CHIP_ERROR TestReadTheOptionalCommandSkipBackwardInAcceptedCommandList_18() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device @@ -33012,7 +33274,7 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandSeekInAcceptedCommandList_18() + CHIP_ERROR TestReadTheOptionalCommandSeekInAcceptedCommandList_19() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device @@ -33034,7 +33296,7 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheGlobalAttributeGeneratedCommandList_19() + CHIP_ERROR TestReadTheGlobalAttributeGeneratedCommandList_20() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device @@ -34080,54 +34342,62 @@ class Test_TC_CONTENTLAUNCHER_1_11 : public TestCommandBridge { break; case 2: ChipLogProgress(chipTool, " ***** Test Step 2 : Read the global attribute: FeatureMap\n"); - if (ShouldSkip("CONTENTLAUNCHER.S.CS || CONTENTLAUNCHER.S.UP")) { + if (ShouldSkip("( !CONTENTLAUNCHER.S.CS && !CONTENTLAUNCHER.S.UP )")) { NextTest(); return; } err = TestReadTheGlobalAttributeFeatureMap_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Read the global attribute: AttributeList\n"); - err = TestReadTheGlobalAttributeAttributeList_3(); + ChipLogProgress(chipTool, " ***** Test Step 3 : Read the global attribute: FeatureMap\n"); + if (ShouldSkip("CONTENTLAUNCHER.S.CS || CONTENTLAUNCHER.S.UP")) { + NextTest(); + return; + } + err = TestReadTheGlobalAttributeFeatureMap_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Read the optional attribute(AcceptHeader): AttributeList\n"); + ChipLogProgress(chipTool, " ***** Test Step 4 : Read the global attribute: AttributeList\n"); + err = TestReadTheGlobalAttributeAttributeList_4(); + break; + case 5: + ChipLogProgress(chipTool, " ***** Test Step 5 : Read the optional attribute(AcceptHeader): AttributeList\n"); if (ShouldSkip("CONTENTLAUNCHER.S.A0000")) { NextTest(); return; } - err = TestReadTheOptionalAttributeAcceptHeaderAttributeList_4(); + err = TestReadTheOptionalAttributeAcceptHeaderAttributeList_5(); break; - case 5: + case 6: ChipLogProgress( - chipTool, " ***** Test Step 5 : Read the optional attribute(SupportedStreamingProtocols): AttributeList\n"); + chipTool, " ***** Test Step 6 : Read the optional attribute(SupportedStreamingProtocols): AttributeList\n"); if (ShouldSkip("CONTENTLAUNCHER.S.A0001")) { NextTest(); return; } - err = TestReadTheOptionalAttributeSupportedStreamingProtocolsAttributeList_5(); + err = TestReadTheOptionalAttributeSupportedStreamingProtocolsAttributeList_6(); break; - case 6: + case 7: ChipLogProgress( - chipTool, " ***** Test Step 6 : Read the optional command(LaunchContent) in AcceptedCommandList attribute\n"); + chipTool, " ***** Test Step 7 : Read the optional command(LaunchContent) in AcceptedCommandList attribute\n"); if (ShouldSkip("CONTENTLAUNCHER.C.C0000")) { NextTest(); return; } - err = TestReadTheOptionalCommandLaunchContentInAcceptedCommandListAttribute_6(); + err = TestReadTheOptionalCommandLaunchContentInAcceptedCommandListAttribute_7(); break; - case 7: + case 8: ChipLogProgress( - chipTool, " ***** Test Step 7 : Read the optional command(LaunchURL) in AcceptedCommandList attribute\n"); + chipTool, " ***** Test Step 8 : Read the optional command(LaunchURL) in AcceptedCommandList attribute\n"); if (ShouldSkip("CONTENTLAUNCHER.C.C0001")) { NextTest(); return; } - err = TestReadTheOptionalCommandLaunchURLInAcceptedCommandListAttribute_7(); + err = TestReadTheOptionalCommandLaunchURLInAcceptedCommandListAttribute_8(); break; - case 8: - ChipLogProgress(chipTool, " ***** Test Step 8 : Read the global attribute: GeneratedCommandList\n"); - err = TestReadTheGlobalAttributeGeneratedCommandList_8(); + case 9: + ChipLogProgress(chipTool, " ***** Test Step 9 : Read the global attribute: GeneratedCommandList\n"); + err = TestReadTheGlobalAttributeGeneratedCommandList_9(); break; } @@ -34167,6 +34437,9 @@ class Test_TC_CONTENTLAUNCHER_1_11 : public TestCommandBridge { case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -34180,7 +34453,7 @@ class Test_TC_CONTENTLAUNCHER_1_11 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 9; + const uint16_t mTestCount = 10; chip::Optional mNodeId; chip::Optional mCluster; @@ -34232,8 +34505,33 @@ class Test_TC_CONTENTLAUNCHER_1_11 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + { + id actualValue = value; + VerifyOrReturn(CheckValue("FeatureMap", actualValue, 0UL)); + } + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintMinValue("featureMap", [value unsignedIntValue], 0UL)); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadTheGlobalAttributeFeatureMap_3() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterContentLauncher * cluster = [[MTRBaseClusterContentLauncher alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeFeatureMapWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the global attribute: FeatureMap Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + VerifyOrReturn(CheckConstraintMinValue("featureMap", [value unsignedIntValue], 1UL)); VerifyOrReturn(CheckConstraintMaxValue("featureMap", [value unsignedIntValue], 3UL)); NextTest(); @@ -34242,7 +34540,7 @@ class Test_TC_CONTENTLAUNCHER_1_11 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheGlobalAttributeAttributeList_3() + CHIP_ERROR TestReadTheGlobalAttributeAttributeList_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterContentLauncher * cluster = [[MTRBaseClusterContentLauncher alloc] initWithDevice:device @@ -34268,7 +34566,7 @@ class Test_TC_CONTENTLAUNCHER_1_11 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeAcceptHeaderAttributeList_4() + CHIP_ERROR TestReadTheOptionalAttributeAcceptHeaderAttributeList_5() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterContentLauncher * cluster = [[MTRBaseClusterContentLauncher alloc] initWithDevice:device @@ -34290,7 +34588,7 @@ class Test_TC_CONTENTLAUNCHER_1_11 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeSupportedStreamingProtocolsAttributeList_5() + CHIP_ERROR TestReadTheOptionalAttributeSupportedStreamingProtocolsAttributeList_6() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterContentLauncher * cluster = [[MTRBaseClusterContentLauncher alloc] initWithDevice:device @@ -34312,7 +34610,7 @@ class Test_TC_CONTENTLAUNCHER_1_11 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandLaunchContentInAcceptedCommandListAttribute_6() + CHIP_ERROR TestReadTheOptionalCommandLaunchContentInAcceptedCommandListAttribute_7() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterContentLauncher * cluster = [[MTRBaseClusterContentLauncher alloc] initWithDevice:device @@ -34334,7 +34632,7 @@ class Test_TC_CONTENTLAUNCHER_1_11 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalCommandLaunchURLInAcceptedCommandListAttribute_7() + CHIP_ERROR TestReadTheOptionalCommandLaunchURLInAcceptedCommandListAttribute_8() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterContentLauncher * cluster = [[MTRBaseClusterContentLauncher alloc] initWithDevice:device @@ -34356,7 +34654,7 @@ class Test_TC_CONTENTLAUNCHER_1_11 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheGlobalAttributeGeneratedCommandList_8() + CHIP_ERROR TestReadTheGlobalAttributeGeneratedCommandList_9() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterContentLauncher * cluster = [[MTRBaseClusterContentLauncher alloc] initWithDevice:device @@ -39202,8 +39500,7 @@ class Test_TC_TGTNAV_8_1 : public TestCommandBridge { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("targetvalue1", 0, UINT8_MAX, &mTargetvalue1); - AddArgument("targetvalue2", 0, UINT8_MAX, &mTargetvalue2); + AddArgument("targetvalue", 0, UINT8_MAX, &mTargetvalue); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } // NOLINTEND(clang-analyzer-nullability.NullPassedToNonnull) @@ -39312,8 +39609,7 @@ class Test_TC_TGTNAV_8_1 : public TestCommandBridge { chip::Optional mNodeId; chip::Optional mCluster; chip::Optional mEndpoint; - chip::Optional mTargetvalue1; - chip::Optional mTargetvalue2; + chip::Optional mTargetvalue; chip::Optional mTimeout; CHIP_ERROR TestWaitForTheCommissionedDeviceToBeRetrieved_0() @@ -39380,8 +39676,8 @@ class Test_TC_TGTNAV_8_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); __auto_type * params = [[MTRTargetNavigatorClusterNavigateTargetParams alloc] init]; - params.target = mTargetvalue1.HasValue() ? [NSNumber numberWithUnsignedChar:mTargetvalue1.Value()] - : [NSNumber numberWithUnsignedChar:1U]; + params.target = mTargetvalue.HasValue() ? [NSNumber numberWithUnsignedChar:mTargetvalue.Value()] + : [NSNumber numberWithUnsignedChar:1U]; [cluster navigateTargetWithParams:params completionHandler:^( MTRTargetNavigatorClusterNavigateTargetResponseParams * _Nullable values, NSError * _Nullable err) { @@ -39410,7 +39706,7 @@ class Test_TC_TGTNAV_8_1 : public TestCommandBridge { { id actualValue = value; - VerifyOrReturn(CheckValue("CurrentTarget", actualValue, mTargetvalue1.HasValue() ? mTargetvalue1.Value() : 1U)); + VerifyOrReturn(CheckValue("CurrentTarget", actualValue, mTargetvalue.HasValue() ? mTargetvalue.Value() : 1U)); } NextTest(); @@ -43461,10 +43757,6 @@ class Test_TC_PS_1_1 : public TestCommandBridge { break; case 2: ChipLogProgress(chipTool, " ***** Test Step 2 : Read the global attribute: FeatureMap\n"); - if (ShouldSkip("PS.S.F00 || PS.S.F01 || PS.S.F02 || PS.S.F03")) { - NextTest(); - return; - } err = TestReadTheGlobalAttributeFeatureMap_2(); break; case 3: @@ -49987,39 +50279,48 @@ class Test_TC_SWTCH_1_1 : public TestCommandBridge { case 1: ChipLogProgress( chipTool, " ***** Test Step 1 : Read FeatureMap attribute and Check values of flags in this FeatureMap\n"); - if (ShouldSkip("(SWTCH.S.F00 || SWTCH.S.F01 || SWTCH.S.F02 || SWTCH.S.F03 || SWTCH.S.F04)")) { + if (ShouldSkip("!SWTCH.S.F00 && SWTCH.S.F01 && !SWTCH.S.F02 && !SWTCH.S.F03 && !SWTCH.S.F04")) { NextTest(); return; } err = TestReadFeatureMapAttributeAndCheckValuesOfFlagsInThisFeatureMap_1(); break; case 2: - ChipLogProgress(chipTool, " ***** Test Step 2 : read the global attribute: ClusterRevision\n"); - err = TestReadTheGlobalAttributeClusterRevision_2(); - break; - case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Read the global attribute: AttributeList\n"); - if (ShouldSkip("SWTCH.S.F04")) { + ChipLogProgress( + chipTool, " ***** Test Step 2 : Read FeatureMap attribute and Check values of flags in this FeatureMap\n"); + if (ShouldSkip("(SWTCH.S.F00 || SWTCH.S.F01 || SWTCH.S.F02 || SWTCH.S.F03 || SWTCH.S.F04)")) { NextTest(); return; } - err = TestReadTheGlobalAttributeAttributeList_3(); + err = TestReadFeatureMapAttributeAndCheckValuesOfFlagsInThisFeatureMap_2(); + break; + case 3: + ChipLogProgress(chipTool, " ***** Test Step 3 : read the global attribute: ClusterRevision\n"); + err = TestReadTheGlobalAttributeClusterRevision_3(); break; case 4: ChipLogProgress(chipTool, " ***** Test Step 4 : Read the global attribute: AttributeList\n"); - if (ShouldSkip("!SWTCH.S.F04")) { + if (ShouldSkip("SWTCH.S.F04")) { NextTest(); return; } err = TestReadTheGlobalAttributeAttributeList_4(); break; case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Read the global attribute: AcceptedCommandList\n"); - err = TestReadTheGlobalAttributeAcceptedCommandList_5(); + ChipLogProgress(chipTool, " ***** Test Step 5 : Read the global attribute: AttributeList\n"); + if (ShouldSkip("!SWTCH.S.F04")) { + NextTest(); + return; + } + err = TestReadTheGlobalAttributeAttributeList_5(); break; case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : Read the global attribute: GeneratedCommandList\n"); - err = TestReadTheGlobalAttributeGeneratedCommandList_6(); + ChipLogProgress(chipTool, " ***** Test Step 6 : Read the global attribute: AcceptedCommandList\n"); + err = TestReadTheGlobalAttributeAcceptedCommandList_6(); + break; + case 7: + ChipLogProgress(chipTool, " ***** Test Step 7 : Read the global attribute: GeneratedCommandList\n"); + err = TestReadTheGlobalAttributeGeneratedCommandList_7(); break; } @@ -50053,6 +50354,9 @@ class Test_TC_SWTCH_1_1 : public TestCommandBridge { case 6: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -50066,7 +50370,7 @@ class Test_TC_SWTCH_1_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 7; + const uint16_t mTestCount = 8; chip::Optional mNodeId; chip::Optional mCluster; @@ -50091,8 +50395,31 @@ class Test_TC_SWTCH_1_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + { + id actualValue = value; + VerifyOrReturn(CheckValue("FeatureMap", actualValue, 0UL)); + } + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintMinValue("featureMap", [value unsignedIntValue], 0UL)); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadFeatureMapAttributeAndCheckValuesOfFlagsInThisFeatureMap_2() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterSwitch * cluster = [[MTRBaseClusterSwitch alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeFeatureMapWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read FeatureMap attribute and Check values of flags in this FeatureMap Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + VerifyOrReturn(CheckConstraintMinValue("featureMap", [value unsignedIntValue], 1UL)); VerifyOrReturn(CheckConstraintMaxValue("featureMap", [value unsignedIntValue], 31UL)); NextTest(); @@ -50101,7 +50428,7 @@ class Test_TC_SWTCH_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheGlobalAttributeClusterRevision_2() + CHIP_ERROR TestReadTheGlobalAttributeClusterRevision_3() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterSwitch * cluster = [[MTRBaseClusterSwitch alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -50123,7 +50450,7 @@ class Test_TC_SWTCH_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheGlobalAttributeAttributeList_3() + CHIP_ERROR TestReadTheGlobalAttributeAttributeList_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterSwitch * cluster = [[MTRBaseClusterSwitch alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -50150,7 +50477,7 @@ class Test_TC_SWTCH_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheGlobalAttributeAttributeList_4() + CHIP_ERROR TestReadTheGlobalAttributeAttributeList_5() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterSwitch * cluster = [[MTRBaseClusterSwitch alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -50176,7 +50503,7 @@ class Test_TC_SWTCH_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheGlobalAttributeAcceptedCommandList_5() + CHIP_ERROR TestReadTheGlobalAttributeAcceptedCommandList_6() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterSwitch * cluster = [[MTRBaseClusterSwitch alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -50194,7 +50521,7 @@ class Test_TC_SWTCH_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheGlobalAttributeGeneratedCommandList_6() + CHIP_ERROR TestReadTheGlobalAttributeGeneratedCommandList_7() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterSwitch * cluster = [[MTRBaseClusterSwitch alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -50766,116 +51093,124 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { break; case 2: ChipLogProgress(chipTool, " ***** Test Step 2 : Read the global attribute: FeatureMap\n"); - if (ShouldSkip("TSTAT.S.F00 || TSTAT.S.F01 || TSTAT.S.F02 || TSTAT.S.F03 || TSTAT.S.F04 || TSTAT.S.F05")) { + if (ShouldSkip("!TSTAT.S.F00 && !TSTAT.S.F01 && !TSTAT.S.F02 && !TSTAT.S.F03 && !TSTAT.S.F04 && !TSTAT.S.F05")) { NextTest(); return; } err = TestReadTheGlobalAttributeFeatureMap_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Read the global attribute: AttributeList\n"); - err = TestReadTheGlobalAttributeAttributeList_3(); + ChipLogProgress(chipTool, " ***** Test Step 3 : Read the global attribute: FeatureMap\n"); + if (ShouldSkip("TSTAT.S.F00 || TSTAT.S.F01 || TSTAT.S.F02 || TSTAT.S.F03 || TSTAT.S.F04 || TSTAT.S.F05")) { + NextTest(); + return; + } + err = TestReadTheGlobalAttributeFeatureMap_3(); break; case 4: + ChipLogProgress(chipTool, " ***** Test Step 4 : Read the global attribute: AttributeList\n"); + err = TestReadTheGlobalAttributeAttributeList_4(); + break; + case 5: ChipLogProgress( - chipTool, " ***** Test Step 4 : Read the Feature dependent(TSTAT.S.F00(HEAT)) attribute in AttributeList\n"); + chipTool, " ***** Test Step 5 : Read the Feature dependent(TSTAT.S.F00(HEAT)) attribute in AttributeList\n"); if (ShouldSkip("TSTAT.S.F00")) { NextTest(); return; } - err = TestReadTheFeatureDependentTSTATSF00HEATAttributeInAttributeList_4(); + err = TestReadTheFeatureDependentTSTATSF00HEATAttributeInAttributeList_5(); break; - case 5: + case 6: ChipLogProgress( - chipTool, " ***** Test Step 5 : Read the Feature dependent(TSTAT.S.F01(COOL)) attribute in AttributeList\n"); + chipTool, " ***** Test Step 6 : Read the Feature dependent(TSTAT.S.F01(COOL)) attribute in AttributeList\n"); if (ShouldSkip("TSTAT.S.F01")) { NextTest(); return; } - err = TestReadTheFeatureDependentTSTATSF01COOLAttributeInAttributeList_5(); + err = TestReadTheFeatureDependentTSTATSF01COOLAttributeInAttributeList_6(); break; - case 6: + case 7: ChipLogProgress( - chipTool, " ***** Test Step 6 : Read the Feature dependent(TSTAT.S.F02(OCC)) attribute in AttributeList\n"); + chipTool, " ***** Test Step 7 : Read the Feature dependent(TSTAT.S.F02(OCC)) attribute in AttributeList\n"); if (ShouldSkip("TSTAT.S.F02")) { NextTest(); return; } - err = TestReadTheFeatureDependentTSTATSF02OCCAttributeInAttributeList_6(); + err = TestReadTheFeatureDependentTSTATSF02OCCAttributeInAttributeList_7(); break; - case 7: + case 8: ChipLogProgress(chipTool, - " ***** Test Step 7 : Read the Feature dependent(TSTAT.S.F00(HEAT) & TSTAT.S.F02(OCC)) attribute in " + " ***** Test Step 8 : Read the Feature dependent(TSTAT.S.F00(HEAT) & TSTAT.S.F02(OCC)) attribute in " "AttributeList\n"); if (ShouldSkip("TSTAT.S.F00 && TSTAT.S.F02")) { NextTest(); return; } - err = TestReadTheFeatureDependentTSTATSF00HEATTstatsf02occAttributeInAttributeList_7(); + err = TestReadTheFeatureDependentTSTATSF00HEATTstatsf02occAttributeInAttributeList_8(); break; - case 8: + case 9: ChipLogProgress(chipTool, - " ***** Test Step 8 : Read the Feature dependent(TSTAT.S.F01(COOL) & TSTAT.S.F02(OCC)) attribute in " + " ***** Test Step 9 : Read the Feature dependent(TSTAT.S.F01(COOL) & TSTAT.S.F02(OCC)) attribute in " "AttributeList\n"); if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.F02")) { NextTest(); return; } - err = TestReadTheFeatureDependentTSTATSF01COOLTstatsf02occAttributeInAttributeList_8(); + err = TestReadTheFeatureDependentTSTATSF01COOLTstatsf02occAttributeInAttributeList_9(); break; - case 9: + case 10: ChipLogProgress( - chipTool, " ***** Test Step 9 : Read the Feature dependent(TSTAT.S.F05(AUTO)) attribute in AttributeList\n"); + chipTool, " ***** Test Step 10 : Read the Feature dependent(TSTAT.S.F05(AUTO)) attribute in AttributeList\n"); if (ShouldSkip("TSTAT.S.F05")) { NextTest(); return; } - err = TestReadTheFeatureDependentTSTATSF05AUTOAttributeInAttributeList_9(); + err = TestReadTheFeatureDependentTSTATSF05AUTOAttributeInAttributeList_10(); break; - case 10: + case 11: ChipLogProgress( - chipTool, " ***** Test Step 10 : Read the Feature dependent(TSTAT.S.F03(SCH)) attribute in AttributeList\n"); + chipTool, " ***** Test Step 11 : Read the Feature dependent(TSTAT.S.F03(SCH)) attribute in AttributeList\n"); if (ShouldSkip("TSTAT.S.F03")) { NextTest(); return; } - err = TestReadTheFeatureDependentTSTATSF03SCHAttributeInAttributeList_10(); + err = TestReadTheFeatureDependentTSTATSF03SCHAttributeInAttributeList_11(); break; - case 11: + case 12: ChipLogProgress( - chipTool, " ***** Test Step 11 : Read the Feature dependent(TSTAT.S.F04(SB)) attribute in AttributeList\n"); + chipTool, " ***** Test Step 12 : Read the Feature dependent(TSTAT.S.F04(SB)) attribute in AttributeList\n"); if (ShouldSkip("TSTAT.S.F04")) { NextTest(); return; } - err = TestReadTheFeatureDependentTSTATSF04SBAttributeInAttributeList_11(); + err = TestReadTheFeatureDependentTSTATSF04SBAttributeInAttributeList_12(); break; - case 12: + case 13: ChipLogProgress(chipTool, - " ***** Test Step 12 : Read the Feature dependent(TSTAT.S.F04(SB) & TSTAT.S.F02(OCC)) attribute in " + " ***** Test Step 13 : Read the Feature dependent(TSTAT.S.F04(SB) & TSTAT.S.F02(OCC)) attribute in " "AttributeList\n"); if (ShouldSkip("TSTAT.S.F04 && TSTAT.S.F02")) { NextTest(); return; } - err = TestReadTheFeatureDependentTSTATSF04SBTstatsf02occAttributeInAttributeList_12(); - break; - case 13: - ChipLogProgress(chipTool, " ***** Test Step 13 : Read the global attribute: AcceptedCommandList\n"); - err = TestReadTheGlobalAttributeAcceptedCommandList_13(); + err = TestReadTheFeatureDependentTSTATSF04SBTstatsf02occAttributeInAttributeList_13(); break; case 14: + ChipLogProgress(chipTool, " ***** Test Step 14 : Read the global attribute: AcceptedCommandList\n"); + err = TestReadTheGlobalAttributeAcceptedCommandList_14(); + break; + case 15: ChipLogProgress( - chipTool, " ***** Test Step 14 : Read Feature dependent(TSTAT.S.F03(SCH)) commands in AcceptedCommandList\n"); + chipTool, " ***** Test Step 15 : Read Feature dependent(TSTAT.S.F03(SCH)) commands in AcceptedCommandList\n"); if (ShouldSkip("TSTAT.S.F03")) { NextTest(); return; } - err = TestReadFeatureDependentTSTATSF03SCHCommandsInAcceptedCommandList_14(); + err = TestReadFeatureDependentTSTATSF03SCHCommandsInAcceptedCommandList_15(); break; - case 15: - ChipLogProgress(chipTool, " ***** Test Step 15 : Read the global attribute: GeneratedCommandList\n"); - err = TestReadTheGlobalAttributeGeneratedCommandList_15(); + case 16: + ChipLogProgress(chipTool, " ***** Test Step 16 : Read the global attribute: GeneratedCommandList\n"); + err = TestReadTheGlobalAttributeGeneratedCommandList_16(); break; } @@ -50936,6 +51271,9 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 16: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -50949,7 +51287,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 16; + const uint16_t mTestCount = 17; chip::Optional mNodeId; chip::Optional mCluster; @@ -50996,6 +51334,31 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + [cluster readAttributeFeatureMapWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the global attribute: FeatureMap Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("FeatureMap", actualValue, 0UL)); + } + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadTheGlobalAttributeFeatureMap_3() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + [cluster readAttributeFeatureMapWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { NSLog(@"Read the global attribute: FeatureMap Error: %@", err); @@ -51011,7 +51374,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheGlobalAttributeAttributeList_3() + CHIP_ERROR TestReadTheGlobalAttributeAttributeList_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -51040,7 +51403,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheFeatureDependentTSTATSF00HEATAttributeInAttributeList_4() + CHIP_ERROR TestReadTheFeatureDependentTSTATSF00HEATAttributeInAttributeList_5() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -51062,7 +51425,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheFeatureDependentTSTATSF01COOLAttributeInAttributeList_5() + CHIP_ERROR TestReadTheFeatureDependentTSTATSF01COOLAttributeInAttributeList_6() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -51084,7 +51447,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheFeatureDependentTSTATSF02OCCAttributeInAttributeList_6() + CHIP_ERROR TestReadTheFeatureDependentTSTATSF02OCCAttributeInAttributeList_7() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -51106,7 +51469,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheFeatureDependentTSTATSF00HEATTstatsf02occAttributeInAttributeList_7() + CHIP_ERROR TestReadTheFeatureDependentTSTATSF00HEATTstatsf02occAttributeInAttributeList_8() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -51128,7 +51491,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheFeatureDependentTSTATSF01COOLTstatsf02occAttributeInAttributeList_8() + CHIP_ERROR TestReadTheFeatureDependentTSTATSF01COOLTstatsf02occAttributeInAttributeList_9() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -51150,7 +51513,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheFeatureDependentTSTATSF05AUTOAttributeInAttributeList_9() + CHIP_ERROR TestReadTheFeatureDependentTSTATSF05AUTOAttributeInAttributeList_10() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -51174,7 +51537,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheFeatureDependentTSTATSF03SCHAttributeInAttributeList_10() + CHIP_ERROR TestReadTheFeatureDependentTSTATSF03SCHAttributeInAttributeList_11() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -51198,7 +51561,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheFeatureDependentTSTATSF04SBAttributeInAttributeList_11() + CHIP_ERROR TestReadTheFeatureDependentTSTATSF04SBAttributeInAttributeList_12() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -51222,7 +51585,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheFeatureDependentTSTATSF04SBTstatsf02occAttributeInAttributeList_12() + CHIP_ERROR TestReadTheFeatureDependentTSTATSF04SBTstatsf02occAttributeInAttributeList_13() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -51246,7 +51609,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheGlobalAttributeAcceptedCommandList_13() + CHIP_ERROR TestReadTheGlobalAttributeAcceptedCommandList_14() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -51268,7 +51631,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadFeatureDependentTSTATSF03SCHCommandsInAcceptedCommandList_14() + CHIP_ERROR TestReadFeatureDependentTSTATSF03SCHCommandsInAcceptedCommandList_15() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -51293,7 +51656,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheGlobalAttributeGeneratedCommandList_15() + CHIP_ERROR TestReadTheGlobalAttributeGeneratedCommandList_16() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -58542,10 +58905,6 @@ class Test_TC_DGTHREAD_1_1 : public TestCommandBridge { break; case 2: ChipLogProgress(chipTool, " ***** Test Step 2 : TH reads the FeatureMap from DUT\n"); - if (ShouldSkip("DGTHREAD.S.F00 || DGTHREAD.S.F01 || DGTHREAD.S.F02 || DGTHREAD.S.F03")) { - NextTest(); - return; - } err = TestThReadsTheFeatureMapFromDut_2(); break; case 3: @@ -59730,63 +60089,71 @@ class Test_TC_DGWIFI_1_1 : public TestCommandBridge { break; case 2: ChipLogProgress(chipTool, " ***** Test Step 2 : TH reads the FeatureMap from DUT\n"); - if (ShouldSkip("DGWIFI.S.F00 || DGWIFI.S.F01")) { + if (ShouldSkip("( !DGWIFI.S.F00 && !DGWIFI.S.F01 )")) { NextTest(); return; } err = TestThReadsTheFeatureMapFromDut_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : TH reads AttributeList from DUT\n"); - err = TestThReadsAttributeListFromDut_3(); + ChipLogProgress(chipTool, " ***** Test Step 3 : TH reads the FeatureMap from DUT\n"); + if (ShouldSkip("DGWIFI.S.F00 || DGWIFI.S.F01")) { + NextTest(); + return; + } + err = TestThReadsTheFeatureMapFromDut_3(); break; case 4: + ChipLogProgress(chipTool, " ***** Test Step 4 : TH reads AttributeList from DUT\n"); + err = TestThReadsAttributeListFromDut_4(); + break; + case 5: ChipLogProgress( - chipTool, " ***** Test Step 4 : TH reads Feature dependent(DGWIFI.S.F00) attributes in attributeList from DUT\n"); + chipTool, " ***** Test Step 5 : TH reads Feature dependent(DGWIFI.S.F00) attributes in attributeList from DUT\n"); if (ShouldSkip("DGWIFI.S.F00")) { NextTest(); return; } - err = TestThReadsFeatureDependentDGWIFISF00AttributesInAttributeListFromDut_4(); + err = TestThReadsFeatureDependentDGWIFISF00AttributesInAttributeListFromDut_5(); break; - case 5: + case 6: ChipLogProgress( - chipTool, " ***** Test Step 5 : TH reads Feature dependent(DGWIFI.S.F01) attributes in attributeList from DUT\n"); + chipTool, " ***** Test Step 6 : TH reads Feature dependent(DGWIFI.S.F01) attributes in attributeList from DUT\n"); if (ShouldSkip("DGWIFI.S.F01")) { NextTest(); return; } - err = TestThReadsFeatureDependentDGWIFISF01AttributesInAttributeListFromDut_5(); + err = TestThReadsFeatureDependentDGWIFISF01AttributesInAttributeListFromDut_6(); break; - case 6: + case 7: ChipLogProgress( - chipTool, " ***** Test Step 6 : TH reads optional attribute (CurrentMaxRate) in AttributeList from DUT\n"); + chipTool, " ***** Test Step 7 : TH reads optional attribute (CurrentMaxRate) in AttributeList from DUT\n"); if (ShouldSkip("DGWIFI.S.A000b")) { NextTest(); return; } - err = TestThReadsOptionalAttributeCurrentMaxRateInAttributeListFromDut_6(); + err = TestThReadsOptionalAttributeCurrentMaxRateInAttributeListFromDut_7(); break; - case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : TH reads AcceptedCommandList from DUT\n"); + case 8: + ChipLogProgress(chipTool, " ***** Test Step 8 : TH reads AcceptedCommandList from DUT\n"); if (ShouldSkip(" !DGWIFI.S.F01 ")) { NextTest(); return; } - err = TestThReadsAcceptedCommandListFromDut_7(); + err = TestThReadsAcceptedCommandListFromDut_8(); break; - case 8: + case 9: ChipLogProgress(chipTool, - " ***** Test Step 8 : TH reads Feature dependent(DGWIFI.S.F01) command in AcceptedCommandList from DUT\n"); + " ***** Test Step 9 : TH reads Feature dependent(DGWIFI.S.F01) command in AcceptedCommandList from DUT\n"); if (ShouldSkip("DGWIFI.S.F01")) { NextTest(); return; } - err = TestThReadsFeatureDependentDGWIFISF01CommandInAcceptedCommandListFromDut_8(); + err = TestThReadsFeatureDependentDGWIFISF01CommandInAcceptedCommandListFromDut_9(); break; - case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : TH reads GeneratedCommandList from DUT\n"); - err = TestThReadsGeneratedCommandListFromDut_9(); + case 10: + ChipLogProgress(chipTool, " ***** Test Step 10 : TH reads GeneratedCommandList from DUT\n"); + err = TestThReadsGeneratedCommandListFromDut_10(); break; } @@ -59829,6 +60196,9 @@ class Test_TC_DGWIFI_1_1 : public TestCommandBridge { case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 10: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -59842,7 +60212,7 @@ class Test_TC_DGWIFI_1_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 10; + const uint16_t mTestCount = 11; chip::Optional mNodeId; chip::Optional mCluster; @@ -59892,8 +60262,32 @@ class Test_TC_DGWIFI_1_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + { + id actualValue = value; + VerifyOrReturn(CheckValue("FeatureMap", actualValue, 0UL)); + } + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintMinValue("featureMap", [value unsignedIntValue], 0UL)); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThReadsTheFeatureMapFromDut_3() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterWiFiNetworkDiagnostics * cluster = + [[MTRBaseClusterWiFiNetworkDiagnostics alloc] initWithDevice:device endpoint:0 queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeFeatureMapWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads the FeatureMap from DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + VerifyOrReturn(CheckConstraintMinValue("featureMap", [value unsignedIntValue], 1UL)); VerifyOrReturn(CheckConstraintMaxValue("featureMap", [value unsignedIntValue], 3UL)); NextTest(); @@ -59902,7 +60296,7 @@ class Test_TC_DGWIFI_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsAttributeListFromDut_3() + CHIP_ERROR TestThReadsAttributeListFromDut_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterWiFiNetworkDiagnostics * cluster = @@ -59932,7 +60326,7 @@ class Test_TC_DGWIFI_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentDGWIFISF00AttributesInAttributeListFromDut_4() + CHIP_ERROR TestThReadsFeatureDependentDGWIFISF00AttributesInAttributeListFromDut_5() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterWiFiNetworkDiagnostics * cluster = @@ -59957,7 +60351,7 @@ class Test_TC_DGWIFI_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentDGWIFISF01AttributesInAttributeListFromDut_5() + CHIP_ERROR TestThReadsFeatureDependentDGWIFISF01AttributesInAttributeListFromDut_6() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterWiFiNetworkDiagnostics * cluster = @@ -59979,7 +60373,7 @@ class Test_TC_DGWIFI_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsOptionalAttributeCurrentMaxRateInAttributeListFromDut_6() + CHIP_ERROR TestThReadsOptionalAttributeCurrentMaxRateInAttributeListFromDut_7() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterWiFiNetworkDiagnostics * cluster = @@ -60000,7 +60394,7 @@ class Test_TC_DGWIFI_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsAcceptedCommandListFromDut_7() + CHIP_ERROR TestThReadsAcceptedCommandListFromDut_8() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterWiFiNetworkDiagnostics * cluster = @@ -60024,7 +60418,7 @@ class Test_TC_DGWIFI_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentDGWIFISF01CommandInAcceptedCommandListFromDut_8() + CHIP_ERROR TestThReadsFeatureDependentDGWIFISF01CommandInAcceptedCommandListFromDut_9() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterWiFiNetworkDiagnostics * cluster = @@ -60045,7 +60439,7 @@ class Test_TC_DGWIFI_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsGeneratedCommandListFromDut_9() + CHIP_ERROR TestThReadsGeneratedCommandListFromDut_10() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterWiFiNetworkDiagnostics * cluster = @@ -116851,252 +117245,261 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { break; case 2: ChipLogProgress(chipTool, " ***** Test Step 2 : TH reads the FeatureMap from DUT\n"); - if (ShouldSkip("DRLK.S.F00 || DRLK.S.F01 || DRLK.S.F02 || DRLK.S.F04 || DRLK.S.F05 || DRLK.S.F06 || DRLK.S.F07 || " - "DRLK.S.F08 || DRLK.S.F10 || DRLK.S.F11")) { + if (ShouldSkip(" !DRLK.S.F00 && !DRLK.S.F01 && !DRLK.S.F02 && !DRLK.S.F04 && !DRLK.S.F05 && !DRLK.S.F06 && !DRLK.S.F07 " + "&& !DRLK.S.F08 && !DRLK.S.F10 && !DRLK.S.F11 ")) { NextTest(); return; } err = TestThReadsTheFeatureMapFromDut_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : TH reads AttributeList from DUT\n"); - err = TestThReadsAttributeListFromDut_3(); + ChipLogProgress(chipTool, " ***** Test Step 3 : TH reads the FeatureMap from DUT\n"); + if (ShouldSkip("DRLK.S.F00 || DRLK.S.F01 || DRLK.S.F02 || DRLK.S.F04 || DRLK.S.F05 || DRLK.S.F06 || DRLK.S.F07 || " + "DRLK.S.F08 || DRLK.S.F10 || DRLK.S.F11")) { + NextTest(); + return; + } + err = TestThReadsTheFeatureMapFromDut_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : TH reads Feature dependent(DRLK.S.F08) attributes in AttributeList\n"); + ChipLogProgress(chipTool, " ***** Test Step 4 : TH reads AttributeList from DUT\n"); + err = TestThReadsAttributeListFromDut_4(); + break; + case 5: + ChipLogProgress(chipTool, " ***** Test Step 5 : TH reads Feature dependent(DRLK.S.F08) attributes in AttributeList\n"); if (ShouldSkip("DRLK.S.F08")) { NextTest(); return; } - err = TestThReadsFeatureDependentDRLKSF08AttributesInAttributeList_4(); + err = TestThReadsFeatureDependentDRLKSF08AttributesInAttributeList_5(); break; - case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : TH reads Feature dependent(DRLK.S.F00) attributes in AttributeList\n"); + case 6: + ChipLogProgress(chipTool, " ***** Test Step 6 : TH reads Feature dependent(DRLK.S.F00) attributes in AttributeList\n"); if (ShouldSkip("DRLK.S.F00")) { NextTest(); return; } - err = TestThReadsFeatureDependentDRLKSF00AttributesInAttributeList_5(); + err = TestThReadsFeatureDependentDRLKSF00AttributesInAttributeList_6(); break; - case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : TH reads Feature dependent(DRLK.S.F01) attributes in AttributeList\n"); + case 7: + ChipLogProgress(chipTool, " ***** Test Step 7 : TH reads Feature dependent(DRLK.S.F01) attributes in AttributeList\n"); if (ShouldSkip("DRLK.S.F01")) { NextTest(); return; } - err = TestThReadsFeatureDependentDRLKSF01AttributesInAttributeList_6(); + err = TestThReadsFeatureDependentDRLKSF01AttributesInAttributeList_7(); break; - case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : TH reads Feature dependent(DRLK.S.F04) attribute in AttributeList\n"); + case 8: + ChipLogProgress(chipTool, " ***** Test Step 8 : TH reads Feature dependent(DRLK.S.F04) attribute in AttributeList\n"); if (ShouldSkip("DRLK.S.F04")) { NextTest(); return; } - err = TestThReadsFeatureDependentDRLKSF04AttributeInAttributeList_7(); + err = TestThReadsFeatureDependentDRLKSF04AttributeInAttributeList_8(); break; - case 8: - ChipLogProgress(chipTool, " ***** Test Step 8 : TH reads Feature dependent(DRLK.S.F10) attribute in AttributeList\n"); + case 9: + ChipLogProgress(chipTool, " ***** Test Step 9 : TH reads Feature dependent(DRLK.S.F10) attribute in AttributeList\n"); if (ShouldSkip("DRLK.S.F10")) { NextTest(); return; } - err = TestThReadsFeatureDependentDRLKSF10AttributeInAttributeList_8(); + err = TestThReadsFeatureDependentDRLKSF10AttributeInAttributeList_9(); break; - case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : TH reads Feature dependent(DRLK.S.F11) attribute in AttributeList\n"); + case 10: + ChipLogProgress(chipTool, " ***** Test Step 10 : TH reads Feature dependent(DRLK.S.F11) attribute in AttributeList\n"); if (ShouldSkip("DRLK.S.F11")) { NextTest(); return; } - err = TestThReadsFeatureDependentDRLKSF11AttributeInAttributeList_9(); + err = TestThReadsFeatureDependentDRLKSF11AttributeInAttributeList_10(); break; - case 10: + case 11: ChipLogProgress(chipTool, - " ***** Test Step 10 : TH reads Feature dependent(DRLK.S.F00 or DRLK.S.F01) attributes in AttributeList\n"); + " ***** Test Step 11 : TH reads Feature dependent(DRLK.S.F00 or DRLK.S.F01) attributes in AttributeList\n"); if (ShouldSkip("DRLK.S.F00 || DRLK.S.F01")) { NextTest(); return; } - err = TestThReadsFeatureDependentDRLKSF00OrDrlksf01AttributesInAttributeList_10(); + err = TestThReadsFeatureDependentDRLKSF00OrDrlksf01AttributesInAttributeList_11(); break; - case 11: + case 12: ChipLogProgress(chipTool, - " ***** Test Step 11 : TH reads Feature dependent(DRLK.S.F07 or DRLK.S.F00) attribute in AttributeList\n"); + " ***** Test Step 12 : TH reads Feature dependent(DRLK.S.F07 or DRLK.S.F00) attribute in AttributeList\n"); if (ShouldSkip("DRLK.S.F07 || DRLK.S.F00")) { NextTest(); return; } - err = TestThReadsFeatureDependentDRLKSF07OrDrlksf00AttributeInAttributeList_11(); + err = TestThReadsFeatureDependentDRLKSF07OrDrlksf00AttributeInAttributeList_12(); break; - case 12: - ChipLogProgress(chipTool, " ***** Test Step 12 : TH reads optional attribute(Language) in AttributeList\n"); + case 13: + ChipLogProgress(chipTool, " ***** Test Step 13 : TH reads optional attribute(Language) in AttributeList\n"); if (ShouldSkip("DRLK.S.A0021")) { NextTest(); return; } - err = TestThReadsOptionalAttributeLanguageInAttributeList_12(); + err = TestThReadsOptionalAttributeLanguageInAttributeList_13(); break; - case 13: - ChipLogProgress(chipTool, " ***** Test Step 13 : TH reads optional attribute(LEDSettings) in AttributeList\n"); + case 14: + ChipLogProgress(chipTool, " ***** Test Step 14 : TH reads optional attribute(LEDSettings) in AttributeList\n"); if (ShouldSkip("DRLK.S.A0022")) { NextTest(); return; } - err = TestThReadsOptionalAttributeLEDSettingsInAttributeList_13(); + err = TestThReadsOptionalAttributeLEDSettingsInAttributeList_14(); break; - case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : TH reads optional attribute(AutoRelockTime) in AttributeList\n"); + case 15: + ChipLogProgress(chipTool, " ***** Test Step 15 : TH reads optional attribute(AutoRelockTime) in AttributeList\n"); if (ShouldSkip("DRLK.S.A0023")) { NextTest(); return; } - err = TestThReadsOptionalAttributeAutoRelockTimeInAttributeList_14(); + err = TestThReadsOptionalAttributeAutoRelockTimeInAttributeList_15(); break; - case 15: - ChipLogProgress(chipTool, " ***** Test Step 15 : TH reads optional attribute(SoundVolume) in AttributeList\n"); + case 16: + ChipLogProgress(chipTool, " ***** Test Step 16 : TH reads optional attribute(SoundVolume) in AttributeList\n"); if (ShouldSkip("DRLK.S.A0024")) { NextTest(); return; } - err = TestThReadsOptionalAttributeSoundVolumeInAttributeList_15(); + err = TestThReadsOptionalAttributeSoundVolumeInAttributeList_16(); break; - case 16: + case 17: ChipLogProgress( - chipTool, " ***** Test Step 16 : TH reads optional attribute(DefaultConfigurationRegister) in AttributeList\n"); + chipTool, " ***** Test Step 17 : TH reads optional attribute(DefaultConfigurationRegister) in AttributeList\n"); if (ShouldSkip("DRLK.S.A0027")) { NextTest(); return; } - err = TestThReadsOptionalAttributeDefaultConfigurationRegisterInAttributeList_16(); + err = TestThReadsOptionalAttributeDefaultConfigurationRegisterInAttributeList_17(); break; - case 17: + case 18: ChipLogProgress( - chipTool, " ***** Test Step 17 : TH reads optional attribute(EnableLocalProgramming) in AttributeList\n"); + chipTool, " ***** Test Step 18 : TH reads optional attribute(EnableLocalProgramming) in AttributeList\n"); if (ShouldSkip("DRLK.S.A0028")) { NextTest(); return; } - err = TestThReadsOptionalAttributeEnableLocalProgrammingInAttributeList_17(); + err = TestThReadsOptionalAttributeEnableLocalProgrammingInAttributeList_18(); break; - case 18: + case 19: ChipLogProgress( - chipTool, " ***** Test Step 18 : TH reads optional attribute(EnableOneTouchLocking) in AttributeList\n"); + chipTool, " ***** Test Step 19 : TH reads optional attribute(EnableOneTouchLocking) in AttributeList\n"); if (ShouldSkip("DRLK.S.A0029")) { NextTest(); return; } - err = TestThReadsOptionalAttributeEnableOneTouchLockingInAttributeList_18(); + err = TestThReadsOptionalAttributeEnableOneTouchLockingInAttributeList_19(); break; - case 19: + case 20: ChipLogProgress( - chipTool, " ***** Test Step 19 : TH reads optional attribute(EnableInsideStatusLED) in AttributeList\n"); + chipTool, " ***** Test Step 20 : TH reads optional attribute(EnableInsideStatusLED) in AttributeList\n"); if (ShouldSkip("DRLK.S.A002a")) { NextTest(); return; } - err = TestThReadsOptionalAttributeEnableInsideStatusLEDInAttributeList_19(); + err = TestThReadsOptionalAttributeEnableInsideStatusLEDInAttributeList_20(); break; - case 20: + case 21: ChipLogProgress( - chipTool, " ***** Test Step 20 : TH reads optional attribute(EnablePrivacyModeButton) in AttributeList\n"); + chipTool, " ***** Test Step 21 : TH reads optional attribute(EnablePrivacyModeButton) in AttributeList\n"); if (ShouldSkip("DRLK.S.A002b")) { NextTest(); return; } - err = TestThReadsOptionalAttributeEnablePrivacyModeButtonInAttributeList_20(); + err = TestThReadsOptionalAttributeEnablePrivacyModeButtonInAttributeList_21(); break; - case 21: + case 22: ChipLogProgress( - chipTool, " ***** Test Step 21 : TH reads optional attribute(LocalProgrammingFeatures) in AttributeList\n"); + chipTool, " ***** Test Step 22 : TH reads optional attribute(LocalProgrammingFeatures) in AttributeList\n"); if (ShouldSkip("DRLK.S.A002c")) { NextTest(); return; } - err = TestThReadsOptionalAttributeLocalProgrammingFeaturesInAttributeList_21(); - break; - case 22: - ChipLogProgress(chipTool, " ***** Test Step 22 : TH reads AcceptedCommandList from DUT\n"); - err = TestThReadsAcceptedCommandListFromDut_22(); + err = TestThReadsOptionalAttributeLocalProgrammingFeaturesInAttributeList_22(); break; case 23: + ChipLogProgress(chipTool, " ***** Test Step 23 : TH reads AcceptedCommandList from DUT\n"); + err = TestThReadsAcceptedCommandListFromDut_23(); + break; + case 24: ChipLogProgress( - chipTool, " ***** Test Step 23 : TH reads Feature dependent commands(DRLK.S.F04) in AcceptedCommandList\n"); + chipTool, " ***** Test Step 24 : TH reads Feature dependent commands(DRLK.S.F04) in AcceptedCommandList\n"); if (ShouldSkip("DRLK.S.F04")) { NextTest(); return; } - err = TestThReadsFeatureDependentCommandsDRLKSF04InAcceptedCommandList_23(); + err = TestThReadsFeatureDependentCommandsDRLKSF04InAcceptedCommandList_24(); break; - case 24: + case 25: ChipLogProgress( - chipTool, " ***** Test Step 24 : TH reads Feature dependent commands(DRLK.S.F10) in AcceptedCommandList\n"); + chipTool, " ***** Test Step 25 : TH reads Feature dependent commands(DRLK.S.F10) in AcceptedCommandList\n"); if (ShouldSkip("DRLK.S.F10")) { NextTest(); return; } - err = TestThReadsFeatureDependentCommandsDRLKSF10InAcceptedCommandList_24(); + err = TestThReadsFeatureDependentCommandsDRLKSF10InAcceptedCommandList_25(); break; - case 25: + case 26: ChipLogProgress( - chipTool, " ***** Test Step 25 : TH reads Feature dependent commands(DRLK.S.F11) in AcceptedCommandList\n"); + chipTool, " ***** Test Step 26 : TH reads Feature dependent commands(DRLK.S.F11) in AcceptedCommandList\n"); if (ShouldSkip("DRLK.S.F11")) { NextTest(); return; } - err = TestThReadsFeatureDependentCommandsDRLKSF11InAcceptedCommandList_25(); + err = TestThReadsFeatureDependentCommandsDRLKSF11InAcceptedCommandList_26(); break; - case 26: + case 27: ChipLogProgress( - chipTool, " ***** Test Step 26 : TH reads Feature dependent commands(DRLK.S.F08) in AcceptedCommandList\n"); + chipTool, " ***** Test Step 27 : TH reads Feature dependent commands(DRLK.S.F08) in AcceptedCommandList\n"); if (ShouldSkip("DRLK.S.F08")) { NextTest(); return; } - err = TestThReadsFeatureDependentCommandsDRLKSF08InAcceptedCommandList_26(); + err = TestThReadsFeatureDependentCommandsDRLKSF08InAcceptedCommandList_27(); break; - case 27: - ChipLogProgress(chipTool, " ***** Test Step 27 : TH reads optional commands(DRLK.S.C03.Rsp) in AcceptedCommandList\n"); + case 28: + ChipLogProgress(chipTool, " ***** Test Step 28 : TH reads optional commands(DRLK.S.C03.Rsp) in AcceptedCommandList\n"); if (ShouldSkip("DRLK.S.C03.Rsp")) { NextTest(); return; } - err = TestThReadsOptionalCommandsDRLKSC03RspInAcceptedCommandList_27(); + err = TestThReadsOptionalCommandsDRLKSC03RspInAcceptedCommandList_28(); break; - case 28: + case 29: ChipLogProgress( - chipTool, " ***** Test Step 28 : TH reads Feature dependent command(DRLK.S.F04) in GeneratedCommandList\n"); + chipTool, " ***** Test Step 29 : TH reads Feature dependent command(DRLK.S.F04) in GeneratedCommandList\n"); if (ShouldSkip("DRLK.S.F04")) { NextTest(); return; } - err = TestThReadsFeatureDependentCommandDRLKSF04InGeneratedCommandList_28(); + err = TestThReadsFeatureDependentCommandDRLKSF04InGeneratedCommandList_29(); break; - case 29: + case 30: ChipLogProgress( - chipTool, " ***** Test Step 29 : TH reads Feature dependent command(DRLK.S.F10) in GeneratedCommandList\n"); + chipTool, " ***** Test Step 30 : TH reads Feature dependent command(DRLK.S.F10) in GeneratedCommandList\n"); if (ShouldSkip("DRLK.S.F10")) { NextTest(); return; } - err = TestThReadsFeatureDependentCommandDRLKSF10InGeneratedCommandList_29(); + err = TestThReadsFeatureDependentCommandDRLKSF10InGeneratedCommandList_30(); break; - case 30: + case 31: ChipLogProgress( - chipTool, " ***** Test Step 30 : TH reads Feature dependent command(DRLK.S.F11) in GeneratedCommandList\n"); + chipTool, " ***** Test Step 31 : TH reads Feature dependent command(DRLK.S.F11) in GeneratedCommandList\n"); if (ShouldSkip("DRLK.S.F11")) { NextTest(); return; } - err = TestThReadsFeatureDependentCommandDRLKSF11InGeneratedCommandList_30(); + err = TestThReadsFeatureDependentCommandDRLKSF11InGeneratedCommandList_31(); break; - case 31: + case 32: ChipLogProgress( - chipTool, " ***** Test Step 31 : TH reads Feature dependent command(DRLK.S.F08) in GeneratedCommandList\n"); + chipTool, " ***** Test Step 32 : TH reads Feature dependent command(DRLK.S.F08) in GeneratedCommandList\n"); if (ShouldSkip("DRLK.S.F08")) { NextTest(); return; } - err = TestThReadsFeatureDependentCommandDRLKSF08InGeneratedCommandList_31(); + err = TestThReadsFeatureDependentCommandDRLKSF08InGeneratedCommandList_32(); break; } @@ -117205,6 +117608,9 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { case 31: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 32: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -117218,7 +117624,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 32; + const uint16_t mTestCount = 33; chip::Optional mNodeId; chip::Optional mCluster; @@ -117266,8 +117672,31 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + { + id actualValue = value; + VerifyOrReturn(CheckValue("FeatureMap", actualValue, 0UL)); + } + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintMinValue("featureMap", [value unsignedIntValue], 0UL)); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThReadsTheFeatureMapFromDut_3() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeFeatureMapWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads the FeatureMap from DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + VerifyOrReturn(CheckConstraintMinValue("featureMap", [value unsignedIntValue], 1UL)); VerifyOrReturn(CheckConstraintMaxValue("featureMap", [value unsignedIntValue], 4095UL)); NextTest(); @@ -117276,7 +117705,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsAttributeListFromDut_3() + CHIP_ERROR TestThReadsAttributeListFromDut_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117305,7 +117734,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentDRLKSF08AttributesInAttributeList_4() + CHIP_ERROR TestThReadsFeatureDependentDRLKSF08AttributesInAttributeList_5() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117327,7 +117756,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentDRLKSF00AttributesInAttributeList_5() + CHIP_ERROR TestThReadsFeatureDependentDRLKSF00AttributesInAttributeList_6() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117349,7 +117778,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentDRLKSF01AttributesInAttributeList_6() + CHIP_ERROR TestThReadsFeatureDependentDRLKSF01AttributesInAttributeList_7() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117371,7 +117800,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentDRLKSF04AttributeInAttributeList_7() + CHIP_ERROR TestThReadsFeatureDependentDRLKSF04AttributeInAttributeList_8() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117391,7 +117820,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentDRLKSF10AttributeInAttributeList_8() + CHIP_ERROR TestThReadsFeatureDependentDRLKSF10AttributeInAttributeList_9() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117411,7 +117840,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentDRLKSF11AttributeInAttributeList_9() + CHIP_ERROR TestThReadsFeatureDependentDRLKSF11AttributeInAttributeList_10() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117431,7 +117860,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentDRLKSF00OrDrlksf01AttributesInAttributeList_10() + CHIP_ERROR TestThReadsFeatureDependentDRLKSF00OrDrlksf01AttributesInAttributeList_11() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117452,7 +117881,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentDRLKSF07OrDrlksf00AttributeInAttributeList_11() + CHIP_ERROR TestThReadsFeatureDependentDRLKSF07OrDrlksf00AttributeInAttributeList_12() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117472,7 +117901,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsOptionalAttributeLanguageInAttributeList_12() + CHIP_ERROR TestThReadsOptionalAttributeLanguageInAttributeList_13() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117492,7 +117921,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsOptionalAttributeLEDSettingsInAttributeList_13() + CHIP_ERROR TestThReadsOptionalAttributeLEDSettingsInAttributeList_14() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117512,7 +117941,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsOptionalAttributeAutoRelockTimeInAttributeList_14() + CHIP_ERROR TestThReadsOptionalAttributeAutoRelockTimeInAttributeList_15() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117532,7 +117961,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsOptionalAttributeSoundVolumeInAttributeList_15() + CHIP_ERROR TestThReadsOptionalAttributeSoundVolumeInAttributeList_16() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117552,7 +117981,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsOptionalAttributeDefaultConfigurationRegisterInAttributeList_16() + CHIP_ERROR TestThReadsOptionalAttributeDefaultConfigurationRegisterInAttributeList_17() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117572,7 +118001,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsOptionalAttributeEnableLocalProgrammingInAttributeList_17() + CHIP_ERROR TestThReadsOptionalAttributeEnableLocalProgrammingInAttributeList_18() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117592,7 +118021,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsOptionalAttributeEnableOneTouchLockingInAttributeList_18() + CHIP_ERROR TestThReadsOptionalAttributeEnableOneTouchLockingInAttributeList_19() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117612,7 +118041,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsOptionalAttributeEnableInsideStatusLEDInAttributeList_19() + CHIP_ERROR TestThReadsOptionalAttributeEnableInsideStatusLEDInAttributeList_20() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117632,7 +118061,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsOptionalAttributeEnablePrivacyModeButtonInAttributeList_20() + CHIP_ERROR TestThReadsOptionalAttributeEnablePrivacyModeButtonInAttributeList_21() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117652,7 +118081,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsOptionalAttributeLocalProgrammingFeaturesInAttributeList_21() + CHIP_ERROR TestThReadsOptionalAttributeLocalProgrammingFeaturesInAttributeList_22() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117672,7 +118101,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsAcceptedCommandListFromDut_22() + CHIP_ERROR TestThReadsAcceptedCommandListFromDut_23() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117693,7 +118122,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentCommandsDRLKSF04InAcceptedCommandList_23() + CHIP_ERROR TestThReadsFeatureDependentCommandsDRLKSF04InAcceptedCommandList_24() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117715,7 +118144,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentCommandsDRLKSF10InAcceptedCommandList_24() + CHIP_ERROR TestThReadsFeatureDependentCommandsDRLKSF10InAcceptedCommandList_25() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117737,7 +118166,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentCommandsDRLKSF11InAcceptedCommandList_25() + CHIP_ERROR TestThReadsFeatureDependentCommandsDRLKSF11InAcceptedCommandList_26() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117759,7 +118188,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentCommandsDRLKSF08InAcceptedCommandList_26() + CHIP_ERROR TestThReadsFeatureDependentCommandsDRLKSF08InAcceptedCommandList_27() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117784,7 +118213,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsOptionalCommandsDRLKSC03RspInAcceptedCommandList_27() + CHIP_ERROR TestThReadsOptionalCommandsDRLKSC03RspInAcceptedCommandList_28() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117804,7 +118233,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentCommandDRLKSF04InGeneratedCommandList_28() + CHIP_ERROR TestThReadsFeatureDependentCommandDRLKSF04InGeneratedCommandList_29() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117824,7 +118253,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentCommandDRLKSF10InGeneratedCommandList_29() + CHIP_ERROR TestThReadsFeatureDependentCommandDRLKSF10InGeneratedCommandList_30() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117844,7 +118273,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentCommandDRLKSF11InGeneratedCommandList_30() + CHIP_ERROR TestThReadsFeatureDependentCommandDRLKSF11InGeneratedCommandList_31() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117864,7 +118293,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentCommandDRLKSF08InGeneratedCommandList_31() + CHIP_ERROR TestThReadsFeatureDependentCommandDRLKSF08InGeneratedCommandList_32() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue];