diff --git a/.github/workflows/examples-esp32.yaml b/.github/workflows/examples-esp32.yaml index 4339a8d0f38b46..b02119943a279c 100644 --- a/.github/workflows/examples-esp32.yaml +++ b/.github/workflows/examples-esp32.yaml @@ -31,7 +31,7 @@ jobs: if: github.actor != 'restyled-io[bot]' container: - image: connectedhomeip/chip-build-esp32:0.5.91 + image: connectedhomeip/chip-build-esp32:0.5.96 volumes: - "/tmp/bloat_reports:/tmp/bloat_reports" @@ -117,7 +117,7 @@ jobs: if: github.actor != 'restyled-io[bot]' container: - image: connectedhomeip/chip-build-esp32:0.5.91 + image: connectedhomeip/chip-build-esp32:0.5.96 volumes: - "/tmp/bloat_reports:/tmp/bloat_reports" diff --git a/config/tizen/chip-gn/platform/BUILD.gn b/config/tizen/chip-gn/platform/BUILD.gn index 81a68e41fdf486..781cf53d222929 100644 --- a/config/tizen/chip-gn/platform/BUILD.gn +++ b/config/tizen/chip-gn/platform/BUILD.gn @@ -45,9 +45,6 @@ if (chip_enable_wifi) { pkg_config("capi-network-wifi-manager") { packages = [ "capi-network-wifi-manager" ] } - pkg_config("capi-network-softap") { - packages = [ "capi-network-softap" ] - } } if (chip_enable_ble) { @@ -74,10 +71,7 @@ source_set("tizen") { } if (chip_enable_wifi) { - public_configs += [ - ":capi-network-wifi-manager", - ":capi-network-softap", - ] + public_configs += [ ":capi-network-wifi-manager" ] } if (chip_enable_ble) { diff --git a/docs/guides/silabs_efr32_software_update.md b/docs/guides/silabs_efr32_software_update.md index e1fbdc1ee1ca29..adc95607914000 100644 --- a/docs/guides/silabs_efr32_software_update.md +++ b/docs/guides/silabs_efr32_software_update.md @@ -14,21 +14,18 @@ all of the EFR32 example applications. - On a Linux or Darwin platform build the chip-tool and the ota-provider-app as follows: - ``` scripts/examples/gn_build_example.sh examples/chip-tool out/ scripts/examples/gn_build_example.sh examples/ota-provider-app/linux out/debug chip_config_network_layer_ble=false - ``` - Build or download the Gecko Bootloader binary. Follow the instructions in "UG266: Silicon Labs Gecko Bootloader User’s Guide". For the bootloader using the external flash select the "external SPI" bootloader type configured with a single slot of at least 1000 KB. For the bootloader using the internal flash see the Internal Storage Bootloader section below. - Pre-built binaries for some configurations should be available in + Pre-built binaries for some configurations are available at the following + location, see README.md for details - ``` third_party/silabs/matter_support/matter/efr32/bootloader_binaries - ``` - Using the commander tool upload the bootloader to the device running the application. @@ -36,47 +33,35 @@ all of the EFR32 example applications. - Create a bootable image file (using the Lighting application image as an example): - ``` commander gbl create chip-efr32-lighting-example.gbl --app chip-efr32-lighting-example.s37 - ``` - Create the Matter OTA file from the bootable image file: - ``` ./src/app/ota_image_tool.py create -v 0xFFF1 -p 0x8005 -vn 2 -vs "2.0" -da sha256 chip-efr32-lighting-example.gbl chip-efr32-lighting-example.ota - ``` - In a terminal start the Provider app passing to it the path to the Matter OTA file created in the previous step: - ``` rm -r /tmp/chip_* ./out/debug/chip-ota-provider-app -f chip-efr32-lighting-example.ota - ``` - In a separate terminal run the chip-tool commands to provision the Provider: - ``` ./out/chip-tool pairing onnetwork 1 20202021 ./out/chip-tool accesscontrol write acl '[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, {"fabricIndex": 1, "privilege": 3, "authMode": 2, "subjects": null, "targets": null}]' 1 0 - ``` - If the application device had been previously commissioned hold Button 0 for six seconds to factory-reset the device. - In the chip-tool terminal enter: - ``` ./out/chip-tool pairing ble-thread 2 hex: 20202021 3840 - ``` where operationalDataset is obtained from the OpenThread Border Router. - Once the commissioning process completes enter: - ``` ./out/chip-tool otasoftwareupdaterequestor announce-ota-provider 1 0 0 0 2 0 - ``` - The application device will connect to the Provider and start the image download. Once the image is downloaded the device will reboot into the @@ -91,9 +76,7 @@ that both images are built with a reduced feature set such as disabled logging and Matter shell. The following set of compile flags leaves out all the optional features and results in the minimal image size: - ``` chip_detail_logging=false chip_automation_logging=false chip_progress_logging=false is_debug=false show_qr_code=false chip_build_libshell=false enable_openthread_cli=false chip_openthread_ftd=true - ``` Using LZMA compression when building the .gbl file ( passing `--compress lzma` parameter to the `commander gbl create` command) further reduces the downloaded diff --git a/examples/chip-tool/commands/clusters/SubscriptionsCommands.h b/examples/chip-tool/commands/clusters/SubscriptionsCommands.h index 2c4d96a71edd26..7fabd8c24ecf1b 100644 --- a/examples/chip-tool/commands/clusters/SubscriptionsCommands.h +++ b/examples/chip-tool/commands/clusters/SubscriptionsCommands.h @@ -27,7 +27,8 @@ class ShutdownSubscription : public CHIPCommand { public: ShutdownSubscription(CredentialIssuerCommands * credsIssuerConfig) : - CHIPCommand("shutdown-one", credsIssuerConfig, "Shut down a single subscription, identified by its subscription id.") + CHIPCommand("shutdown-one", credsIssuerConfig, + "Shut down a single subscription, identified by its subscription id and target node id.") { AddArgument("subscription-id", 0, UINT64_MAX, &mSubscriptionId); AddArgument("node-id", 0, UINT64_MAX, &mNodeId, diff --git a/examples/light-switch-app/efr32/README.md b/examples/light-switch-app/efr32/README.md index b30234be2c3def..9657fbdac2711a 100644 --- a/examples/light-switch-app/efr32/README.md +++ b/examples/light-switch-app/efr32/README.md @@ -66,6 +66,9 @@ Silicon Labs platform. MG12 boards: - BRD4161A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@19dBm + - BRD4162A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm + - BRD4163A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm, + 868MHz@19dBm - BRD4164A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@19dBm - BRD4166A / SLTB004A / Thunderboard Sense 2 / 2.4GHz@10dBm - BRD4170A / SLWSTK6000B / Multiband Wireless Starter Kit / 2.4GHz@19dBm, @@ -78,8 +81,12 @@ Silicon Labs platform. MG24 boards : + - BRD2601B / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm + - BRD2703A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm - BRD4186A / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@10dBm + - BRD4186C / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@10dBm - BRD4187A / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@20dBm + - BRD4187C / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@20dBm * Build the example application: diff --git a/examples/lighting-app/efr32/README.md b/examples/lighting-app/efr32/README.md index 7cb0ea4878f601..e378cbd8582691 100644 --- a/examples/lighting-app/efr32/README.md +++ b/examples/lighting-app/efr32/README.md @@ -63,6 +63,9 @@ Silicon Labs platform. MG12 boards: - BRD4161A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@19dBm + - BRD4162A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm + - BRD4163A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm, + 868MHz@19dBm - BRD4164A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@19dBm - BRD4166A / SLTB004A / Thunderboard Sense 2 / 2.4GHz@10dBm - BRD4170A / SLWSTK6000B / Multiband Wireless Starter Kit / 2.4GHz@19dBm, @@ -75,8 +78,12 @@ Silicon Labs platform. MG24 boards : + - BRD2601B / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm + - BRD2703A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm - BRD4186A / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@10dBm + - BRD4186C / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@10dBm - BRD4187A / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@20dBm + - BRD4187C / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@20dBm * Build the example application: diff --git a/examples/lock-app/efr32/README.md b/examples/lock-app/efr32/README.md index 00dda0f6829c02..341b9fa49ca6df 100644 --- a/examples/lock-app/efr32/README.md +++ b/examples/lock-app/efr32/README.md @@ -61,6 +61,9 @@ Silicon Labs platform. MG12 boards: - BRD4161A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@19dBm + - BRD4162A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm + - BRD4163A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm, + 868MHz@19dBm - BRD4164A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@19dBm - BRD4166A / SLTB004A / Thunderboard Sense 2 / 2.4GHz@10dBm - BRD4170A / SLWSTK6000B / Multiband Wireless Starter Kit / 2.4GHz@19dBm, @@ -73,8 +76,13 @@ Silicon Labs platform. MG24 boards : + - BRD4162A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm + - BRD4163A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm, + 868MHz@19dBm - BRD4186A / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@10dBm + - BRD4186C / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@10dBm - BRD4187A / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@20dBm + - BRD4187C / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@20dBm * Build the example application: diff --git a/examples/persistent-storage/efr32/README.md b/examples/persistent-storage/efr32/README.md index 841a72fe82727b..4a4651468b97bb 100644 --- a/examples/persistent-storage/efr32/README.md +++ b/examples/persistent-storage/efr32/README.md @@ -54,15 +54,29 @@ The EFR32 platform KVS is fully implemented MG12 boards: - BRD4161A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@19dBm + - BRD4162A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm + - BRD4163A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm, + 868MHz@19dBm + - BRD4164A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@19dBm - BRD4166A / SLTB004A / Thunderboard Sense 2 / 2.4GHz@10dBm - BRD4170A / SLWSTK6000B / Multiband Wireless Starter Kit / 2.4GHz@19dBm, 915MHz@19dBm - BRD4304A / SLWSTK6000B / MGM12P Module / 2.4GHz@19dBm - MG21 boards: + MG21 boards: Currently not supported due to RAM limitation. - BRD4180A / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@20dBm + MG24 boards : + + - BRD4162A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm + - BRD4163A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm, + 868MHz@19dBm + - BRD4186A / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@10dBm + - BRD4186C / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@10dBm + - BRD4187A / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@20dBm + - BRD4187C / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@20dBm + * Build the example application: cd ~/connectedhomeip diff --git a/examples/pigweed-app/efr32/README.md b/examples/pigweed-app/efr32/README.md index 6dc285203776e7..3680f42a67b535 100644 --- a/examples/pigweed-app/efr32/README.md +++ b/examples/pigweed-app/efr32/README.md @@ -66,6 +66,7 @@ following features are available: MG12 boards: - BRD4161A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@19dBm + - BRD4162A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm - BRD4163A / SLWSTK6000B / Dual band Wireless Starter Kit / 2.4GHz@19dBm, 868MHz@19dBm - BRD4164A / SLWSTK6000B / Dual band Wireless Starter Kit / 2.4GHz@19dBm, @@ -75,10 +76,19 @@ following features are available: 915MHz@19dBm - BRD4304A / SLWSTK6000B / MGM12P Module / 2.4GHz@19dBm - MG21 boards: + MG21 boards: Currently not supported due to RAM limitation. - BRD4180A / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@20dBm + MG24 boards : + + - BRD2601B / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm + - BRD2703A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm + - BRD4186A / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@10dBm + - BRD4186C / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@10dBm + - BRD4187A / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@20dBm + - BRD4187C / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@20dBm + * Build the example application: cd ~/connectedhomeip/examples/pigweed-app/efr32 diff --git a/examples/thermostat/efr32/README.md b/examples/thermostat/efr32/README.md index 35cbeefad50b4a..5bc31b87d2d989 100644 --- a/examples/thermostat/efr32/README.md +++ b/examples/thermostat/efr32/README.md @@ -66,6 +66,9 @@ Silicon Labs platform. MG12 boards: - BRD4161A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@19dBm + - BRD4162A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm + - BRD4163A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm, + 868MHz@19dBm - BRD4164A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@19dBm - BRD4166A / SLTB004A / Thunderboard Sense 2 / 2.4GHz@10dBm - BRD4170A / SLWSTK6000B / Multiband Wireless Starter Kit / 2.4GHz@19dBm, @@ -78,8 +81,12 @@ Silicon Labs platform. MG24 boards : + - BRD2601B / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm + - BRD2703A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm - BRD4186A / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@10dBm + - BRD4186C / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@10dBm - BRD4187A / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@20dBm + - BRD4187C / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@20dBm * Build the example application: diff --git a/examples/window-app/efr32/BUILD.gn b/examples/window-app/efr32/BUILD.gn index a9e0c030a9c292..ed8f4b506316e1 100644 --- a/examples/window-app/efr32/BUILD.gn +++ b/examples/window-app/efr32/BUILD.gn @@ -86,6 +86,11 @@ if (efr32_board == "BRD4166A" || efr32_board == "BRD2601B" || # WiFi settings if (chip_enable_wifi) { + # disabling LCD for MG24 for wifi + if (efr32_board == "BRD4186C" || efr32_board == "BRD4187C") { + show_qr_code = false + disable_lcd = true + } wifi_sdk_dir = "${chip_root}/third_party/silabs/matter_support/matter/wifi" efr32_lwip_defs = [ "LWIP_NETIF_API=1" ] efr32_lwip_defs += [ diff --git a/examples/window-app/efr32/README.md b/examples/window-app/efr32/README.md index bcc4b2fa61944d..bd89ef25057620 100644 --- a/examples/window-app/efr32/README.md +++ b/examples/window-app/efr32/README.md @@ -66,6 +66,9 @@ Silicon Labs platform. MG12 boards: - BRD4161A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@19dBm + - BRD4162A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm + - BRD4163A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm, + 868MHz@19dBm - BRD4164A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@19dBm - BRD4166A / SLTB004A / Thunderboard Sense 2 / 2.4GHz@10dBm - BRD4170A / SLWSTK6000B / Multiband Wireless Starter Kit / 2.4GHz@19dBm, @@ -78,8 +81,12 @@ Silicon Labs platform. MG24 boards : + - BRD2601B / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm + - BRD2703A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm - BRD4186A / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@10dBm + - BRD4186C / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@10dBm - BRD4187A / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@20dBm + - BRD4187C / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@20dBm * Build the example application: diff --git a/integrations/cloudbuild/build-all.yaml b/integrations/cloudbuild/build-all.yaml index c8c09ad722319f..d749cd838c318c 100644 --- a/integrations/cloudbuild/build-all.yaml +++ b/integrations/cloudbuild/build-all.yaml @@ -6,7 +6,7 @@ steps: - "--init" - "--recursive" id: Submodules - - name: "connectedhomeip/chip-build-vscode:0.5.91" + - name: "connectedhomeip/chip-build-vscode:0.5.96" env: - PW_ENVIRONMENT_ROOT=/pwenv args: @@ -21,14 +21,14 @@ steps: path: /pwenv timeout: 900s - - name: "connectedhomeip/chip-build-vscode:0.5.91" + - name: "connectedhomeip/chip-build-vscode:0.5.96" env: - PW_ENVIRONMENT_ROOT=/pwenv args: - >- ./scripts/build/build_examples.py --enable-flashbundle --target-glob '*' --skip-target-glob - '{mbed-*,tizen-*,*-tests*,*-chip-test}' build --create-archives + '{tizen-*,*-tests*,*-chip-test}' build --create-archives /workspace/artifacts/ id: CompileAll waitFor: diff --git a/integrations/cloudbuild/chef.yaml b/integrations/cloudbuild/chef.yaml index de842e0bf525db..5851abe9782267 100644 --- a/integrations/cloudbuild/chef.yaml +++ b/integrations/cloudbuild/chef.yaml @@ -1,5 +1,5 @@ steps: - - name: "connectedhomeip/chip-build-vscode:0.5.91" + - name: "connectedhomeip/chip-build-vscode:0.5.96" env: - PW_ENVIRONMENT_ROOT=/pwenv args: @@ -12,7 +12,7 @@ steps: path: /pwenv timeout: 900s - - name: "connectedhomeip/chip-build-vscode:0.5.91" + - name: "connectedhomeip/chip-build-vscode:0.5.96" env: - PW_ENVIRONMENT_ROOT=/pwenv args: @@ -26,7 +26,7 @@ steps: - name: pwenv path: /pwenv - - name: "connectedhomeip/chip-build-vscode:0.5.91" + - name: "connectedhomeip/chip-build-vscode:0.5.96" env: - PW_ENVIRONMENT_ROOT=/pwenv args: diff --git a/integrations/cloudbuild/smoke-test.yaml b/integrations/cloudbuild/smoke-test.yaml index b0333fab36f327..1c7a8f9c058a05 100644 --- a/integrations/cloudbuild/smoke-test.yaml +++ b/integrations/cloudbuild/smoke-test.yaml @@ -6,7 +6,7 @@ steps: - "--init" - "--recursive" id: Submodules - - name: "connectedhomeip/chip-build-vscode:0.5.91" + - name: "connectedhomeip/chip-build-vscode:0.5.96" env: - PW_ENVIRONMENT_ROOT=/pwenv args: @@ -21,7 +21,7 @@ steps: path: /pwenv timeout: 900s - - name: "connectedhomeip/chip-build-vscode:0.5.91" + - name: "connectedhomeip/chip-build-vscode:0.5.96" id: ESP32 env: - PW_ENVIRONMENT_ROOT=/pwenv @@ -37,7 +37,7 @@ steps: - name: pwenv path: /pwenv - - name: "connectedhomeip/chip-build-vscode:0.5.91" + - name: "connectedhomeip/chip-build-vscode:0.5.96" id: NRFConnect env: - PW_ENVIRONMENT_ROOT=/pwenv @@ -54,7 +54,7 @@ steps: - name: pwenv path: /pwenv - - name: "connectedhomeip/chip-build-vscode:0.5.91" + - name: "connectedhomeip/chip-build-vscode:0.5.96" id: EFR32 env: - PW_ENVIRONMENT_ROOT=/pwenv @@ -71,7 +71,7 @@ steps: - name: pwenv path: /pwenv - - name: "connectedhomeip/chip-build-vscode:0.5.91" + - name: "connectedhomeip/chip-build-vscode:0.5.96" id: Linux env: - PW_ENVIRONMENT_ROOT=/pwenv @@ -88,7 +88,7 @@ steps: - name: pwenv path: /pwenv - - name: "connectedhomeip/chip-build-vscode:0.5.91" + - name: "connectedhomeip/chip-build-vscode:0.5.96" id: Android env: - PW_ENVIRONMENT_ROOT=/pwenv diff --git a/scripts/build/build/targets.py b/scripts/build/build/targets.py index c291a111b66f61..9e0a9c1cfe7808 100755 --- a/scripts/build/build/targets.py +++ b/scripts/build/build/targets.py @@ -336,6 +336,8 @@ def HostTargets(): yield target_native.Extend('tests-boringssl', app=HostApp.TESTS, crypto_library=HostCryptoLibrary.BORINGSSL).GlobBlacklist("Non-default test") yield target_native.Extend('tests-coverage', app=HostApp.TESTS, use_coverage=True).GlobBlacklist("Non-default test") yield target_native.Extend('tests-clang', app=HostApp.TESTS, use_clang=True).GlobBlacklist("Non-default test") + yield target_native.Extend('tests-clang-asan', app=HostApp.TESTS, use_clang=True, use_asan=True).GlobBlacklist("Non-default test") + yield target_native.Extend('tests-dmalloc', app=HostApp.TESTS, use_dmalloc=True).GlobBlacklist("Non-default test") test_target = Target(HostBoard.NATIVE.PlatformName(), HostBuilder) yield test_target.Extend(HostBoard.FAKE.BoardName() + '-tests', board=HostBoard.FAKE, app=HostApp.TESTS) diff --git a/scripts/build/builders/gn.py b/scripts/build/builders/gn.py index 031546ae388873..298a9e9c90145b 100644 --- a/scripts/build/builders/gn.py +++ b/scripts/build/builders/gn.py @@ -88,6 +88,17 @@ def _build(self): if self.build_command: cmd.append(self.build_command) + extra_env = self.GnBuildEnv() + if extra_env: + # convert the command into a bash command that includes + # setting environment variables + cmd = [ + 'bash', '-c', '\n' + ' '.join( + ['%s="%s" \\\n' % (key, value) for key, value in extra_env.items()] + + [shlex.join(cmd)] + ) + ] + self._Execute(cmd, title='Building ' + self.identifier) self.PostBuildCommand() diff --git a/scripts/build/builders/host.py b/scripts/build/builders/host.py index 54df761d3dd3ca..a536d6650b5e8f 100644 --- a/scripts/build/builders/host.py +++ b/scripts/build/builders/host.py @@ -214,7 +214,8 @@ def __init__(self, root, runner, app: HostApp, board=HostBoard.NATIVE, separate_event_loop=True, use_libfuzzer=False, use_clang=False, interactive_mode=True, extra_tests=False, use_platform_mdns=False, enable_rpcs=False, - use_coverage=False, crypto_library: HostCryptoLibrary = None): + use_coverage=False, use_dmalloc=False, + crypto_library: HostCryptoLibrary = None): super(HostBuilder, self).__init__( root=os.path.join(root, 'examples', app.ExamplePath()), runner=runner) @@ -222,6 +223,10 @@ def __init__(self, root, runner, app: HostApp, board=HostBoard.NATIVE, self.app = app self.board = board self.extra_gn_options = [] + self.build_env = {} + + if board == HostBoard.ARM64: + self.build_env['PKG_CONFIG_PATH'] = os.path.join(self.SysRootPath('SYSROOT_AARCH64'), 'lib/aarch64-linux-gnu/pkgconfig') if enable_rpcs: self.extra_gn_options.append('import("//with_pw_rpc.gni")') @@ -244,6 +249,16 @@ def __init__(self, root, runner, app: HostApp, board=HostBoard.NATIVE, if use_asan: self.extra_gn_options.append('is_asan=true') + if use_dmalloc: + self.extra_gn_options.append('chip_config_memory_debug_checks=true') + self.extra_gn_options.append('chip_config_memory_debug_dmalloc=true') + + # this is from `dmalloc -b -l DMALLOC_LOG -i 1 high` + self.build_env['DMALLOC_OPTIONS'] = 'debug=0x4f4ed03,inter=1,log=DMALLOC_LOG' + + # glib interop with dmalloc + self.build_env['G_SLICE'] = 'always-malloc' + if not separate_event_loop: self.extra_gn_options.append('config_use_separate_eventloop=false') @@ -327,18 +342,7 @@ def GnBuildArgs(self): raise Exception('Unknown host board type: %r' % self) def GnBuildEnv(self): - if self.board == HostBoard.NATIVE: - return None - elif self.board == HostBoard.FAKE: - return None - elif self.board == HostBoard.ARM64: - return { - 'PKG_CONFIG_PATH': os.path.join( - self.SysRootPath('SYSROOT_AARCH64'), - 'lib/aarch64-linux-gnu/pkgconfig'), - } - else: - raise Exception('Unknown host board type: %r' % self) + return self.build_env def SysRootPath(self, name): if name not in os.environ: diff --git a/scripts/build/testdata/build_linux_on_x64.txt b/scripts/build/testdata/build_linux_on_x64.txt index 9a926ebce07b96..0f4069fbdab319 100644 --- a/scripts/build/testdata/build_linux_on_x64.txt +++ b/scripts/build/testdata/build_linux_on_x64.txt @@ -322,115 +322,189 @@ 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/tv-casting-app/linux --args=chip_inet_config_enable_ipv4=false {out}/linux-x64-tv-casting-app-ipv6only # Building linux-arm64-clang-all-clusters -ninja -C {out}/linux-arm64-clang-all-clusters +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-all-clusters' # Building linux-arm64-clang-all-clusters-app-nodeps -ninja -C {out}/linux-arm64-clang-all-clusters-app-nodeps +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-all-clusters-app-nodeps' # Building linux-arm64-clang-all-clusters-app-nodeps-ipv6only -ninja -C {out}/linux-arm64-clang-all-clusters-app-nodeps-ipv6only +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-all-clusters-app-nodeps-ipv6only' # Building linux-arm64-clang-all-clusters-ipv6only -ninja -C {out}/linux-arm64-clang-all-clusters-ipv6only +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-all-clusters-ipv6only' # Building linux-arm64-clang-all-clusters-minimal -ninja -C {out}/linux-arm64-clang-all-clusters-minimal +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-all-clusters-minimal' # Building linux-arm64-clang-all-clusters-minimal-ipv6only -ninja -C {out}/linux-arm64-clang-all-clusters-minimal-ipv6only +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-all-clusters-minimal-ipv6only' # Building linux-arm64-clang-bridge -ninja -C {out}/linux-arm64-clang-bridge +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-bridge' # Building linux-arm64-clang-bridge-ipv6only -ninja -C {out}/linux-arm64-clang-bridge-ipv6only +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-bridge-ipv6only' # Building linux-arm64-clang-chip-tool -ninja -C {out}/linux-arm64-clang-chip-tool +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-chip-tool' # Building linux-arm64-clang-chip-tool-ipv6only -ninja -C {out}/linux-arm64-clang-chip-tool-ipv6only +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-chip-tool-ipv6only' # Building linux-arm64-clang-chip-tool-nodeps -ninja -C {out}/linux-arm64-clang-chip-tool-nodeps +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-chip-tool-nodeps' # Building linux-arm64-clang-chip-tool-nodeps-ipv6only -ninja -C {out}/linux-arm64-clang-chip-tool-nodeps-ipv6only +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-chip-tool-nodeps-ipv6only' # Building linux-arm64-clang-light -ninja -C {out}/linux-arm64-clang-light +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-light' # Building linux-arm64-clang-light-ipv6only -ninja -C {out}/linux-arm64-clang-light-ipv6only +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-light-ipv6only' # Building linux-arm64-clang-light-rpc -ninja -C {out}/linux-arm64-clang-light-rpc +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-light-rpc' # Building linux-arm64-clang-light-rpc-ipv6only -ninja -C {out}/linux-arm64-clang-light-rpc-ipv6only +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-light-rpc-ipv6only' # Building linux-arm64-clang-lock -ninja -C {out}/linux-arm64-clang-lock +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-lock' # Building linux-arm64-clang-lock-ipv6only -ninja -C {out}/linux-arm64-clang-lock-ipv6only +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-lock-ipv6only' # Building linux-arm64-clang-minmdns -ninja -C {out}/linux-arm64-clang-minmdns +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-minmdns' # Building linux-arm64-clang-minmdns-ipv6only -ninja -C {out}/linux-arm64-clang-minmdns-ipv6only +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-minmdns-ipv6only' # Building linux-arm64-clang-ota-provider -ninja -C {out}/linux-arm64-clang-ota-provider +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-ota-provider' # Building linux-arm64-clang-ota-provider-ipv6only -ninja -C {out}/linux-arm64-clang-ota-provider-ipv6only +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-ota-provider-ipv6only' # Building linux-arm64-clang-ota-provider-nodeps -ninja -C {out}/linux-arm64-clang-ota-provider-nodeps +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-ota-provider-nodeps' # Building linux-arm64-clang-ota-provider-nodeps-ipv6only -ninja -C {out}/linux-arm64-clang-ota-provider-nodeps-ipv6only +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-ota-provider-nodeps-ipv6only' # Building linux-arm64-clang-ota-requestor -ninja -C {out}/linux-arm64-clang-ota-requestor +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-ota-requestor' # Building linux-arm64-clang-ota-requestor-ipv6only -ninja -C {out}/linux-arm64-clang-ota-requestor-ipv6only +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-ota-requestor-ipv6only' # Building linux-arm64-clang-ota-requestor-nodeps -ninja -C {out}/linux-arm64-clang-ota-requestor-nodeps +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-ota-requestor-nodeps' # Building linux-arm64-clang-ota-requestor-nodeps-ipv6only -ninja -C {out}/linux-arm64-clang-ota-requestor-nodeps-ipv6only +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-ota-requestor-nodeps-ipv6only' # Building linux-arm64-clang-python-bindings -ninja -C {out}/linux-arm64-clang-python-bindings chip-repl +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-python-bindings chip-repl' # Building linux-arm64-clang-shell -ninja -C {out}/linux-arm64-clang-shell +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-shell' # Building linux-arm64-clang-shell-ipv6only -ninja -C {out}/linux-arm64-clang-shell-ipv6only +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-shell-ipv6only' # Building linux-arm64-clang-thermostat -ninja -C {out}/linux-arm64-clang-thermostat +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-thermostat' # Building linux-arm64-clang-thermostat-ipv6only -ninja -C {out}/linux-arm64-clang-thermostat-ipv6only +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-thermostat-ipv6only' # Building linux-arm64-clang-tv-app -ninja -C {out}/linux-arm64-clang-tv-app +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-tv-app' # Building linux-arm64-clang-tv-app-ipv6only -ninja -C {out}/linux-arm64-clang-tv-app-ipv6only +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-tv-app-ipv6only' # Building linux-arm64-clang-tv-casting-app -ninja -C {out}/linux-arm64-clang-tv-casting-app +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-tv-casting-app' # Building linux-arm64-clang-tv-casting-app-ipv6only -ninja -C {out}/linux-arm64-clang-tv-casting-app-ipv6only +bash -c ' +PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ + ninja -C {out}/linux-arm64-clang-tv-casting-app-ipv6only' # Building linux-fake-tests ninja -C {out}/linux-fake-tests check diff --git a/scripts/constraints.txt b/scripts/constraints.txt index d80489ae439a37..b587f1998650ef 100644 --- a/scripts/constraints.txt +++ b/scripts/constraints.txt @@ -41,6 +41,7 @@ click==8.1.3 # -r requirements.txt # flask # idf-component-manager + # mbed-tools # pip-tools colorama==0.4.4 # via @@ -102,7 +103,9 @@ ghapi==0.1.19 gitdb==4.0.9 # via gitpython gitpython==3.1.27 ; platform_machine != "aarch64" and sys_platform == "linux" - # via -r requirements.mbed.txt + # via + # -r requirements.mbed.txt + # mbed-tools greenlet==1.1.0 # via gevent humanfriendly==9.2 @@ -126,7 +129,9 @@ itsdangerous==2.0.1 jedi==0.18.0 # via ipython jinja2==3.0.1 - # via flask + # via + # flask + # mbed-tools jsonschema==4.4.0 # via -r requirements.txt junit-xml==1.9 @@ -153,6 +158,8 @@ mbed-ls==1.8.11 ; platform_machine != "aarch64" and sys_platform == "linux" # via -r requirements.mbed.txt mbed-os-tools==1.8.13 # via mbed-ls +mbed-tools==7.55.1.dev1 ; platform_machine != "aarch64" and sys_platform == "linux" + # via -r requirements.mbed.txt mobly==1.11.1 # via -r requirements.txt numpy==1.23.0 @@ -197,6 +204,7 @@ psutil==5.9.1 # via # -r requirements.txt # mobly + # mbed-tools ptyprocess==0.7.0 # via pexpect py==1.11.0 @@ -223,6 +231,7 @@ pyserial==3.5 # via # -c constraints.esp32.txt # mbed-os-tools + # mbed-tools # mobly pytest==6.2.5 ; platform_machine != "aarch64" and sys_platform == "linux" # via -r requirements.mbed.txt @@ -231,7 +240,9 @@ python-dateutil==2.8.1 # pandas # pykwalify python-dotenv==0.20.0 ; platform_machine != "aarch64" and sys_platform == "linux" - # via -r requirements.mbed.txt + # via + # -r requirements.mbed.txt + # mbed-tools python-engineio==3.14.2 # via python-socketio python-socketio==4.6.1 @@ -241,7 +252,9 @@ python-socketio==4.6.1 pytz==2021.1 # via pandas pyudev==0.23.2 ; platform_machine != "aarch64" and sys_platform == "linux" - # via -r requirements.mbed.txt + # via + # -r requirements.mbed.txt + # mbed-tools pyyaml==6.0 # via # idf-component-manager @@ -254,6 +267,7 @@ requests==2.25.1 # -r requirements.txt # idf-component-manager # mbed-os-tools + # mbed-tools # requests-toolbelt requests-toolbelt==0.9.1 # via idf-component-manager @@ -281,7 +295,9 @@ soupsieve==2.3.2.post1 stringcase==1.2.0 # via -r requirements.txt tabulate==0.8.10 - # via -r requirements.txt + # via + # -r requirements.txt + # mbed-tools timeout-decorator==0.5.0 # via mobly toml==0.10.2 @@ -291,13 +307,17 @@ toml==0.10.2 tornado==6.1 # via -r requirements.txt tqdm==4.61.1 - # via idf-component-manager + # via + # idf-component-manager + # mbed-tools traitlets==5.0.5 # via # ipython # matplotlib-inline typing-extensions==4.3.0 ; platform_machine != "aarch64" and sys_platform == "linux" - # via -r requirements.mbed.txt + # via + # -r requirements.mbed.txt + # mbed-tools urllib3==1.26.5 # via requests virtualenv==20.4.7 diff --git a/scripts/requirements.mbed.txt b/scripts/requirements.mbed.txt index ba352d47418d90..97483fe546b495 100644 --- a/scripts/requirements.mbed.txt +++ b/scripts/requirements.mbed.txt @@ -1,4 +1,4 @@ -#mbed-tools>=7.49.1 ; platform_machine != 'aarch64' and sys_platform == 'linux' +mbed-tools>=7.55.1.dev1 ; platform_machine != 'aarch64' and sys_platform == 'linux' pytest==6.2.5 ; platform_machine != 'aarch64' and sys_platform == 'linux' mbed-ls==1.8.11 ; platform_machine != 'aarch64' and sys_platform == 'linux' pdoc3 ; platform_machine != 'aarch64' and sys_platform == 'linux' diff --git a/src/app/ReadHandler.cpp b/src/app/ReadHandler.cpp index 6b609098a87cf4..6a30c3620cee4d 100644 --- a/src/app/ReadHandler.cpp +++ b/src/app/ReadHandler.cpp @@ -755,25 +755,27 @@ void ReadHandler::OnRefreshSubscribeTimerSyncCallback(System::Layer * apSystemLa VerifyOrReturn(apAppState != nullptr); ReadHandler * readHandler = static_cast(apAppState); readHandler->mFlags.Set(ReadHandlerFlags::HoldSync, false); - ChipLogDetail(DataManagement, "Refresh subscribe timer sync after %d seconds", - readHandler->mMaxInterval - readHandler->mMinIntervalFloorSeconds); + ChipLogProgress(DataManagement, "Refresh subscribe timer sync after %d seconds", + readHandler->mMaxInterval - readHandler->mMinIntervalFloorSeconds); InteractionModelEngine::GetInstance()->GetReportingEngine().ScheduleRun(); } CHIP_ERROR ReadHandler::RefreshSubscribeSyncTimer() { - ChipLogDetail(DataManagement, "Refresh Subscribe Sync Timer with max %d seconds", mMaxInterval); InteractionModelEngine::GetInstance()->GetExchangeManager()->GetSessionManager()->SystemLayer()->CancelTimer( OnUnblockHoldReportCallback, this); InteractionModelEngine::GetInstance()->GetExchangeManager()->GetSessionManager()->SystemLayer()->CancelTimer( OnRefreshSubscribeTimerSyncCallback, this); - mFlags.Set(ReadHandlerFlags::HoldReport); - mFlags.Set(ReadHandlerFlags::HoldSync); - - ReturnErrorOnFailure( - InteractionModelEngine::GetInstance()->GetExchangeManager()->GetSessionManager()->SystemLayer()->StartTimer( - System::Clock::Seconds16(mMinIntervalFloorSeconds), OnUnblockHoldReportCallback, this)); + if (!IsChunkedReport()) + { + ChipLogProgress(DataManagement, "Refresh Subscribe Sync Timer with max %d seconds", mMaxInterval); + mFlags.Set(ReadHandlerFlags::HoldReport); + mFlags.Set(ReadHandlerFlags::HoldSync); + ReturnErrorOnFailure( + InteractionModelEngine::GetInstance()->GetExchangeManager()->GetSessionManager()->SystemLayer()->StartTimer( + System::Clock::Seconds16(mMinIntervalFloorSeconds), OnUnblockHoldReportCallback, this)); + } return CHIP_NO_ERROR; } diff --git a/src/app/clusters/color-control-server/color-control-server.cpp b/src/app/clusters/color-control-server/color-control-server.cpp index e523921bdaf9b3..76a6e86d86a06b 100644 --- a/src/app/clusters/color-control-server/color-control-server.cpp +++ b/src/app/clusters/color-control-server/color-control-server.cpp @@ -49,6 +49,14 @@ using namespace chip::app::Clusters::ColorControl; * Attributes Definition *********************************************************/ +enum EnhancedColorModeType +{ + CurrentHueandCurrentSaturation = 0, + CurrentXandCurrentY = 1, + ColorTemperatureMireds = 2, + EnhancedCurrentHueandCurrentSaturation = 3, +}; + ColorControlServer ColorControlServer::instance; /********************************************************** @@ -965,6 +973,8 @@ bool ColorControlServer::moveToHueCommand(EndpointId endpoint, uint16_t hue, uin { Attributes::EnhancedCurrentHue::Get(endpoint, &(colorHueTransitionState->initialEnhancedHue)); Attributes::EnhancedCurrentHue::Get(endpoint, &(colorHueTransitionState->currentEnhancedHue)); + Attributes::ColorMode::Set(endpoint, CurrentHueandCurrentSaturation); + Attributes::EnhancedColorMode::Set(endpoint, EnhancedCurrentHueandCurrentSaturation); colorHueTransitionState->finalEnhancedHue = hue; } diff --git a/src/app/tests/TestReadInteraction.cpp b/src/app/tests/TestReadInteraction.cpp index 58d81f0e3064c3..e0527b9e4c66ff 100644 --- a/src/app/tests/TestReadInteraction.cpp +++ b/src/app/tests/TestReadInteraction.cpp @@ -297,6 +297,7 @@ class TestReadInteraction static void TestReadHandlerInvalidAttributePath(nlTestSuite * apSuite, void * apContext); static void TestProcessSubscribeRequest(nlTestSuite * apSuite, void * apContext); static void TestReadRoundtrip(nlTestSuite * apSuite, void * apContext); + static void TestPostSubscribeRoundtripChunkReport(nlTestSuite * apSuite, void * apContext); static void TestReadRoundtripWithDataVersionFilter(nlTestSuite * apSuite, void * apContext); static void TestReadRoundtripWithNoMatchPathDataVersionFilter(nlTestSuite * apSuite, void * apContext); static void TestReadRoundtripWithMultiSamePathDifferentDataVersionFilter(nlTestSuite * apSuite, void * apContext); @@ -2592,26 +2593,33 @@ void TestReadInteraction::TestPostSubscribeRoundtripChunkStatusReportTimeout(nlT dirtyPath1.mEndpointId = Test::kMockEndpoint3; dirtyPath1.mAttributeId = Test::MockAttributeId(4); - delegate.mpReadHandler->mFlags.Set(ReadHandler::ReadHandlerFlags::HoldReport, false); - delegate.mGotReport = false; - delegate.mNumAttributeResponse = 0; - err = engine->GetReportingEngine().SetDirty(dirtyPath1); delegate.mpReadHandler->mFlags.Set(ReadHandler::ReadHandlerFlags::HoldReport, false); delegate.mpReadHandler->mFlags.Set(ReadHandler::ReadHandlerFlags::HoldSync, false); delegate.mGotReport = false; delegate.mNumAttributeResponse = 0; - ctx.ExpireSessionBobToAlice(); + + ctx.GetLoopback().mSentMessageCount = 0; + ctx.GetLoopback().mNumMessagesToDrop = 1; + ctx.GetLoopback().mNumMessagesToAllowBeforeDropping = 1; + ctx.GetLoopback().mDroppedMessageCount = 0; + ctx.DrainAndServiceIO(); + // Drop status report for the first chunked report, then expire session, handler would be timeout + NL_TEST_ASSERT(apSuite, engine->GetReportingEngine().GetNumReportsInFlight() == 1); + NL_TEST_ASSERT(apSuite, ctx.GetLoopback().mSentMessageCount == 2); + NL_TEST_ASSERT(apSuite, ctx.GetLoopback().mDroppedMessageCount == 1); + NL_TEST_ASSERT(apSuite, engine->GetNumActiveReadHandlers() == 1); + ctx.ExpireSessionAliceToBob(); - NL_TEST_ASSERT(apSuite, engine->GetReportingEngine().GetNumReportsInFlight() == 0); - NL_TEST_ASSERT(apSuite, delegate.mNumAttributeResponse == 0); + ctx.ExpireSessionBobToAlice(); + NL_TEST_ASSERT(apSuite, engine->GetNumActiveReadHandlers() == 0); + ctx.GetLoopback().mSentMessageCount = 0; + ctx.GetLoopback().mNumMessagesToDrop = 0; + ctx.GetLoopback().mNumMessagesToAllowBeforeDropping = 0; + ctx.GetLoopback().mDroppedMessageCount = 0; } - // By now we should have closed all exchanges and sent all pending acks, so - // there should be no queued-up things in the retransmit table. - NL_TEST_ASSERT(apSuite, rm->TestGetCountRetransTable() == 0); - NL_TEST_ASSERT(apSuite, engine->GetNumActiveReadClients() == 0); engine->Shutdown(); NL_TEST_ASSERT(apSuite, ctx.GetExchangeManager().GetNumActiveExchanges() == 0); @@ -2686,36 +2694,138 @@ void TestReadInteraction::TestPostSubscribeRoundtripChunkReportTimeout(nlTestSui dirtyPath1.mEndpointId = Test::kMockEndpoint3; dirtyPath1.mAttributeId = Test::MockAttributeId(4); - delegate.mpReadHandler->mFlags.Set(ReadHandler::ReadHandlerFlags::HoldReport, false); - delegate.mGotReport = false; - delegate.mNumAttributeResponse = 0; - err = engine->GetReportingEngine().SetDirty(dirtyPath1); delegate.mpReadHandler->mFlags.Set(ReadHandler::ReadHandlerFlags::HoldReport, false); delegate.mpReadHandler->mFlags.Set(ReadHandler::ReadHandlerFlags::HoldSync, false); delegate.mGotReport = false; delegate.mNumAttributeResponse = 0; + // Drop second chunked report then expire session, client would be timeout + ctx.GetLoopback().mSentMessageCount = 0; + ctx.GetLoopback().mNumMessagesToDrop = 1; + ctx.GetLoopback().mNumMessagesToAllowBeforeDropping = 2; + ctx.GetLoopback().mDroppedMessageCount = 0; + ctx.DrainAndServiceIO(); - ctx.ExpireSessionBobToAlice(); + NL_TEST_ASSERT(apSuite, engine->GetReportingEngine().GetNumReportsInFlight() == 1); + NL_TEST_ASSERT(apSuite, ctx.GetLoopback().mSentMessageCount == 3); + NL_TEST_ASSERT(apSuite, ctx.GetLoopback().mDroppedMessageCount == 1); - NL_TEST_ASSERT(apSuite, engine->GetReportingEngine().GetNumReportsInFlight() == 0); + ctx.ExpireSessionAliceToBob(); + ctx.ExpireSessionBobToAlice(); NL_TEST_ASSERT(apSuite, delegate.mError == CHIP_ERROR_TIMEOUT); - } - // By now we should have closed all exchanges and sent all pending acks, so - // there should be no queued-up things in the retransmit table. - NL_TEST_ASSERT(apSuite, rm->TestGetCountRetransTable() == 0); + ctx.GetLoopback().mSentMessageCount = 0; + ctx.GetLoopback().mNumMessagesToDrop = 0; + ctx.GetLoopback().mNumMessagesToAllowBeforeDropping = 0; + ctx.GetLoopback().mDroppedMessageCount = 0; + } NL_TEST_ASSERT(apSuite, engine->GetNumActiveReadClients() == 0); engine->Shutdown(); - NL_TEST_ASSERT(apSuite, ctx.GetExchangeManager().GetNumActiveExchanges() == 0); + ctx.CreateSessionAliceToBob(); + ctx.CreateSessionBobToAlice(); +} - // Engine shutdown seems to trigger some messages to try to be sent. Make - // sure those get flushed out. - ctx.DrainAndServiceIO(); +void TestReadInteraction::TestPostSubscribeRoundtripChunkReport(nlTestSuite * apSuite, void * apContext) +{ + TestContext & ctx = *static_cast(apContext); + CHIP_ERROR err = CHIP_NO_ERROR; - ctx.CreateSessionBobToAlice(); + Messaging::ReliableMessageMgr * rm = ctx.GetExchangeManager().GetReliableMessageMgr(); + // Shouldn't have anything in the retransmit table when starting the test. + NL_TEST_ASSERT(apSuite, rm->TestGetCountRetransTable() == 0); + + MockInteractionModelApp delegate; + auto * engine = chip::app::InteractionModelEngine::GetInstance(); + err = engine->Init(&ctx.GetExchangeManager(), &ctx.GetFabricTable()); + NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR); + NL_TEST_ASSERT(apSuite, !delegate.mGotEventResponse); + + ReadPrepareParams readPrepareParams(ctx.GetSessionBobToAlice()); + chip::app::EventPathParams eventPathParams[2]; + readPrepareParams.mpEventPathParamsList = eventPathParams; + readPrepareParams.mpEventPathParamsList[0].mEndpointId = kTestEndpointId; + readPrepareParams.mpEventPathParamsList[0].mClusterId = kTestClusterId; + readPrepareParams.mpEventPathParamsList[0].mEventId = kTestEventIdDebug; + + readPrepareParams.mpEventPathParamsList[1].mEndpointId = kTestEndpointId; + readPrepareParams.mpEventPathParamsList[1].mClusterId = kTestClusterId; + readPrepareParams.mpEventPathParamsList[1].mEventId = kTestEventIdCritical; + + readPrepareParams.mEventPathParamsListSize = 2; + + chip::app::AttributePathParams attributePathParams[1]; + // Mock Attribute 4 is a big attribute, with 6 large OCTET_STRING + attributePathParams[0].mEndpointId = Test::kMockEndpoint3; + attributePathParams[0].mClusterId = Test::MockClusterId(2); + attributePathParams[0].mAttributeId = Test::MockAttributeId(4); + + readPrepareParams.mpAttributePathParamsList = attributePathParams; + readPrepareParams.mAttributePathParamsListSize = 1; + + readPrepareParams.mMinIntervalFloorSeconds = 2; + readPrepareParams.mMaxIntervalCeilingSeconds = 5; + + delegate.mNumAttributeResponse = 0; + readPrepareParams.mKeepSubscriptions = false; + + { + app::ReadClient readClient(chip::app::InteractionModelEngine::GetInstance(), &ctx.GetExchangeManager(), delegate, + chip::app::ReadClient::InteractionType::Subscribe); + printf("\nSend first subscribe request message to Node: %" PRIu64 "\n", chip::kTestDeviceNodeId); + delegate.mGotReport = false; + err = readClient.SendRequest(readPrepareParams); + NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR); + + ctx.DrainAndServiceIO(); + + NL_TEST_ASSERT(apSuite, engine->GetNumActiveReadHandlers() == 1); + NL_TEST_ASSERT(apSuite, engine->ActiveHandlerAt(0) != nullptr); + delegate.mpReadHandler = engine->ActiveHandlerAt(0); + + NL_TEST_ASSERT(apSuite, delegate.mGotEventResponse); + NL_TEST_ASSERT(apSuite, delegate.mGotReport); + NL_TEST_ASSERT(apSuite, engine->GetNumActiveReadHandlers(ReadHandler::InteractionType::Subscribe) == 1); + + GenerateEvents(apSuite, apContext); + chip::app::AttributePathParams dirtyPath1; + dirtyPath1.mClusterId = Test::MockClusterId(2); + dirtyPath1.mEndpointId = Test::kMockEndpoint3; + dirtyPath1.mAttributeId = Test::MockAttributeId(4); + + err = engine->GetReportingEngine().SetDirty(dirtyPath1); + delegate.mGotReport = false; + delegate.mNumAttributeResponse = 0; + + // wait for min interval 2 seconds(in test, we use 1.9second considering the time variation), expect no event is received, + // then wait for 0.5 seconds, then all chunked dirty reports are sent out, which would not honor minInterval + System::Clock::Timestamp startTime = System::SystemClock().GetMonotonicTimestamp(); + while (true) + { + if ((System::SystemClock().GetMonotonicTimestamp() - startTime) >= System::Clock::Milliseconds32(1900)) + { + break; + } + ctx.GetIOContext().DriveIO(); + } + NL_TEST_ASSERT(apSuite, delegate.mNumAttributeResponse == 0); + startTime = System::SystemClock().GetMonotonicTimestamp(); + while (true) + { + if ((System::SystemClock().GetMonotonicTimestamp() - startTime) >= System::Clock::Milliseconds32(500)) + { + break; + } + ctx.GetIOContext().DriveIO(); + } + ctx.DrainAndServiceIO(); + } + // Two chunked reports carry 7 attributeDataIB + NL_TEST_ASSERT(apSuite, delegate.mNumAttributeResponse == 7); + + NL_TEST_ASSERT(apSuite, engine->GetNumActiveReadClients() == 0); + engine->Shutdown(); } namespace { @@ -3832,6 +3942,7 @@ const nlTest sTests[] = NL_TEST_DEF("TestReadHandlerInvalidAttributePath", chip::app::TestReadInteraction::TestReadHandlerInvalidAttributePath), NL_TEST_DEF("TestProcessSubscribeRequest", chip::app::TestReadInteraction::TestProcessSubscribeRequest), NL_TEST_DEF("TestSubscribeRoundtrip", chip::app::TestReadInteraction::TestSubscribeRoundtrip), + NL_TEST_DEF("TestPostSubscribeRoundtripChunkReport", chip::app::TestReadInteraction::TestPostSubscribeRoundtripChunkReport), NL_TEST_DEF("TestReadClientReceiveInvalidMessage", chip::app::TestReadInteraction::TestReadClientReceiveInvalidMessage), NL_TEST_DEF("TestSubscribeClientReceiveInvalidStatusResponse", chip::app::TestReadInteraction::TestSubscribeClientReceiveInvalidStatusResponse), NL_TEST_DEF("TestSubscribeClientReceiveWellFormedStatusResponse", chip::app::TestReadInteraction::TestSubscribeClientReceiveWellFormedStatusResponse), diff --git a/src/app/tests/suites/certification/PICS.yaml b/src/app/tests/suites/certification/PICS.yaml index c36054278ea4a6..5a6c416989f2c9 100644 --- a/src/app/tests/suites/certification/PICS.yaml +++ b/src/app/tests/suites/certification/PICS.yaml @@ -4165,12 +4165,12 @@ PICS: - label: "Does the DUT(server) support the 'Lock supports yearday access schedules' feature?" - id: DRLK.S.F10 + id: DRLK.S.F0a - label: "Does the DUT(server) support the 'Lock supports holiday access schedules' feature?" - id: DRLK.S.F11 + id: DRLK.S.F0b - label: "Does the DUT(server) support the 'PIN codes over the-air supported 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 e83ad337d61a7e..95cb2e287e8fc3 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 @@ -44,7 +44,7 @@ tests: 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 " + !DRLK.S.F0a && !DRLK.S.F0b " command: "readAttribute" attribute: "FeatureMap" response: @@ -52,17 +52,95 @@ tests: 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 || - DRLK.S.F06 || DRLK.S.F07 || DRLK.S.F08 || DRLK.S.F10 || DRLK.S.F11 + - label: "Given DRLK.S.F00(PIN) ensure featuremap has the correct bit set" + PICS: DRLK.S.F00 + command: "readAttribute" + attribute: "FeatureMap" + response: + constraints: + type: bitmap32 + hasMasksSet: [0x1] + + - label: "Given DRLK.S.F01(RID) ensure featuremap has the correct bit set" + PICS: DRLK.S.F01 + command: "readAttribute" + attribute: "FeatureMap" + response: + constraints: + type: bitmap32 + hasMasksSet: [0x2] + + - label: "Given DRLK.S.F02(FGP) ensure featuremap has the correct bit set" + PICS: DRLK.S.F02 + command: "readAttribute" + attribute: "FeatureMap" + response: + constraints: + type: bitmap32 + hasMasksSet: [0x4] + + - label: "Given DRLK.S.F04(WDSCH) ensure featuremap has the correct bit set" + PICS: DRLK.S.F04 + command: "readAttribute" + attribute: "FeatureMap" + response: + constraints: + type: bitmap32 + hasMasksSet: [0x10] + + - label: "Given DRLK.S.F05(DPS) ensure featuremap has the correct bit set" + PICS: DRLK.S.F05 + command: "readAttribute" + attribute: "FeatureMap" + response: + constraints: + type: bitmap32 + hasMasksSet: [0x20] + + - label: "Given DRLK.S.F06(FACE) ensure featuremap has the correct bit set" + PICS: DRLK.S.F06 + command: "readAttribute" + attribute: "FeatureMap" + response: + constraints: + type: bitmap32 + hasMasksSet: [0x40] + + - label: "Given DRLK.S.F07(COTA) ensure featuremap has the correct bit set" + PICS: DRLK.S.F07 + command: "readAttribute" + attribute: "FeatureMap" + response: + constraints: + type: bitmap32 + hasMasksSet: [0x80] + + - label: "Given DRLK.S.F08(USR) ensure featuremap has the correct bit set" + PICS: DRLK.S.F08 + command: "readAttribute" + attribute: "FeatureMap" + response: + constraints: + type: bitmap32 + hasMasksSet: [0x100] + + - label: "Given DRLK.S.F0a(YDSCH) ensure featuremap has the correct bit set" + PICS: DRLK.S.F0a + command: "readAttribute" + attribute: "FeatureMap" + response: + constraints: + type: bitmap32 + hasMasksSet: [0x400] + + - label: "Given DRLK.S.F0b(HDSCH) ensure featuremap has the correct bit set" + PICS: DRLK.S.F0b command: "readAttribute" attribute: "FeatureMap" response: constraints: type: bitmap32 - minValue: 1 - maxValue: 4095 + hasMasksSet: [0x800] - label: "TH reads AttributeList from DUT" command: "readAttribute" @@ -111,8 +189,8 @@ tests: type: list contains: [20] - - label: "TH reads Feature dependent(DRLK.S.F10) attribute in AttributeList" - PICS: DRLK.S.F10 + - label: "TH reads Feature dependent(DRLK.S.F0a) attribute in AttributeList" + PICS: DRLK.S.F0a command: "readAttribute" attribute: "AttributeList" response: @@ -120,8 +198,8 @@ tests: type: list contains: [21] - - label: "TH reads Feature dependent(DRLK.S.F11) attribute in AttributeList" - PICS: DRLK.S.F11 + - label: "TH reads Feature dependent(DRLK.S.F0b) attribute in AttributeList" + PICS: DRLK.S.F0b command: "readAttribute" attribute: "AttributeList" response: @@ -269,9 +347,9 @@ tests: contains: [11, 12, 13] - label: - "TH reads Feature dependent commands(DRLK.S.F10) in + "TH reads Feature dependent commands(DRLK.S.F0a) in AcceptedCommandList" - PICS: DRLK.S.F10 + PICS: DRLK.S.F0a command: "readAttribute" attribute: "AcceptedCommandList" response: @@ -280,9 +358,9 @@ tests: contains: [14, 15, 16] - label: - "TH reads Feature dependent commands(DRLK.S.F11) in + "TH reads Feature dependent commands(DRLK.S.F0b) in AcceptedCommandList" - PICS: DRLK.S.F11 + PICS: DRLK.S.F0b command: "readAttribute" attribute: "AcceptedCommandList" response: @@ -322,9 +400,9 @@ tests: contains: [12] - label: - "TH reads Feature dependent command(DRLK.S.F10) in + "TH reads Feature dependent command(DRLK.S.F0a) in GeneratedCommandList" - PICS: DRLK.S.F10 + PICS: DRLK.S.F0a command: "readAttribute" attribute: "GeneratedCommandList" response: @@ -333,9 +411,9 @@ tests: contains: [15] - label: - "TH reads Feature dependent command(DRLK.S.F11) in + "TH reads Feature dependent command(DRLK.S.F0b) in GeneratedCommandList" - PICS: DRLK.S.F11 + PICS: DRLK.S.F0b command: "readAttribute" attribute: "GeneratedCommandList" response: diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_2_1.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_2_1.yaml index 709969ee58a4d8..379c95d8385008 100644 --- a/src/app/tests/suites/certification/Test_TC_DRLK_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_DRLK_2_1.yaml @@ -683,7 +683,7 @@ tests: - label: "TH reads NumberOfYearDay SchedulesSupportedPeruser attribute from DUT" - PICS: DRLK.S.F10 && DRLK.S.A0015 + PICS: DRLK.S.F0a && DRLK.S.A0015 verification: | ./chip-tool doorlock read number-of-year-day-schedules-supported-per-user 1 1 @@ -729,7 +729,7 @@ tests: disabled: true - label: "TH reads NumberOfHoliDay SchedulesSupported attribute from DUT" - PICS: DRLK.S.F11 && DRLK.S.A0016 + PICS: DRLK.S.F0b && DRLK.S.A0016 verification: | ./chip-tool doorlock read number-of-holiday-schedules-supported 1 1 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 30977190efa2a7..bffd1db40b6a6d 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 @@ -34,7 +34,7 @@ tests: - label: "TH reads NumberOfHoliday SchedulesSupported and saves for future use." - PICS: DRLK.S.F11 && DRLK.S.A0016 + PICS: DRLK.S.F0b && DRLK.S.A0016 verification: | ./chip-tool doorlock read number-of-holiday-schedules-supported 1 1 Verify " NumberOfHoliDay SchedulesSuppored" on the TH(Chip-tool) Log: @@ -51,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.F11 && DRLK.S.C11.Rsp + PICS: DRLK.S.F0b && 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: @@ -73,7 +73,7 @@ tests: - label: "TH sends Get Holiday Schedule Command to DUT with HolidayIndex as 1" - PICS: DRLK.S.F11 && DRLK.S.C12.Rsp && DRLK.S.C12.Tx + PICS: DRLK.S.F0b && 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: @@ -131,7 +131,7 @@ tests: - label: "TH sends Get Holiday Schedule Command to DUT with Invalid HolidayIndex as 15." - PICS: DRLK.S.F11 && DRLK.S.C12.Rsp && DRLK.S.C12.Tx + PICS: DRLK.S.F0b && 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: @@ -153,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.F11 && DRLK.S.C12.Rsp && DRLK.S.C12.Tx + PICS: DRLK.S.F0b && 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: @@ -169,7 +169,7 @@ tests: - label: "TH send Clear Holiday Schedule Command to DUT with HolidayIndex as 1" - PICS: DRLK.S.F11 && DRLK.S.C13.Rsp + PICS: DRLK.S.F0b && 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: @@ -191,7 +191,7 @@ tests: - label: "TH sends Get Holiday Schedule Command to DUT with HolidayIndex as 1." - PICS: DRLK.S.F11 && DRLK.S.C12.Rsp && DRLK.S.C12.Tx + PICS: DRLK.S.F0b && 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_2_7.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_2_7.yaml index bc825c2f975293..4f962e0de17a46 100644 --- a/src/app/tests/suites/certification/Test_TC_DRLK_2_7.yaml +++ b/src/app/tests/suites/certification/Test_TC_DRLK_2_7.yaml @@ -84,7 +84,7 @@ tests: value: null - label: "TH reads NumberOfYearDay SchedulesSupportedPerUser attribute" - PICS: DRLK.S.F10 && DRLK.S.A0015 + PICS: DRLK.S.F0a && DRLK.S.A0015 command: "readAttribute" attribute: "NumberOfYearDaySchedulesSupportedPerUser" response: @@ -104,7 +104,7 @@ tests: maxValue: 65534 - label: "TH sends Set Year Day Schedule Command to DUT" - PICS: DRLK.S.F10 && DRLK.S.C0e.Rsp + PICS: DRLK.S.F0a && DRLK.S.C0e.Rsp command: "SetYearDaySchedule" arguments: values: @@ -119,7 +119,7 @@ tests: #issue #18591 - label: "TH sends Get Year Day Schedule Command to DUT" - PICS: DRLK.S.F10 && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx + PICS: DRLK.S.F0a && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx command: "GetYearDaySchedule" arguments: values: @@ -159,7 +159,7 @@ tests: error: INVALID_COMMAND - label: "TH sends Get Year Day Schedule Command to DUT" - PICS: DRLK.S.F10 && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx + PICS: DRLK.S.F0a && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx command: "GetYearDaySchedule" arguments: values: @@ -203,7 +203,7 @@ tests: value: 0 - label: "TH sends Get Year Day Schedule Command to DUT" - PICS: DRLK.S.F10 && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx + PICS: DRLK.S.F0a && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx command: "GetYearDaySchedule" arguments: values: @@ -237,7 +237,7 @@ tests: value: 1 - label: "TH sends Get Year Day Schedule Command to DUT" - PICS: DRLK.S.F10 && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx && DRLK.S.C10.Rsp + PICS: DRLK.S.F0a && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx && DRLK.S.C10.Rsp command: "GetYearDaySchedule" arguments: values: @@ -275,7 +275,7 @@ tests: value: 2100 - label: "TH sends Get Year Day Schedule Command to DUT" - PICS: DRLK.S.F10 && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx + PICS: DRLK.S.F0a && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx command: "GetYearDaySchedule" arguments: values: @@ -299,7 +299,7 @@ tests: minValue: 1081 - label: "TH sends Clear Year Day Schedule to DUT" - PICS: DRLK.S.F10 && DRLK.S.C10.Rsp + PICS: DRLK.S.F0a && DRLK.S.C10.Rsp command: "ClearYearDaySchedule" arguments: values: @@ -311,7 +311,7 @@ tests: error: INVALID_COMMAND - label: "Clear a year day schedule for the first user" - PICS: DRLK.S.F10 && DRLK.S.C10.Rsp + PICS: DRLK.S.F0a && DRLK.S.C10.Rsp command: "ClearYearDaySchedule" arguments: values: diff --git a/src/app/tests/suites/certification/ci-pics-values b/src/app/tests/suites/certification/ci-pics-values index 5f22d02e45d4ea..f0a95190c65c76 100644 --- a/src/app/tests/suites/certification/ci-pics-values +++ b/src/app/tests/suites/certification/ci-pics-values @@ -1124,7 +1124,7 @@ ILL.S.A0002=1 ILL.S.A0003=1 ILL.S.A0004=1 -#Door Lock +#Door Lock #server attributes DRLK.S.DetectLockJammed=1 DRLK.S.Simulate.NotFullyLocked=1 @@ -1175,14 +1175,14 @@ DRLK.S.E04=1 #Server Features DRLK.S.F00=1 DRLK.S.F01=1 -DRLK.S.F02=1 +DRLK.S.F02=0 DRLK.S.F04=1 DRLK.S.F05=1 -DRLK.S.F06=1 +DRLK.S.F06=0 DRLK.S.F07=1 DRLK.S.F08=1 -DRLK.S.F10=1 -DRLK.S.F11=1 +DRLK.S.F0a=1 +DRLK.S.F0b=1 #Server commands DRLK.S.C00.Rsp=1 @@ -1291,7 +1291,7 @@ DRLK.C.C1c.Rsp=1 DRLK.C.C23.Rsp=1 DRLK.C.C25.Rsp=1 -#Device Management +#Device Management #Server Attributes BINFO.S.A0000=1 BINFO.S.A0001=1 @@ -1551,7 +1551,7 @@ DESC.C.A0002=1 DESC.C.A0003=1 DESC.C.A0004=1 -#Secure Channel +#Secure Channel MCORE.SC.SII_OP_DISCOVERY_KEY=1 MCORE.SC.SAI_OP_DISCOVERY_KEY=1 MCORE.SC.T_KEY=1 diff --git a/src/controller/CHIPDeviceController.cpp b/src/controller/CHIPDeviceController.cpp index 8bcba1f5c06564..88bef7820efd71 100644 --- a/src/controller/CHIPDeviceController.cpp +++ b/src/controller/CHIPDeviceController.cpp @@ -489,6 +489,17 @@ void DeviceCommissioner::Shutdown() } #endif // CHIP_DEVICE_CONFIG_ENABLE_COMMISSIONER_DISCOVERY + // If we have a commissionee device for the device being commissioned, + // release it now, before we release our whole commissionee pool. + if (mDeviceBeingCommissioned != nullptr) + { + auto * commissionee = FindCommissioneeDevice(mDeviceBeingCommissioned->GetDeviceId()); + if (commissionee) + { + ReleaseCommissioneeDevice(commissionee); + } + } + // Release everything from the commissionee device pool here. DeviceController::Shutdown releases operational. mCommissioneeDevicePool.ReleaseAll(); @@ -1561,6 +1572,15 @@ void DeviceCommissioner::CommissioningStageComplete(CHIP_ERROR err, Commissionin { // Once this stage is complete, reset mDeviceBeingCommissioned - this will be reset when the delegate calls the next step. MATTER_TRACE_EVENT_SCOPE("CommissioningStageComplete", "DeviceCommissioner"); + + if (mDeviceBeingCommissioned == nullptr) + { + // We are getting a stray callback (e.g. due to un-cancellable + // operations) when we are not in fact commissioning anything. Just + // ignore it. + return; + } + NodeId nodeId = mDeviceBeingCommissioned->GetDeviceId(); DeviceProxy * proxy = mDeviceBeingCommissioned; mDeviceBeingCommissioned = nullptr; diff --git a/src/credentials/CHIPCert.cpp b/src/credentials/CHIPCert.cpp index a246558af8bf3a..e5167d05dea768 100644 --- a/src/credentials/CHIPCert.cpp +++ b/src/credentials/CHIPCert.cpp @@ -607,7 +607,10 @@ bool ChipRDN::IsEqual(const ChipRDN & other) const return mString.data_equal(other.mString); } -ChipDN::ChipDN() {} +ChipDN::ChipDN() +{ + Clear(); +} ChipDN::~ChipDN() {} diff --git a/src/credentials/CHIPCert.h b/src/credentials/CHIPCert.h index d95671ee74c3a4..af45c71957fad8 100644 --- a/src/credentials/CHIPCert.h +++ b/src/credentials/CHIPCert.h @@ -193,7 +193,13 @@ struct ChipRDN bool IsEqual(const ChipRDN & other) const; bool IsEmpty() const { return mAttrOID == chip::ASN1::kOID_NotSpecified; } - void Clear() { mAttrOID = chip::ASN1::kOID_NotSpecified; } + void Clear() + { + mAttrOID = chip::ASN1::kOID_NotSpecified; + mAttrIsPrintableString = false; + mChipVal = 0; + mString = CharSpan{}; + } }; /** diff --git a/src/credentials/GroupDataProviderImpl.cpp b/src/credentials/GroupDataProviderImpl.cpp index 0626a8e73baa97..d286d406714ee6 100644 --- a/src/credentials/GroupDataProviderImpl.cpp +++ b/src/credentials/GroupDataProviderImpl.cpp @@ -1856,13 +1856,15 @@ CHIP_ERROR GroupDataProviderImpl::GroupKeyContext::MessageDecrypt(const ByteSpan CHIP_ERROR GroupDataProviderImpl::GroupKeyContext::PrivacyEncrypt(const ByteSpan & input, const ByteSpan & nonce, MutableByteSpan & output) const { - return CHIP_ERROR_NOT_IMPLEMENTED; + return Crypto::AES_CTR_crypt(input.data(), input.size(), mPrivacyKey, Crypto::kAES_CCM128_Key_Length, nonce.data(), + nonce.size(), output.data()); } CHIP_ERROR GroupDataProviderImpl::GroupKeyContext::PrivacyDecrypt(const ByteSpan & input, const ByteSpan & nonce, MutableByteSpan & output) const { - return CHIP_ERROR_NOT_IMPLEMENTED; + return Crypto::AES_CTR_crypt(input.data(), input.size(), mPrivacyKey, Crypto::kAES_CCM128_Key_Length, nonce.data(), + nonce.size(), output.data()); } GroupDataProviderImpl::GroupSessionIterator * GroupDataProviderImpl::IterateGroupSessions(uint16_t session_id) diff --git a/src/credentials/tests/TestChipCert.cpp b/src/credentials/tests/TestChipCert.cpp index c84b18db79024c..3725f00acd1a6b 100644 --- a/src/credentials/tests/TestChipCert.cpp +++ b/src/credentials/tests/TestChipCert.cpp @@ -220,15 +220,24 @@ static void TestChipCert_ChipDN(nlTestSuite * inSuite, void * inContext) const static CATValues noc_cats = { { 0xABCD0001, chip::kUndefinedCAT, chip::kUndefinedCAT } }; ChipDN chip_dn; + uint8_t certType = kCertType_FirmwareSigning; // Start with non-default value + + NL_TEST_ASSERT(inSuite, chip_dn.IsEmpty()); + NL_TEST_ASSERT(inSuite, chip_dn.RDNCount() == 0); + NL_TEST_ASSERT(inSuite, chip_dn.GetCertType(certType) == CHIP_NO_ERROR); + NL_TEST_ASSERT(inSuite, chip_dn.IsEmpty() == true); + NL_TEST_ASSERT(inSuite, certType == kCertType_NotSpecified); + NL_TEST_ASSERT(inSuite, chip_dn.AddAttribute_CommonName(CharSpan(noc_rdn, strlen(noc_rdn)), false) == CHIP_NO_ERROR); NL_TEST_ASSERT(inSuite, chip_dn.AddAttribute_MatterNodeId(0xAAAABBBBCCCCDDDD) == CHIP_NO_ERROR); NL_TEST_ASSERT(inSuite, chip_dn.AddAttribute_MatterFabricId(0xFAB00000FAB00001) == CHIP_NO_ERROR); NL_TEST_ASSERT(inSuite, chip_dn.AddAttribute_GivenName(CharSpan(noc_rdn2, strlen(noc_rdn2)), true) == CHIP_NO_ERROR); NL_TEST_ASSERT(inSuite, chip_dn.AddCATs(noc_cats) == CHIP_NO_ERROR); + NL_TEST_ASSERT(inSuite, chip_dn.RDNCount() == 5); NL_TEST_ASSERT(inSuite, chip_dn.AddAttribute_GivenName(CharSpan(noc_rdn2, strlen(noc_rdn2)), true) == CHIP_ERROR_NO_MEMORY); + NL_TEST_ASSERT(inSuite, chip_dn.RDNCount() == 5); - uint8_t certType; NL_TEST_ASSERT(inSuite, chip_dn.GetCertType(certType) == CHIP_NO_ERROR); NL_TEST_ASSERT(inSuite, certType == kCertType_Node); diff --git a/src/crypto/CHIPCryptoPAL.cpp b/src/crypto/CHIPCryptoPAL.cpp index 859f5809e4b742..4a878eecfc5eeb 100644 --- a/src/crypto/CHIPCryptoPAL.cpp +++ b/src/crypto/CHIPCryptoPAL.cpp @@ -706,6 +706,16 @@ CHIP_ERROR EcdsaAsn1SignatureToRaw(size_t fe_length_bytes, const ByteSpan & asn1 return CHIP_NO_ERROR; } +CHIP_ERROR AES_CTR_crypt(const uint8_t * input, size_t input_length, const uint8_t * key, size_t key_length, const uint8_t * nonce, + size_t nonce_length, uint8_t * output) +{ + // Discard tag portion of CCM to apply only CTR mode encryption/decryption. + constexpr size_t kTagLen = Crypto::kAES_CCM128_Tag_Length; + uint8_t tag[kTagLen]; + + return AES_CCM_encrypt(input, input_length, nullptr, 0, key, key_length, nonce, nonce_length, output, tag, kTagLen); +} + CHIP_ERROR GenerateCompressedFabricId(const Crypto::P256PublicKey & root_public_key, uint64_t fabric_id, MutableByteSpan & out_compressed_fabric_id) { diff --git a/src/crypto/CHIPCryptoPAL.h b/src/crypto/CHIPCryptoPAL.h index 544a554dcb31eb..9c5de092867ee3 100644 --- a/src/crypto/CHIPCryptoPAL.h +++ b/src/crypto/CHIPCryptoPAL.h @@ -78,6 +78,8 @@ constexpr size_t kP256_PublicKey_Length = CHIP_CRYPTO_PUBLIC_KEY_SIZE_BYTES; constexpr size_t kAES_CCM128_Key_Length = 128u / 8u; constexpr size_t kAES_CCM128_Block_Length = kAES_CCM128_Key_Length; +constexpr size_t kAES_CCM128_Nonce_Length = 13; +constexpr size_t kAES_CCM128_Tag_Length = 16; /* These sizes are hardcoded here to remove header dependency on underlying crypto library * in a public interface file. The validity of these sizes is verified by static_assert in @@ -614,11 +616,30 @@ CHIP_ERROR AES_CCM_encrypt(const uint8_t * plaintext, size_t plaintext_length, c * @param plaintext Buffer to write plaintext into * @return Returns a CHIP_ERROR on error, CHIP_NO_ERROR otherwise **/ - CHIP_ERROR AES_CCM_decrypt(const uint8_t * ciphertext, size_t ciphertext_length, const uint8_t * aad, size_t aad_length, const uint8_t * tag, size_t tag_length, const uint8_t * key, size_t key_length, const uint8_t * nonce, size_t nonce_length, uint8_t * plaintext); +/** + * @brief A function that implements AES-CTR encryption/decryption + * + * This implements the AES-CTR-Encrypt/Decrypt() cryptographic primitives per sections + * 3.7.1 and 3.7.2 of the specification. For an empty input, the user of the API + * can provide an empty string, or a nullptr, and provide input as 0. + * The output buffer can also be an empty string, or a nullptr for this case. + * + * @param input Input text to encrypt/decrypt + * @param input_length Length of ciphertext + * @param key Decryption key + * @param key_length Length of Decryption key (in bytes) + * @param nonce Encryption nonce + * @param nonce_length Length of encryption nonce + * @param output Buffer to write output into + * @return Returns a CHIP_ERROR on error, CHIP_NO_ERROR otherwise + **/ +CHIP_ERROR AES_CTR_crypt(const uint8_t * input, size_t input_length, const uint8_t * key, size_t key_length, const uint8_t * nonce, + size_t nonce_length, uint8_t * output); + /** * @brief Generate a PKCS#10 CSR, usable for Matter, from a P256Keypair. * diff --git a/src/crypto/tests/CHIPCryptoPALTest.cpp b/src/crypto/tests/CHIPCryptoPALTest.cpp index 485ead2cf99322..861db7f8b3bb7b 100644 --- a/src/crypto/tests/CHIPCryptoPALTest.cpp +++ b/src/crypto/tests/CHIPCryptoPALTest.cpp @@ -161,6 +161,103 @@ static int test_entropy_source(void * data, uint8_t * output, size_t len, size_t return 0; } +struct AesCtrTestEntry +{ + const uint8_t * key; ///< Key to use for AES-CTR-128 encryption/decryption -- 16 byte length + const uint8_t * nonce; ///< Nonce to use for AES-CTR-128 encryption/decryption -- 13 byte length + const uint8_t * plaintext; + size_t plaintextLen; + const uint8_t * ciphertext; + size_t ciphertextLen; +}; + +/** + * Test vectors for AES-CTR-128 encryption/decryption. + * + * Sourced from: https://www.ietf.org/rfc/rfc3686.txt (Section 6) + * Modified to use `IV = flags byte | 13 byte nonce | u16 counter` as defined in NIST SP 800-38A. + * + * All AES-CCM test vectors can be used as well, but those are already called to validate underlying AES-CCM functionality. + */ +const AesCtrTestEntry theAesCtrTestVector[] = { + { + .key = (const uint8_t *) "\xae\x68\x52\xf8\x12\x10\x67\xcc\x4b\xf7\xa5\x76\x55\x77\xf3\x9e", + .nonce = (const uint8_t *) "\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00", + .plaintext = (const uint8_t *) "\x53\x69\x6e\x67\x6c\x65\x20\x62\x6c\x6f\x63\x6b\x20\x6d\x73\x67", + .plaintextLen = 16, + .ciphertext = (const uint8_t *) "\x0d\x0a\x6b\x6d\xc1\xf6\x9b\x4d\x14\xca\x4c\x15\x42\x22\x42\xc4", + .ciphertextLen = 16, + }, + { + .key = (const uint8_t *) "\x7e\x24\x06\x78\x17\xfa\xe0\xd7\x43\xd6\xce\x1f\x32\x53\x91\x63", + .nonce = (const uint8_t *) "\x00\x6c\xb6\xdb\xc0\x54\x3b\x59\xda\x48\xd9\x0b\x00", + .plaintext = (const uint8_t *) "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f" + "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f", + .plaintextLen = 32, + .ciphertext = (const uint8_t *) "\x4f\x3d\xf9\x49\x15\x88\x4d\xe0\xdc\x0e\x30\x95\x0d\xe7\xa6\xe9" + "\x5a\x91\x7e\x1d\x06\x42\x22\xdb\x2f\x6e\xc7\x3d\x99\x4a\xd9\x5f", + .ciphertextLen = 32, + } +}; + +constexpr size_t kAesCtrTestVectorSize = sizeof(theAesCtrTestVector) / sizeof(theAesCtrTestVector[0]); + +constexpr size_t KEY_LENGTH = Crypto::kAES_CCM128_Key_Length; +constexpr size_t NONCE_LENGTH = Crypto::kAES_CCM128_Nonce_Length; + +static void TestAES_CTR_128_Encrypt(nlTestSuite * inSuite, const AesCtrTestEntry * vector) +{ + chip::Platform::ScopedMemoryBuffer outBuffer; + outBuffer.Alloc(vector->ciphertextLen); + NL_TEST_ASSERT(inSuite, outBuffer); + + CHIP_ERROR err = AES_CTR_crypt(vector->plaintext, vector->plaintextLen, vector->key, KEY_LENGTH, vector->nonce, NONCE_LENGTH, + outBuffer.Get()); + NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + + bool outputMatches = memcmp(outBuffer.Get(), vector->ciphertext, vector->ciphertextLen) == 0; + NL_TEST_ASSERT(inSuite, outputMatches); + if (!outputMatches) + { + printf("\n Test failed due to mismatching ciphertext\n"); + } +} + +static void TestAES_CTR_128_Decrypt(nlTestSuite * inSuite, const AesCtrTestEntry * vector) +{ + chip::Platform::ScopedMemoryBuffer outBuffer; + outBuffer.Alloc(vector->plaintextLen); + NL_TEST_ASSERT(inSuite, outBuffer); + + CHIP_ERROR err = AES_CTR_crypt(vector->ciphertext, vector->ciphertextLen, vector->key, KEY_LENGTH, vector->nonce, NONCE_LENGTH, + outBuffer.Get()); + NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + + bool outputMatches = memcmp(outBuffer.Get(), vector->plaintext, vector->plaintextLen) == 0; + NL_TEST_ASSERT(inSuite, outputMatches); + if (!outputMatches) + { + printf("\n Test failed due to mismatching plaintext\n"); + } +} + +static void TestAES_CTR_128CryptTestVectors(nlTestSuite * inSuite, void * inContext) +{ + HeapChecker heapChecker(inSuite); + int numOfTestsRan = 0; + for (size_t vectorIndex = 0; vectorIndex < kAesCtrTestVectorSize; vectorIndex++) + { + const AesCtrTestEntry * vector = &theAesCtrTestVector[vectorIndex]; + if (vector->plaintextLen > 0) + { + numOfTestsRan++; + TestAES_CTR_128_Encrypt(inSuite, vector); + TestAES_CTR_128_Decrypt(inSuite, vector); + } + } + NL_TEST_ASSERT(inSuite, numOfTestsRan > 0); +} + static void TestAES_CCM_128EncryptTestVectors(nlTestSuite * inSuite, void * inContext) { HeapChecker heapChecker(inSuite); @@ -2279,6 +2376,7 @@ static const nlTest sTests[] = { NL_TEST_DEF("Test decrypting AES-CCM-128 invalid key", TestAES_CCM_128DecryptInvalidKey), NL_TEST_DEF("Test decrypting AES-CCM-128 invalid nonce", TestAES_CCM_128DecryptInvalidNonceLen), NL_TEST_DEF("Test decrypting AES-CCM-128 Containers", TestAES_CCM_128Containers), + NL_TEST_DEF("Test encrypt/decrypt AES-CTR-128 test vectors", TestAES_CTR_128CryptTestVectors), NL_TEST_DEF("Test ASN.1 signature conversion routines", TestAsn1Conversions), NL_TEST_DEF("Test Integer to ASN.1 DER conversion", TestRawIntegerToDerValidCases), NL_TEST_DEF("Test Integer to ASN.1 DER conversion error cases", TestRawIntegerToDerInvalidCases), diff --git a/src/platform/Tizen/DnssdImpl.cpp b/src/platform/Tizen/DnssdImpl.cpp index 1444694467bc44..e898b69a141919 100644 --- a/src/platform/Tizen/DnssdImpl.cpp +++ b/src/platform/Tizen/DnssdImpl.cpp @@ -32,7 +32,9 @@ #include #include +#if CHIP_DEVICE_CONFIG_ENABLE_THREAD #include +#endif using namespace chip::Dnssd; using namespace chip::DeviceLayer::Internal; diff --git a/src/test_driver/efr32/README.md b/src/test_driver/efr32/README.md index 2901c46a58f0fa..5c9817b8da6948 100644 --- a/src/test_driver/efr32/README.md +++ b/src/test_driver/efr32/README.md @@ -42,6 +42,9 @@ test runner. MG12 boards: - BRD4161A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@19dBm + - BRD4162A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm + - BRD4163A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm, + 868MHz@19dBm - BRD4164A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@19dBm - BRD4166A / SLTB004A / Thunderboard Sense 2 / 2.4GHz@10dBm - BRD4170A / SLWSTK6000B / Multiband Wireless Starter Kit / 2.4GHz@19dBm, @@ -54,8 +57,12 @@ test runner. MG24 boards : + - BRD2601B / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm + - BRD2703A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm - BRD4186A / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@10dBm + - BRD4186C / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@10dBm - BRD4187A / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@20dBm + - BRD4187C / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@20dBm OR use GN/Ninja directly diff --git a/third_party/silabs/matter_support b/third_party/silabs/matter_support index 0c84c861c036fb..2425fb72cacd54 160000 --- a/third_party/silabs/matter_support +++ b/third_party/silabs/matter_support @@ -1 +1 @@ -Subproject commit 0c84c861c036fba5ba35eccca3f366925700b2b5 +Subproject commit 2425fb72cacd540df505f11e7de81e6270ed1c40 diff --git a/zzz_generated/chip-tool/zap-generated/test/Commands.h b/zzz_generated/chip-tool/zap-generated/test/Commands.h index bb7850cd84314e..99e0309f402aad 100644 --- a/zzz_generated/chip-tool/zap-generated/test/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/test/Commands.h @@ -67998,7 +67998,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", 33, credsIssuerConfig) + Test_TC_DRLK_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DRLK_1_1", 42, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -68059,11 +68059,91 @@ class Test_TC_DRLK_1_1Suite : public TestCommand 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)); + VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; case 4: + 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(CheckConstraintHasMasksSet("value", value, 2UL)); + } + break; + case 5: + 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(CheckConstraintHasMasksSet("value", value, 4UL)); + } + break; + case 6: + 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(CheckConstraintHasMasksSet("value", value, 16UL)); + } + break; + case 7: + 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(CheckConstraintHasMasksSet("value", value, 32UL)); + } + break; + case 8: + 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(CheckConstraintHasMasksSet("value", value, 64UL)); + } + break; + case 9: + 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(CheckConstraintHasMasksSet("value", value, 128UL)); + } + break; + case 10: + 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(CheckConstraintHasMasksSet("value", value, 256UL)); + } + break; + case 11: + 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(CheckConstraintHasMasksSet("value", value, 1024UL)); + } + break; + case 12: + 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(CheckConstraintHasMasksSet("value", value, 2048UL)); + } + break; + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68081,7 +68161,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 5: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68092,7 +68172,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 28UL)); } break; - case 6: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68103,7 +68183,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 24UL)); } break; - case 7: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68114,7 +68194,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 26UL)); } break; - case 8: + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68123,7 +68203,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 20UL)); } break; - case 9: + case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68132,7 +68212,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 21UL)); } break; - case 10: + case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68141,7 +68221,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 22UL)); } break; - case 11: + case 20: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68151,7 +68231,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 49UL)); } break; - case 12: + case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68160,7 +68240,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 51UL)); } break; - case 13: + case 22: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68169,7 +68249,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 33UL)); } break; - case 14: + case 23: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68178,7 +68258,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 34UL)); } break; - case 15: + case 24: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68187,7 +68267,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 35UL)); } break; - case 16: + case 25: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68196,7 +68276,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 36UL)); } break; - case 17: + case 26: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68205,7 +68285,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 39UL)); } break; - case 18: + case 27: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68214,7 +68294,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 40UL)); } break; - case 19: + case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68223,7 +68303,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 41UL)); } break; - case 20: + case 29: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68232,7 +68312,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 42UL)); } break; - case 21: + case 30: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68241,7 +68321,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 43UL)); } break; - case 22: + case 31: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68250,7 +68330,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 44UL)); } break; - case 23: + case 32: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68260,7 +68340,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); } break; - case 24: + case 33: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68271,7 +68351,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 13UL)); } break; - case 25: + case 34: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68282,7 +68362,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 16UL)); } break; - case 26: + case 35: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68293,7 +68373,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 19UL)); } break; - case 27: + case 36: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68307,7 +68387,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 38UL)); } break; - case 28: + case 37: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68316,7 +68396,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); } break; - case 29: + case 38: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68325,7 +68405,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 12UL)); } break; - case 30: + case 39: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68334,7 +68414,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 15UL)); } break; - case 31: + case 40: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68343,7 +68423,7 @@ class Test_TC_DRLK_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 18UL)); } break; - case 32: + case 41: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -68383,187 +68463,239 @@ 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 "), + "!DRLK.S.F07 && !DRLK.S.F08 && !DRLK.S.F0a && !DRLK.S.F0b "), 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)); + LogStep(3, "Given DRLK.S.F00(PIN) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("DRLK.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 4: { - LogStep(4, "TH reads AttributeList from DUT"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AttributeList::Id, true, + LogStep(4, "Given DRLK.S.F01(RID) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("DRLK.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 5: { - LogStep(5, "TH reads Feature dependent(DRLK.S.F08) attributes in AttributeList"); + LogStep(5, "Given DRLK.S.F02(FGP) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("DRLK.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::FeatureMap::Id, true, + chip::NullOptional); + } + case 6: { + LogStep(6, "Given DRLK.S.F04(WDSCH) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("DRLK.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::FeatureMap::Id, true, + chip::NullOptional); + } + case 7: { + LogStep(7, "Given DRLK.S.F05(DPS) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("DRLK.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::FeatureMap::Id, true, + chip::NullOptional); + } + case 8: { + LogStep(8, "Given DRLK.S.F06(FACE) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("DRLK.S.F06"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::FeatureMap::Id, true, + chip::NullOptional); + } + case 9: { + LogStep(9, "Given DRLK.S.F07(COTA) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("DRLK.S.F07"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::FeatureMap::Id, true, + chip::NullOptional); + } + case 10: { + LogStep(10, "Given DRLK.S.F08(USR) ensure featuremap has the correct bit set"); VerifyOrDo(!ShouldSkip("DRLK.S.F08"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::FeatureMap::Id, true, + chip::NullOptional); + } + case 11: { + LogStep(11, "Given DRLK.S.F0a(YDSCH) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("DRLK.S.F0a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::FeatureMap::Id, true, + chip::NullOptional); + } + case 12: { + LogStep(12, "Given DRLK.S.F0b(HDSCH) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("DRLK.S.F0b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::FeatureMap::Id, true, + chip::NullOptional); + } + case 13: { + LogStep(13, "TH reads AttributeList from DUT"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::AttributeList::Id, true, chip::NullOptional); } - case 6: { - LogStep(6, "TH reads Feature dependent(DRLK.S.F00) attributes in AttributeList"); + case 14: { + LogStep(14, "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 15: { + LogStep(15, "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 7: { - LogStep(7, "TH reads Feature dependent(DRLK.S.F01) attributes in AttributeList"); + case 16: { + LogStep(16, "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 8: { - LogStep(8, "TH reads Feature dependent(DRLK.S.F04) attribute in AttributeList"); + case 17: { + LogStep(17, "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 9: { - LogStep(9, "TH reads Feature dependent(DRLK.S.F10) attribute in AttributeList"); - VerifyOrDo(!ShouldSkip("DRLK.S.F10"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 18: { + LogStep(18, "TH reads Feature dependent(DRLK.S.F0a) attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("DRLK.S.F0a"), 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.F11) attribute in AttributeList"); - VerifyOrDo(!ShouldSkip("DRLK.S.F11"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 19: { + LogStep(19, "TH reads Feature dependent(DRLK.S.F0b) attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("DRLK.S.F0b"), 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.F00 or DRLK.S.F01) attributes in AttributeList"); + case 20: { + LogStep(20, "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 12: { - LogStep(12, "TH reads Feature dependent(DRLK.S.F07 or DRLK.S.F00) attribute in AttributeList"); + case 21: { + LogStep(21, "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 13: { - LogStep(13, "TH reads optional attribute(Language) in AttributeList"); + case 22: { + LogStep(22, "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 14: { - LogStep(14, "TH reads optional attribute(LEDSettings) in AttributeList"); + case 23: { + LogStep(23, "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 15: { - LogStep(15, "TH reads optional attribute(AutoRelockTime) in AttributeList"); + case 24: { + LogStep(24, "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 16: { - LogStep(16, "TH reads optional attribute(SoundVolume) in AttributeList"); + case 25: { + LogStep(25, "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 17: { - LogStep(17, "TH reads optional attribute(DefaultConfigurationRegister) in AttributeList"); + case 26: { + LogStep(26, "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 18: { - LogStep(18, "TH reads optional attribute(EnableLocalProgramming) in AttributeList"); + case 27: { + LogStep(27, "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 19: { - LogStep(19, "TH reads optional attribute(EnableOneTouchLocking) in AttributeList"); + case 28: { + LogStep(28, "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 20: { - LogStep(20, "TH reads optional attribute(EnableInsideStatusLED) in AttributeList"); + case 29: { + LogStep(29, "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 21: { - LogStep(21, "TH reads optional attribute(EnablePrivacyModeButton) in AttributeList"); + case 30: { + LogStep(30, "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 22: { - LogStep(22, "TH reads optional attribute(LocalProgrammingFeatures) in AttributeList"); + case 31: { + LogStep(31, "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 23: { - LogStep(23, "TH reads AcceptedCommandList from DUT"); + case 32: { + LogStep(32, "TH reads AcceptedCommandList from DUT"); 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.F04) in AcceptedCommandList"); + case 33: { + LogStep(33, "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 25: { - LogStep(25, "TH reads Feature dependent commands(DRLK.S.F10) in AcceptedCommandList"); - VerifyOrDo(!ShouldSkip("DRLK.S.F10"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 34: { + LogStep(34, "TH reads Feature dependent commands(DRLK.S.F0a) in AcceptedCommandList"); + VerifyOrDo(!ShouldSkip("DRLK.S.F0a"), 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.F11) in AcceptedCommandList"); - VerifyOrDo(!ShouldSkip("DRLK.S.F11"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 35: { + LogStep(35, "TH reads Feature dependent commands(DRLK.S.F0b) in AcceptedCommandList"); + VerifyOrDo(!ShouldSkip("DRLK.S.F0b"), 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 Feature dependent commands(DRLK.S.F08) in AcceptedCommandList"); + case 36: { + LogStep(36, "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 28: { - LogStep(28, "TH reads optional commands(DRLK.S.C03.Rsp) in AcceptedCommandList"); + case 37: { + LogStep(37, "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 29: { - LogStep(29, "TH reads Feature dependent command(DRLK.S.F04) in GeneratedCommandList"); + case 38: { + LogStep(38, "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 30: { - LogStep(30, "TH reads Feature dependent command(DRLK.S.F10) in GeneratedCommandList"); - VerifyOrDo(!ShouldSkip("DRLK.S.F10"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 39: { + LogStep(39, "TH reads Feature dependent command(DRLK.S.F0a) in GeneratedCommandList"); + VerifyOrDo(!ShouldSkip("DRLK.S.F0a"), 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.F11) in GeneratedCommandList"); - VerifyOrDo(!ShouldSkip("DRLK.S.F11"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 40: { + LogStep(40, "TH reads Feature dependent command(DRLK.S.F0b) in GeneratedCommandList"); + VerifyOrDo(!ShouldSkip("DRLK.S.F0b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); } - case 32: { - LogStep(32, "TH reads Feature dependent command(DRLK.S.F08) in GeneratedCommandList"); + case 41: { + LogStep(41, "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); @@ -70619,7 +70751,7 @@ class Test_TC_DRLK_2_7Suite : public TestCommand } case 3: { LogStep(3, "TH reads NumberOfYearDay SchedulesSupportedPerUser attribute"); - VerifyOrDo(!ShouldSkip("DRLK.S.F10 && DRLK.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("DRLK.S.F0a && DRLK.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::NumberOfYearDaySchedulesSupportedPerUser::Id, true, chip::NullOptional); } @@ -70631,7 +70763,7 @@ class Test_TC_DRLK_2_7Suite : public TestCommand } case 5: { LogStep(5, "TH sends Set Year Day Schedule Command to DUT"); - VerifyOrDo(!ShouldSkip("DRLK.S.F10 && DRLK.S.C0e.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("DRLK.S.F0a && DRLK.S.C0e.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DoorLock::Commands::SetYearDaySchedule::Type value; value.yearDayIndex = 1U; @@ -70645,7 +70777,7 @@ class Test_TC_DRLK_2_7Suite : public TestCommand } case 6: { LogStep(6, "TH sends Get Year Day Schedule Command to DUT"); - VerifyOrDo(!ShouldSkip("DRLK.S.F10 && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx"), + VerifyOrDo(!ShouldSkip("DRLK.S.F0a && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DoorLock::Commands::GetYearDaySchedule::Type value; @@ -70672,7 +70804,7 @@ class Test_TC_DRLK_2_7Suite : public TestCommand } case 8: { LogStep(8, "TH sends Get Year Day Schedule Command to DUT"); - VerifyOrDo(!ShouldSkip("DRLK.S.F10 && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx"), + VerifyOrDo(!ShouldSkip("DRLK.S.F0a && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DoorLock::Commands::GetYearDaySchedule::Type value; @@ -70706,7 +70838,7 @@ class Test_TC_DRLK_2_7Suite : public TestCommand } case 10: { LogStep(10, "TH sends Get Year Day Schedule Command to DUT"); - VerifyOrDo(!ShouldSkip("DRLK.S.F10 && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx"), + VerifyOrDo(!ShouldSkip("DRLK.S.F0a && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DoorLock::Commands::GetYearDaySchedule::Type value; @@ -70731,7 +70863,7 @@ class Test_TC_DRLK_2_7Suite : public TestCommand } case 12: { LogStep(12, "TH sends Get Year Day Schedule Command to DUT"); - VerifyOrDo(!ShouldSkip("DRLK.S.F10 && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx && DRLK.S.C10.Rsp"), + VerifyOrDo(!ShouldSkip("DRLK.S.F0a && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx && DRLK.S.C10.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DoorLock::Commands::GetYearDaySchedule::Type value; @@ -70758,7 +70890,7 @@ class Test_TC_DRLK_2_7Suite : public TestCommand } case 14: { LogStep(14, "TH sends Get Year Day Schedule Command to DUT"); - VerifyOrDo(!ShouldSkip("DRLK.S.F10 && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx"), + VerifyOrDo(!ShouldSkip("DRLK.S.F0a && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DoorLock::Commands::GetYearDaySchedule::Type value; @@ -70771,7 +70903,7 @@ class Test_TC_DRLK_2_7Suite : public TestCommand } case 15: { LogStep(15, "TH sends Clear Year Day Schedule to DUT"); - VerifyOrDo(!ShouldSkip("DRLK.S.F10 && DRLK.S.C10.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("DRLK.S.F0a && DRLK.S.C10.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DoorLock::Commands::ClearYearDaySchedule::Type value; value.yearDayIndex = 0U; @@ -70783,7 +70915,7 @@ class Test_TC_DRLK_2_7Suite : public TestCommand } case 16: { LogStep(16, "Clear a year day schedule for the first user"); - VerifyOrDo(!ShouldSkip("DRLK.S.F10 && DRLK.S.C10.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("DRLK.S.F0a && DRLK.S.C10.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DoorLock::Commands::ClearYearDaySchedule::Type value; value.yearDayIndex = 1U; 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 ded17f4866bb30..48bad5cac955e1 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h @@ -117449,260 +117449,331 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { 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 ")) { + "&& !DRLK.S.F08 && !DRLK.S.F0a && !DRLK.S.F0b ")) { NextTest(); return; } err = TestThReadsTheFeatureMapFromDut_2(); break; case 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")) { + ChipLogProgress(chipTool, " ***** Test Step 3 : Given DRLK.S.F00(PIN) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("DRLK.S.F00")) { NextTest(); return; } - err = TestThReadsTheFeatureMapFromDut_3(); + err = TestGivenDrlksf00pinEnsureFeaturemapHasTheCorrectBitSet_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : TH reads AttributeList from DUT\n"); - err = TestThReadsAttributeListFromDut_4(); + ChipLogProgress(chipTool, " ***** Test Step 4 : Given DRLK.S.F01(RID) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("DRLK.S.F01")) { + NextTest(); + return; + } + err = TestGivenDrlksf01ridEnsureFeaturemapHasTheCorrectBitSet_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")) { + ChipLogProgress(chipTool, " ***** Test Step 5 : Given DRLK.S.F02(FGP) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("DRLK.S.F02")) { NextTest(); return; } - err = TestThReadsFeatureDependentDRLKSF08AttributesInAttributeList_5(); + err = TestGivenDrlksf02fgpEnsureFeaturemapHasTheCorrectBitSet_5(); break; case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : TH reads Feature dependent(DRLK.S.F00) attributes in AttributeList\n"); - if (ShouldSkip("DRLK.S.F00")) { + ChipLogProgress(chipTool, " ***** Test Step 6 : Given DRLK.S.F04(WDSCH) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("DRLK.S.F04")) { NextTest(); return; } - err = TestThReadsFeatureDependentDRLKSF00AttributesInAttributeList_6(); + err = TestGivenDrlksf04wdschEnsureFeaturemapHasTheCorrectBitSet_6(); break; case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : TH reads Feature dependent(DRLK.S.F01) attributes in AttributeList\n"); - if (ShouldSkip("DRLK.S.F01")) { + ChipLogProgress(chipTool, " ***** Test Step 7 : Given DRLK.S.F05(DPS) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("DRLK.S.F05")) { NextTest(); return; } - err = TestThReadsFeatureDependentDRLKSF01AttributesInAttributeList_7(); + err = TestGivenDrlksf05dpsEnsureFeaturemapHasTheCorrectBitSet_7(); break; case 8: - ChipLogProgress(chipTool, " ***** Test Step 8 : TH reads Feature dependent(DRLK.S.F04) attribute in AttributeList\n"); - if (ShouldSkip("DRLK.S.F04")) { + ChipLogProgress(chipTool, " ***** Test Step 8 : Given DRLK.S.F06(FACE) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("DRLK.S.F06")) { NextTest(); return; } - err = TestThReadsFeatureDependentDRLKSF04AttributeInAttributeList_8(); + err = TestGivenDrlksf06faceEnsureFeaturemapHasTheCorrectBitSet_8(); break; case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : TH reads Feature dependent(DRLK.S.F10) attribute in AttributeList\n"); - if (ShouldSkip("DRLK.S.F10")) { + ChipLogProgress(chipTool, " ***** Test Step 9 : Given DRLK.S.F07(COTA) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("DRLK.S.F07")) { NextTest(); return; } - err = TestThReadsFeatureDependentDRLKSF10AttributeInAttributeList_9(); + err = TestGivenDrlksf07cotaEnsureFeaturemapHasTheCorrectBitSet_9(); break; case 10: - ChipLogProgress(chipTool, " ***** Test Step 10 : TH reads Feature dependent(DRLK.S.F11) attribute in AttributeList\n"); - if (ShouldSkip("DRLK.S.F11")) { + ChipLogProgress(chipTool, " ***** Test Step 10 : Given DRLK.S.F08(USR) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("DRLK.S.F08")) { NextTest(); return; } - err = TestThReadsFeatureDependentDRLKSF11AttributeInAttributeList_10(); + err = TestGivenDrlksf08usrEnsureFeaturemapHasTheCorrectBitSet_10(); break; case 11: + ChipLogProgress(chipTool, " ***** Test Step 11 : Given DRLK.S.F0a(YDSCH) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("DRLK.S.F0a")) { + NextTest(); + return; + } + err = TestGivenDRLKSF0aYDSCHEnsureFeaturemapHasTheCorrectBitSet_11(); + break; + case 12: + ChipLogProgress(chipTool, " ***** Test Step 12 : Given DRLK.S.F0b(HDSCH) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("DRLK.S.F0b")) { + NextTest(); + return; + } + err = TestGivenDRLKSF0bHDSCHEnsureFeaturemapHasTheCorrectBitSet_12(); + break; + case 13: + ChipLogProgress(chipTool, " ***** Test Step 13 : TH reads AttributeList from DUT\n"); + err = TestThReadsAttributeListFromDut_13(); + break; + case 14: + ChipLogProgress(chipTool, " ***** Test Step 14 : TH reads Feature dependent(DRLK.S.F08) attributes in AttributeList\n"); + if (ShouldSkip("DRLK.S.F08")) { + NextTest(); + return; + } + err = TestThReadsFeatureDependentDRLKSF08AttributesInAttributeList_14(); + break; + case 15: + ChipLogProgress(chipTool, " ***** Test Step 15 : TH reads Feature dependent(DRLK.S.F00) attributes in AttributeList\n"); + if (ShouldSkip("DRLK.S.F00")) { + NextTest(); + return; + } + err = TestThReadsFeatureDependentDRLKSF00AttributesInAttributeList_15(); + break; + case 16: + ChipLogProgress(chipTool, " ***** Test Step 16 : TH reads Feature dependent(DRLK.S.F01) attributes in AttributeList\n"); + if (ShouldSkip("DRLK.S.F01")) { + NextTest(); + return; + } + err = TestThReadsFeatureDependentDRLKSF01AttributesInAttributeList_16(); + break; + case 17: + ChipLogProgress(chipTool, " ***** Test Step 17 : TH reads Feature dependent(DRLK.S.F04) attribute in AttributeList\n"); + if (ShouldSkip("DRLK.S.F04")) { + NextTest(); + return; + } + err = TestThReadsFeatureDependentDRLKSF04AttributeInAttributeList_17(); + break; + case 18: + ChipLogProgress(chipTool, " ***** Test Step 18 : TH reads Feature dependent(DRLK.S.F0a) attribute in AttributeList\n"); + if (ShouldSkip("DRLK.S.F0a")) { + NextTest(); + return; + } + err = TestThReadsFeatureDependentDRLKSF0aAttributeInAttributeList_18(); + break; + case 19: + ChipLogProgress(chipTool, " ***** Test Step 19 : TH reads Feature dependent(DRLK.S.F0b) attribute in AttributeList\n"); + if (ShouldSkip("DRLK.S.F0b")) { + NextTest(); + return; + } + err = TestThReadsFeatureDependentDRLKSF0bAttributeInAttributeList_19(); + break; + case 20: ChipLogProgress(chipTool, - " ***** Test Step 11 : TH reads Feature dependent(DRLK.S.F00 or DRLK.S.F01) attributes in AttributeList\n"); + " ***** Test Step 20 : 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_11(); + err = TestThReadsFeatureDependentDRLKSF00OrDrlksf01AttributesInAttributeList_20(); break; - case 12: + case 21: ChipLogProgress(chipTool, - " ***** Test Step 12 : TH reads Feature dependent(DRLK.S.F07 or DRLK.S.F00) attribute in AttributeList\n"); + " ***** Test Step 21 : 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_12(); + err = TestThReadsFeatureDependentDRLKSF07OrDrlksf00AttributeInAttributeList_21(); break; - case 13: - ChipLogProgress(chipTool, " ***** Test Step 13 : TH reads optional attribute(Language) in AttributeList\n"); + case 22: + ChipLogProgress(chipTool, " ***** Test Step 22 : TH reads optional attribute(Language) in AttributeList\n"); if (ShouldSkip("DRLK.S.A0021")) { NextTest(); return; } - err = TestThReadsOptionalAttributeLanguageInAttributeList_13(); + err = TestThReadsOptionalAttributeLanguageInAttributeList_22(); break; - case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : TH reads optional attribute(LEDSettings) in AttributeList\n"); + case 23: + ChipLogProgress(chipTool, " ***** Test Step 23 : TH reads optional attribute(LEDSettings) in AttributeList\n"); if (ShouldSkip("DRLK.S.A0022")) { NextTest(); return; } - err = TestThReadsOptionalAttributeLEDSettingsInAttributeList_14(); + err = TestThReadsOptionalAttributeLEDSettingsInAttributeList_23(); break; - case 15: - ChipLogProgress(chipTool, " ***** Test Step 15 : TH reads optional attribute(AutoRelockTime) in AttributeList\n"); + case 24: + ChipLogProgress(chipTool, " ***** Test Step 24 : TH reads optional attribute(AutoRelockTime) in AttributeList\n"); if (ShouldSkip("DRLK.S.A0023")) { NextTest(); return; } - err = TestThReadsOptionalAttributeAutoRelockTimeInAttributeList_15(); + err = TestThReadsOptionalAttributeAutoRelockTimeInAttributeList_24(); break; - case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : TH reads optional attribute(SoundVolume) in AttributeList\n"); + case 25: + ChipLogProgress(chipTool, " ***** Test Step 25 : TH reads optional attribute(SoundVolume) in AttributeList\n"); if (ShouldSkip("DRLK.S.A0024")) { NextTest(); return; } - err = TestThReadsOptionalAttributeSoundVolumeInAttributeList_16(); + err = TestThReadsOptionalAttributeSoundVolumeInAttributeList_25(); break; - case 17: + case 26: ChipLogProgress( - chipTool, " ***** Test Step 17 : TH reads optional attribute(DefaultConfigurationRegister) in AttributeList\n"); + chipTool, " ***** Test Step 26 : TH reads optional attribute(DefaultConfigurationRegister) in AttributeList\n"); if (ShouldSkip("DRLK.S.A0027")) { NextTest(); return; } - err = TestThReadsOptionalAttributeDefaultConfigurationRegisterInAttributeList_17(); + err = TestThReadsOptionalAttributeDefaultConfigurationRegisterInAttributeList_26(); break; - case 18: + case 27: ChipLogProgress( - chipTool, " ***** Test Step 18 : TH reads optional attribute(EnableLocalProgramming) in AttributeList\n"); + chipTool, " ***** Test Step 27 : TH reads optional attribute(EnableLocalProgramming) in AttributeList\n"); if (ShouldSkip("DRLK.S.A0028")) { NextTest(); return; } - err = TestThReadsOptionalAttributeEnableLocalProgrammingInAttributeList_18(); + err = TestThReadsOptionalAttributeEnableLocalProgrammingInAttributeList_27(); break; - case 19: + case 28: ChipLogProgress( - chipTool, " ***** Test Step 19 : TH reads optional attribute(EnableOneTouchLocking) in AttributeList\n"); + chipTool, " ***** Test Step 28 : TH reads optional attribute(EnableOneTouchLocking) in AttributeList\n"); if (ShouldSkip("DRLK.S.A0029")) { NextTest(); return; } - err = TestThReadsOptionalAttributeEnableOneTouchLockingInAttributeList_19(); + err = TestThReadsOptionalAttributeEnableOneTouchLockingInAttributeList_28(); break; - case 20: + case 29: ChipLogProgress( - chipTool, " ***** Test Step 20 : TH reads optional attribute(EnableInsideStatusLED) in AttributeList\n"); + chipTool, " ***** Test Step 29 : TH reads optional attribute(EnableInsideStatusLED) in AttributeList\n"); if (ShouldSkip("DRLK.S.A002a")) { NextTest(); return; } - err = TestThReadsOptionalAttributeEnableInsideStatusLEDInAttributeList_20(); + err = TestThReadsOptionalAttributeEnableInsideStatusLEDInAttributeList_29(); break; - case 21: + case 30: ChipLogProgress( - chipTool, " ***** Test Step 21 : TH reads optional attribute(EnablePrivacyModeButton) in AttributeList\n"); + chipTool, " ***** Test Step 30 : TH reads optional attribute(EnablePrivacyModeButton) in AttributeList\n"); if (ShouldSkip("DRLK.S.A002b")) { NextTest(); return; } - err = TestThReadsOptionalAttributeEnablePrivacyModeButtonInAttributeList_21(); + err = TestThReadsOptionalAttributeEnablePrivacyModeButtonInAttributeList_30(); break; - case 22: + case 31: ChipLogProgress( - chipTool, " ***** Test Step 22 : TH reads optional attribute(LocalProgrammingFeatures) in AttributeList\n"); + chipTool, " ***** Test Step 31 : TH reads optional attribute(LocalProgrammingFeatures) in AttributeList\n"); if (ShouldSkip("DRLK.S.A002c")) { NextTest(); return; } - err = TestThReadsOptionalAttributeLocalProgrammingFeaturesInAttributeList_22(); + err = TestThReadsOptionalAttributeLocalProgrammingFeaturesInAttributeList_31(); break; - case 23: - ChipLogProgress(chipTool, " ***** Test Step 23 : TH reads AcceptedCommandList from DUT\n"); - err = TestThReadsAcceptedCommandListFromDut_23(); + case 32: + ChipLogProgress(chipTool, " ***** Test Step 32 : TH reads AcceptedCommandList from DUT\n"); + err = TestThReadsAcceptedCommandListFromDut_32(); break; - case 24: + case 33: ChipLogProgress( - chipTool, " ***** Test Step 24 : TH reads Feature dependent commands(DRLK.S.F04) in AcceptedCommandList\n"); + chipTool, " ***** Test Step 33 : TH reads Feature dependent commands(DRLK.S.F04) in AcceptedCommandList\n"); if (ShouldSkip("DRLK.S.F04")) { NextTest(); return; } - err = TestThReadsFeatureDependentCommandsDRLKSF04InAcceptedCommandList_24(); + err = TestThReadsFeatureDependentCommandsDRLKSF04InAcceptedCommandList_33(); break; - case 25: + case 34: ChipLogProgress( - chipTool, " ***** Test Step 25 : TH reads Feature dependent commands(DRLK.S.F10) in AcceptedCommandList\n"); - if (ShouldSkip("DRLK.S.F10")) { + chipTool, " ***** Test Step 34 : TH reads Feature dependent commands(DRLK.S.F0a) in AcceptedCommandList\n"); + if (ShouldSkip("DRLK.S.F0a")) { NextTest(); return; } - err = TestThReadsFeatureDependentCommandsDRLKSF10InAcceptedCommandList_25(); + err = TestThReadsFeatureDependentCommandsDRLKSF0aInAcceptedCommandList_34(); break; - case 26: + case 35: ChipLogProgress( - chipTool, " ***** Test Step 26 : TH reads Feature dependent commands(DRLK.S.F11) in AcceptedCommandList\n"); - if (ShouldSkip("DRLK.S.F11")) { + chipTool, " ***** Test Step 35 : TH reads Feature dependent commands(DRLK.S.F0b) in AcceptedCommandList\n"); + if (ShouldSkip("DRLK.S.F0b")) { NextTest(); return; } - err = TestThReadsFeatureDependentCommandsDRLKSF11InAcceptedCommandList_26(); + err = TestThReadsFeatureDependentCommandsDRLKSF0bInAcceptedCommandList_35(); break; - case 27: + case 36: ChipLogProgress( - chipTool, " ***** Test Step 27 : TH reads Feature dependent commands(DRLK.S.F08) in AcceptedCommandList\n"); + chipTool, " ***** Test Step 36 : TH reads Feature dependent commands(DRLK.S.F08) in AcceptedCommandList\n"); if (ShouldSkip("DRLK.S.F08")) { NextTest(); return; } - err = TestThReadsFeatureDependentCommandsDRLKSF08InAcceptedCommandList_27(); + err = TestThReadsFeatureDependentCommandsDRLKSF08InAcceptedCommandList_36(); break; - case 28: - ChipLogProgress(chipTool, " ***** Test Step 28 : TH reads optional commands(DRLK.S.C03.Rsp) in AcceptedCommandList\n"); + case 37: + ChipLogProgress(chipTool, " ***** Test Step 37 : TH reads optional commands(DRLK.S.C03.Rsp) in AcceptedCommandList\n"); if (ShouldSkip("DRLK.S.C03.Rsp")) { NextTest(); return; } - err = TestThReadsOptionalCommandsDRLKSC03RspInAcceptedCommandList_28(); + err = TestThReadsOptionalCommandsDRLKSC03RspInAcceptedCommandList_37(); break; - case 29: + case 38: ChipLogProgress( - chipTool, " ***** Test Step 29 : TH reads Feature dependent command(DRLK.S.F04) in GeneratedCommandList\n"); + chipTool, " ***** Test Step 38 : TH reads Feature dependent command(DRLK.S.F04) in GeneratedCommandList\n"); if (ShouldSkip("DRLK.S.F04")) { NextTest(); return; } - err = TestThReadsFeatureDependentCommandDRLKSF04InGeneratedCommandList_29(); + err = TestThReadsFeatureDependentCommandDRLKSF04InGeneratedCommandList_38(); break; - case 30: + case 39: ChipLogProgress( - chipTool, " ***** Test Step 30 : TH reads Feature dependent command(DRLK.S.F10) in GeneratedCommandList\n"); - if (ShouldSkip("DRLK.S.F10")) { + chipTool, " ***** Test Step 39 : TH reads Feature dependent command(DRLK.S.F0a) in GeneratedCommandList\n"); + if (ShouldSkip("DRLK.S.F0a")) { NextTest(); return; } - err = TestThReadsFeatureDependentCommandDRLKSF10InGeneratedCommandList_30(); + err = TestThReadsFeatureDependentCommandDRLKSF0aInGeneratedCommandList_39(); break; - case 31: + case 40: ChipLogProgress( - chipTool, " ***** Test Step 31 : TH reads Feature dependent command(DRLK.S.F11) in GeneratedCommandList\n"); - if (ShouldSkip("DRLK.S.F11")) { + chipTool, " ***** Test Step 40 : TH reads Feature dependent command(DRLK.S.F0b) in GeneratedCommandList\n"); + if (ShouldSkip("DRLK.S.F0b")) { NextTest(); return; } - err = TestThReadsFeatureDependentCommandDRLKSF11InGeneratedCommandList_31(); + err = TestThReadsFeatureDependentCommandDRLKSF0bInGeneratedCommandList_40(); break; - case 32: + case 41: ChipLogProgress( - chipTool, " ***** Test Step 32 : TH reads Feature dependent command(DRLK.S.F08) in GeneratedCommandList\n"); + chipTool, " ***** Test Step 41 : TH reads Feature dependent command(DRLK.S.F08) in GeneratedCommandList\n"); if (ShouldSkip("DRLK.S.F08")) { NextTest(); return; } - err = TestThReadsFeatureDependentCommandDRLKSF08InGeneratedCommandList_32(); + err = TestThReadsFeatureDependentCommandDRLKSF08InGeneratedCommandList_41(); break; } @@ -117814,6 +117885,33 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { case 32: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 33: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 34: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + 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)); + 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)); + break; } // Go on to the next test. @@ -117827,7 +117925,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 33; + const uint16_t mTestCount = 42; chip::Optional mNodeId; chip::Optional mCluster; @@ -117887,28 +117985,187 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsTheFeatureMapFromDut_3() + CHIP_ERROR TestGivenDrlksf00pinEnsureFeaturemapHasTheCorrectBitSet_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); + NSLog(@"Given DRLK.S.F00(PIN) ensure featuremap has the correct bit set 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(); + }]; + + return CHIP_NO_ERROR; + } + CHIP_ERROR TestGivenDrlksf01ridEnsureFeaturemapHasTheCorrectBitSet_4() + { + 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(@"Given DRLK.S.F01(RID) ensure featuremap has the correct bit set Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); NextTest(); }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsAttributeListFromDut_4() + CHIP_ERROR TestGivenDrlksf02fgpEnsureFeaturemapHasTheCorrectBitSet_5() + { + 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(@"Given DRLK.S.F02(FGP) ensure featuremap has the correct bit set Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestGivenDrlksf04wdschEnsureFeaturemapHasTheCorrectBitSet_6() + { + 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(@"Given DRLK.S.F04(WDSCH) ensure featuremap has the correct bit set Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestGivenDrlksf05dpsEnsureFeaturemapHasTheCorrectBitSet_7() + { + 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(@"Given DRLK.S.F05(DPS) ensure featuremap has the correct bit set Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestGivenDrlksf06faceEnsureFeaturemapHasTheCorrectBitSet_8() + { + 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(@"Given DRLK.S.F06(FACE) ensure featuremap has the correct bit set Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestGivenDrlksf07cotaEnsureFeaturemapHasTheCorrectBitSet_9() + { + 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(@"Given DRLK.S.F07(COTA) ensure featuremap has the correct bit set Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestGivenDrlksf08usrEnsureFeaturemapHasTheCorrectBitSet_10() + { + 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(@"Given DRLK.S.F08(USR) ensure featuremap has the correct bit set Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestGivenDRLKSF0aYDSCHEnsureFeaturemapHasTheCorrectBitSet_11() + { + 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(@"Given DRLK.S.F0a(YDSCH) ensure featuremap has the correct bit set Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestGivenDRLKSF0bHDSCHEnsureFeaturemapHasTheCorrectBitSet_12() + { + 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(@"Given DRLK.S.F0b(HDSCH) ensure featuremap has the correct bit set Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThReadsAttributeListFromDut_13() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117937,7 +118194,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentDRLKSF08AttributesInAttributeList_5() + CHIP_ERROR TestThReadsFeatureDependentDRLKSF08AttributesInAttributeList_14() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117959,7 +118216,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentDRLKSF00AttributesInAttributeList_6() + CHIP_ERROR TestThReadsFeatureDependentDRLKSF00AttributesInAttributeList_15() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -117981,7 +118238,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentDRLKSF01AttributesInAttributeList_7() + CHIP_ERROR TestThReadsFeatureDependentDRLKSF01AttributesInAttributeList_16() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -118003,7 +118260,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentDRLKSF04AttributeInAttributeList_8() + CHIP_ERROR TestThReadsFeatureDependentDRLKSF04AttributeInAttributeList_17() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -118023,14 +118280,14 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentDRLKSF10AttributeInAttributeList_9() + CHIP_ERROR TestThReadsFeatureDependentDRLKSF0aAttributeInAttributeList_18() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeAttributeListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"TH reads Feature dependent(DRLK.S.F10) attribute in AttributeList Error: %@", err); + NSLog(@"TH reads Feature dependent(DRLK.S.F0a) attribute in AttributeList Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -118043,14 +118300,14 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentDRLKSF11AttributeInAttributeList_10() + CHIP_ERROR TestThReadsFeatureDependentDRLKSF0bAttributeInAttributeList_19() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeAttributeListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"TH reads Feature dependent(DRLK.S.F11) attribute in AttributeList Error: %@", err); + NSLog(@"TH reads Feature dependent(DRLK.S.F0b) attribute in AttributeList Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -118063,7 +118320,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentDRLKSF00OrDrlksf01AttributesInAttributeList_11() + CHIP_ERROR TestThReadsFeatureDependentDRLKSF00OrDrlksf01AttributesInAttributeList_20() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -118084,7 +118341,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentDRLKSF07OrDrlksf00AttributeInAttributeList_12() + CHIP_ERROR TestThReadsFeatureDependentDRLKSF07OrDrlksf00AttributeInAttributeList_21() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -118104,7 +118361,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsOptionalAttributeLanguageInAttributeList_13() + CHIP_ERROR TestThReadsOptionalAttributeLanguageInAttributeList_22() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -118124,7 +118381,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsOptionalAttributeLEDSettingsInAttributeList_14() + CHIP_ERROR TestThReadsOptionalAttributeLEDSettingsInAttributeList_23() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -118144,7 +118401,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsOptionalAttributeAutoRelockTimeInAttributeList_15() + CHIP_ERROR TestThReadsOptionalAttributeAutoRelockTimeInAttributeList_24() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -118164,7 +118421,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsOptionalAttributeSoundVolumeInAttributeList_16() + CHIP_ERROR TestThReadsOptionalAttributeSoundVolumeInAttributeList_25() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -118184,7 +118441,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsOptionalAttributeDefaultConfigurationRegisterInAttributeList_17() + CHIP_ERROR TestThReadsOptionalAttributeDefaultConfigurationRegisterInAttributeList_26() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -118204,7 +118461,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsOptionalAttributeEnableLocalProgrammingInAttributeList_18() + CHIP_ERROR TestThReadsOptionalAttributeEnableLocalProgrammingInAttributeList_27() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -118224,7 +118481,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsOptionalAttributeEnableOneTouchLockingInAttributeList_19() + CHIP_ERROR TestThReadsOptionalAttributeEnableOneTouchLockingInAttributeList_28() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -118244,7 +118501,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsOptionalAttributeEnableInsideStatusLEDInAttributeList_20() + CHIP_ERROR TestThReadsOptionalAttributeEnableInsideStatusLEDInAttributeList_29() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -118264,7 +118521,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsOptionalAttributeEnablePrivacyModeButtonInAttributeList_21() + CHIP_ERROR TestThReadsOptionalAttributeEnablePrivacyModeButtonInAttributeList_30() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -118284,7 +118541,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsOptionalAttributeLocalProgrammingFeaturesInAttributeList_22() + CHIP_ERROR TestThReadsOptionalAttributeLocalProgrammingFeaturesInAttributeList_31() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -118304,7 +118561,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsAcceptedCommandListFromDut_23() + CHIP_ERROR TestThReadsAcceptedCommandListFromDut_32() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -118325,7 +118582,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentCommandsDRLKSF04InAcceptedCommandList_24() + CHIP_ERROR TestThReadsFeatureDependentCommandsDRLKSF04InAcceptedCommandList_33() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -118347,14 +118604,14 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentCommandsDRLKSF10InAcceptedCommandList_25() + CHIP_ERROR TestThReadsFeatureDependentCommandsDRLKSF0aInAcceptedCommandList_34() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeAcceptedCommandListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"TH reads Feature dependent commands(DRLK.S.F10) in AcceptedCommandList Error: %@", err); + NSLog(@"TH reads Feature dependent commands(DRLK.S.F0a) in AcceptedCommandList Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -118369,14 +118626,14 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentCommandsDRLKSF11InAcceptedCommandList_26() + CHIP_ERROR TestThReadsFeatureDependentCommandsDRLKSF0bInAcceptedCommandList_35() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeAcceptedCommandListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"TH reads Feature dependent commands(DRLK.S.F11) in AcceptedCommandList Error: %@", err); + NSLog(@"TH reads Feature dependent commands(DRLK.S.F0b) in AcceptedCommandList Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -118391,7 +118648,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentCommandsDRLKSF08InAcceptedCommandList_27() + CHIP_ERROR TestThReadsFeatureDependentCommandsDRLKSF08InAcceptedCommandList_36() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -118416,7 +118673,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsOptionalCommandsDRLKSC03RspInAcceptedCommandList_28() + CHIP_ERROR TestThReadsOptionalCommandsDRLKSC03RspInAcceptedCommandList_37() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -118436,7 +118693,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentCommandDRLKSF04InGeneratedCommandList_29() + CHIP_ERROR TestThReadsFeatureDependentCommandDRLKSF04InGeneratedCommandList_38() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -118456,14 +118713,14 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentCommandDRLKSF10InGeneratedCommandList_30() + CHIP_ERROR TestThReadsFeatureDependentCommandDRLKSF0aInGeneratedCommandList_39() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeGeneratedCommandListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"TH reads Feature dependent command(DRLK.S.F10) in GeneratedCommandList Error: %@", err); + NSLog(@"TH reads Feature dependent command(DRLK.S.F0a) in GeneratedCommandList Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -118476,14 +118733,14 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentCommandDRLKSF11InGeneratedCommandList_31() + CHIP_ERROR TestThReadsFeatureDependentCommandDRLKSF0bInGeneratedCommandList_40() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeGeneratedCommandListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"TH reads Feature dependent command(DRLK.S.F11) in GeneratedCommandList Error: %@", err); + NSLog(@"TH reads Feature dependent command(DRLK.S.F0b) in GeneratedCommandList Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -118496,7 +118753,7 @@ class Test_TC_DRLK_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsFeatureDependentCommandDRLKSF08InGeneratedCommandList_32() + CHIP_ERROR TestThReadsFeatureDependentCommandDRLKSF08InGeneratedCommandList_41() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterDoorLock * cluster = [[MTRBaseClusterDoorLock alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -122308,7 +122565,7 @@ class Test_TC_DRLK_2_7 : public TestCommandBridge { break; case 3: ChipLogProgress(chipTool, " ***** Test Step 3 : TH reads NumberOfYearDay SchedulesSupportedPerUser attribute\n"); - if (ShouldSkip("DRLK.S.F10 && DRLK.S.A0015")) { + if (ShouldSkip("DRLK.S.F0a && DRLK.S.A0015")) { NextTest(); return; } @@ -122324,7 +122581,7 @@ class Test_TC_DRLK_2_7 : public TestCommandBridge { break; case 5: ChipLogProgress(chipTool, " ***** Test Step 5 : TH sends Set Year Day Schedule Command to DUT\n"); - if (ShouldSkip("DRLK.S.F10 && DRLK.S.C0e.Rsp")) { + if (ShouldSkip("DRLK.S.F0a && DRLK.S.C0e.Rsp")) { NextTest(); return; } @@ -122332,7 +122589,7 @@ class Test_TC_DRLK_2_7 : public TestCommandBridge { break; case 6: ChipLogProgress(chipTool, " ***** Test Step 6 : TH sends Get Year Day Schedule Command to DUT\n"); - if (ShouldSkip("DRLK.S.F10 && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx")) { + if (ShouldSkip("DRLK.S.F0a && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx")) { NextTest(); return; } @@ -122348,7 +122605,7 @@ class Test_TC_DRLK_2_7 : public TestCommandBridge { break; case 8: ChipLogProgress(chipTool, " ***** Test Step 8 : TH sends Get Year Day Schedule Command to DUT\n"); - if (ShouldSkip("DRLK.S.F10 && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx")) { + if (ShouldSkip("DRLK.S.F0a && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx")) { NextTest(); return; } @@ -122360,7 +122617,7 @@ class Test_TC_DRLK_2_7 : public TestCommandBridge { break; case 10: ChipLogProgress(chipTool, " ***** Test Step 10 : TH sends Get Year Day Schedule Command to DUT\n"); - if (ShouldSkip("DRLK.S.F10 && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx")) { + if (ShouldSkip("DRLK.S.F0a && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx")) { NextTest(); return; } @@ -122376,7 +122633,7 @@ class Test_TC_DRLK_2_7 : public TestCommandBridge { break; case 12: ChipLogProgress(chipTool, " ***** Test Step 12 : TH sends Get Year Day Schedule Command to DUT\n"); - if (ShouldSkip("DRLK.S.F10 && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx && DRLK.S.C10.Rsp")) { + if (ShouldSkip("DRLK.S.F0a && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx && DRLK.S.C10.Rsp")) { NextTest(); return; } @@ -122392,7 +122649,7 @@ class Test_TC_DRLK_2_7 : public TestCommandBridge { break; case 14: ChipLogProgress(chipTool, " ***** Test Step 14 : TH sends Get Year Day Schedule Command to DUT\n"); - if (ShouldSkip("DRLK.S.F10 && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx")) { + if (ShouldSkip("DRLK.S.F0a && DRLK.S.C0f.Rsp && DRLK.S.C0f.Tx")) { NextTest(); return; } @@ -122400,7 +122657,7 @@ class Test_TC_DRLK_2_7 : public TestCommandBridge { break; case 15: ChipLogProgress(chipTool, " ***** Test Step 15 : TH sends Clear Year Day Schedule to DUT\n"); - if (ShouldSkip("DRLK.S.F10 && DRLK.S.C10.Rsp")) { + if (ShouldSkip("DRLK.S.F0a && DRLK.S.C10.Rsp")) { NextTest(); return; } @@ -122408,7 +122665,7 @@ class Test_TC_DRLK_2_7 : public TestCommandBridge { break; case 16: ChipLogProgress(chipTool, " ***** Test Step 16 : Clear a year day schedule for the first user\n"); - if (ShouldSkip("DRLK.S.F10 && DRLK.S.C10.Rsp")) { + if (ShouldSkip("DRLK.S.F0a && DRLK.S.C10.Rsp")) { NextTest(); return; }