From 5cf9d283ab49f81db8d2379af71ba16cb0746baa Mon Sep 17 00:00:00 2001 From: Evgeny Margolis Date: Wed, 20 Jul 2022 12:50:23 -0700 Subject: [PATCH 01/18] Added Negative Test Cases for Invalid CATs in NOC. (#20998) --- src/credentials/tests/BUILD.gn | 4 +- .../tests/CHIPCert_error_test_vectors.cpp | 86 +++++++++++++++++++ .../tests/CHIPCert_error_test_vectors.h | 44 ++++++++++ src/credentials/tests/TestChipCert.cpp | 19 +++- src/tools/chip-cert/Cmd_GenCert.cpp | 1 - src/tools/chip-cert/Cmd_PrintCert.cpp | 2 +- 6 files changed, 151 insertions(+), 5 deletions(-) create mode 100644 src/credentials/tests/CHIPCert_error_test_vectors.cpp create mode 100644 src/credentials/tests/CHIPCert_error_test_vectors.h diff --git a/src/credentials/tests/BUILD.gn b/src/credentials/tests/BUILD.gn index f4fb7845271ed8..87c694bb8aa364 100644 --- a/src/credentials/tests/BUILD.gn +++ b/src/credentials/tests/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright (c) 2020-2021 Project CHIP Authors +# Copyright (c) 2020-2022 Project CHIP Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -26,6 +26,8 @@ static_library("cert_test_vectors") { sources = [ "CHIPAttCert_test_vectors.cpp", "CHIPAttCert_test_vectors.h", + "CHIPCert_error_test_vectors.cpp", + "CHIPCert_error_test_vectors.h", "CHIPCert_test_vectors.cpp", "CHIPCert_test_vectors.h", "CHIPCert_unit_test_vectors.cpp", diff --git a/src/credentials/tests/CHIPCert_error_test_vectors.cpp b/src/credentials/tests/CHIPCert_error_test_vectors.cpp new file mode 100644 index 00000000000000..c1b44945a0c33d --- /dev/null +++ b/src/credentials/tests/CHIPCert_error_test_vectors.cpp @@ -0,0 +1,86 @@ +/* + * + * Copyright (c) 2022 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "CHIPCert_error_test_vectors.h" + +namespace chip { +namespace TestCerts { + +const uint8_t kTestErrorCert_NOC_0001_InvCATVerZero_Cert_Array[275] = { + 0x15, 0x30, 0x01, 0x08, 0x3b, 0x75, 0x5b, 0xc1, 0x54, 0xbe, 0x8b, 0x60, 0x24, 0x02, 0x01, 0x37, 0x03, 0x27, 0x13, 0x03, + 0x00, 0x00, 0x00, 0xca, 0xca, 0xca, 0xca, 0x18, 0x26, 0x04, 0xef, 0x17, 0x1b, 0x27, 0x26, 0x05, 0x6e, 0xb5, 0xb9, 0x4c, + 0x37, 0x06, 0x27, 0x11, 0x01, 0x00, 0xee, 0xee, 0xde, 0xde, 0xde, 0xde, 0x27, 0x15, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb0, 0xfa, 0x26, 0x16, 0x00, 0x00, 0xcd, 0xab, 0x18, 0x24, 0x07, 0x01, 0x24, 0x08, 0x01, 0x30, 0x09, 0x41, 0x04, 0xff, + 0x23, 0x5d, 0x91, 0xf3, 0x3c, 0x04, 0x7f, 0x82, 0xf0, 0x2c, 0x86, 0x70, 0xbb, 0xd2, 0xb4, 0x34, 0x42, 0x44, 0x6b, 0xc2, + 0xb8, 0x38, 0x6a, 0x36, 0x90, 0x92, 0x36, 0xed, 0x5b, 0x4e, 0x63, 0x81, 0xe6, 0x6b, 0x30, 0x0f, 0x45, 0x75, 0xab, 0x88, + 0xba, 0xcb, 0xad, 0x4e, 0x5f, 0xfe, 0x7e, 0x83, 0x5f, 0xb3, 0xf1, 0xb3, 0x3a, 0x5d, 0xa7, 0x83, 0xf5, 0x07, 0x0e, 0xcf, + 0x91, 0xfb, 0x2b, 0x37, 0x0a, 0x35, 0x01, 0x28, 0x01, 0x18, 0x24, 0x02, 0x01, 0x36, 0x03, 0x04, 0x02, 0x04, 0x01, 0x18, + 0x30, 0x04, 0x14, 0x1b, 0xc5, 0xf6, 0x12, 0xf9, 0x6a, 0x92, 0xa1, 0x14, 0xbf, 0x2c, 0x77, 0x2f, 0x13, 0xcd, 0xd7, 0x14, + 0x2f, 0x14, 0xc8, 0x30, 0x05, 0x14, 0x34, 0x3d, 0xbd, 0x99, 0xff, 0xaf, 0xb3, 0x1e, 0xeb, 0x4f, 0x81, 0x4f, 0x6f, 0x9a, + 0x14, 0x74, 0xf1, 0xd4, 0x4f, 0xeb, 0x18, 0x30, 0x0b, 0x40, 0xb9, 0x80, 0xee, 0x56, 0xf7, 0x61, 0xd6, 0x85, 0xf8, 0x55, + 0x1a, 0x57, 0x07, 0xc1, 0x25, 0xbd, 0x6a, 0xc7, 0x80, 0x46, 0x85, 0x5b, 0x80, 0x28, 0x2e, 0x35, 0xf0, 0x60, 0x72, 0x68, + 0xf5, 0xe7, 0xd9, 0x9f, 0x3e, 0x27, 0xef, 0x29, 0x8b, 0xbf, 0x73, 0x05, 0xa2, 0x56, 0x73, 0x6e, 0xac, 0x8c, 0xd9, 0xf2, + 0xca, 0x59, 0x6e, 0xb1, 0x75, 0xf5, 0x74, 0xa9, 0x2e, 0x27, 0x1b, 0x7a, 0xba, 0x20, 0x18, +}; +const uint8_t kTestErrorCert_NOC_0001_InvCATVerZero_PublicKey_Array[65] = { + 0x04, 0xff, 0x23, 0x5d, 0x91, 0xf3, 0x3c, 0x04, 0x7f, 0x82, 0xf0, 0x2c, 0x86, 0x70, 0xbb, 0xd2, 0xb4, + 0x34, 0x42, 0x44, 0x6b, 0xc2, 0xb8, 0x38, 0x6a, 0x36, 0x90, 0x92, 0x36, 0xed, 0x5b, 0x4e, 0x63, 0x81, + 0xe6, 0x6b, 0x30, 0x0f, 0x45, 0x75, 0xab, 0x88, 0xba, 0xcb, 0xad, 0x4e, 0x5f, 0xfe, 0x7e, 0x83, 0x5f, + 0xb3, 0xf1, 0xb3, 0x3a, 0x5d, 0xa7, 0x83, 0xf5, 0x07, 0x0e, 0xcf, 0x91, 0xfb, 0x2b, +}; +const uint8_t kTestErrorCert_NOC_0001_InvCATVerZero_PrivateKey_Array[32] = { + 0x95, 0xa3, 0xa7, 0x23, 0x79, 0x8a, 0xf7, 0x44, 0x17, 0xe2, 0xa5, 0xa4, 0x4d, 0x18, 0xb5, 0x32, + 0x3e, 0x24, 0x83, 0x60, 0xcf, 0xdc, 0x5a, 0x13, 0xd1, 0xa8, 0xb4, 0x0a, 0x65, 0xe4, 0x0f, 0xbc, +}; + +ByteSpan kTestErrorCert_NOC_0001_InvCATVerZero_Cert = ByteSpan(kTestErrorCert_NOC_0001_InvCATVerZero_Cert_Array); +ByteSpan kTestErrorCert_NOC_0001_InvCATVerZero_PrivateKey = ByteSpan(kTestErrorCert_NOC_0001_InvCATVerZero_PrivateKey_Array); +ByteSpan kTestErrorCert_NOC_0001_InvCATVerZero_PublicKey = ByteSpan(kTestErrorCert_NOC_0001_InvCATVerZero_PublicKey_Array); + +const uint8_t kTestErrorCert_NOC_0002_InvCATMulVers_Cert_Array[287] = { + 0x15, 0x30, 0x01, 0x08, 0x32, 0xf6, 0xd3, 0x7c, 0xfa, 0xd4, 0x71, 0xe2, 0x24, 0x02, 0x01, 0x37, 0x03, 0x27, 0x13, 0x03, 0x00, + 0x00, 0x00, 0xca, 0xca, 0xca, 0xca, 0x18, 0x26, 0x04, 0xef, 0x17, 0x1b, 0x27, 0x26, 0x05, 0x6e, 0xb5, 0xb9, 0x4c, 0x37, 0x06, + 0x26, 0x16, 0x04, 0x00, 0xcd, 0xab, 0x26, 0x16, 0x10, 0x00, 0x22, 0x22, 0x26, 0x16, 0x02, 0x00, 0xcd, 0xab, 0x27, 0x11, 0x02, + 0x00, 0xee, 0xee, 0xde, 0xde, 0xde, 0xde, 0x27, 0x15, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xfa, 0x18, 0x24, 0x07, 0x01, + 0x24, 0x08, 0x01, 0x30, 0x09, 0x41, 0x04, 0x0e, 0x40, 0x23, 0x8b, 0xf6, 0x6e, 0xb5, 0x26, 0x01, 0xc4, 0xac, 0x57, 0x97, 0xdd, + 0xc3, 0x9a, 0x1a, 0x01, 0x85, 0xf4, 0x38, 0x34, 0x0d, 0xd5, 0x00, 0x5b, 0x8e, 0x23, 0x26, 0x18, 0x47, 0x3c, 0x47, 0x71, 0xb6, + 0x05, 0xe2, 0xab, 0x73, 0xd7, 0x95, 0xbf, 0xfc, 0x55, 0xdf, 0x31, 0x51, 0x40, 0xb0, 0xdd, 0x16, 0x47, 0x58, 0xca, 0xfd, 0x3c, + 0x65, 0x00, 0xa9, 0x0a, 0x9a, 0x85, 0xec, 0x72, 0x37, 0x0a, 0x35, 0x01, 0x28, 0x01, 0x18, 0x24, 0x02, 0x01, 0x36, 0x03, 0x04, + 0x02, 0x04, 0x01, 0x18, 0x30, 0x04, 0x14, 0x19, 0xf2, 0x66, 0x00, 0x88, 0xac, 0x5a, 0xf5, 0xd0, 0xac, 0xa3, 0xf8, 0xac, 0xec, + 0xb8, 0x6e, 0x3f, 0xe2, 0x77, 0x4f, 0x30, 0x05, 0x14, 0x34, 0x3d, 0xbd, 0x99, 0xff, 0xaf, 0xb3, 0x1e, 0xeb, 0x4f, 0x81, 0x4f, + 0x6f, 0x9a, 0x14, 0x74, 0xf1, 0xd4, 0x4f, 0xeb, 0x18, 0x30, 0x0b, 0x40, 0xba, 0xa7, 0xaf, 0x18, 0x14, 0x52, 0xe6, 0x06, 0x2d, + 0xd1, 0x0a, 0x9a, 0x6d, 0xd0, 0x5d, 0xdb, 0xc2, 0x2c, 0xd3, 0x17, 0x94, 0x75, 0x9e, 0x1c, 0x2b, 0x57, 0x4e, 0xbb, 0xd6, 0xa4, + 0x58, 0x52, 0x5a, 0x80, 0x60, 0xf2, 0x43, 0x21, 0x4b, 0xba, 0x9d, 0xd2, 0xc9, 0x2a, 0x3b, 0xe6, 0xab, 0x22, 0xe9, 0xe2, 0x29, + 0xc2, 0x13, 0xac, 0xf0, 0xf2, 0x4e, 0x6c, 0x63, 0xea, 0xfa, 0xb8, 0xaa, 0xc3, 0x18, +}; +const uint8_t kTestErrorCert_NOC_0002_InvCATMulVers_PublicKey_Array[65] = { + 0x04, 0x0e, 0x40, 0x23, 0x8b, 0xf6, 0x6e, 0xb5, 0x26, 0x01, 0xc4, 0xac, 0x57, 0x97, 0xdd, 0xc3, 0x9a, + 0x1a, 0x01, 0x85, 0xf4, 0x38, 0x34, 0x0d, 0xd5, 0x00, 0x5b, 0x8e, 0x23, 0x26, 0x18, 0x47, 0x3c, 0x47, + 0x71, 0xb6, 0x05, 0xe2, 0xab, 0x73, 0xd7, 0x95, 0xbf, 0xfc, 0x55, 0xdf, 0x31, 0x51, 0x40, 0xb0, 0xdd, + 0x16, 0x47, 0x58, 0xca, 0xfd, 0x3c, 0x65, 0x00, 0xa9, 0x0a, 0x9a, 0x85, 0xec, 0x72, +}; +const uint8_t kTestErrorCert_NOC_0002_InvCATMulVers_PrivateKey_Array[32] = { + 0x06, 0x1b, 0x1e, 0xfd, 0xac, 0x86, 0x9b, 0xec, 0xd3, 0x82, 0xc9, 0x8e, 0x63, 0x63, 0x2a, 0x35, + 0xc2, 0xef, 0x2a, 0x8e, 0x2d, 0xb1, 0x7b, 0x72, 0x55, 0x8c, 0x1c, 0xc7, 0x83, 0x8e, 0xaa, 0xee, +}; + +ByteSpan kTestErrorCert_NOC_0002_InvCATMulVers_Cert = ByteSpan(kTestErrorCert_NOC_0002_InvCATMulVers_Cert_Array); +ByteSpan kTestErrorCert_NOC_0002_InvCATMulVers_PrivateKey = ByteSpan(kTestErrorCert_NOC_0002_InvCATMulVers_PrivateKey_Array); +ByteSpan kTestErrorCert_NOC_0002_InvCATMulVers_PublicKey = ByteSpan(kTestErrorCert_NOC_0002_InvCATMulVers_PublicKey_Array); + +} // namespace TestCerts +} // namespace chip diff --git a/src/credentials/tests/CHIPCert_error_test_vectors.h b/src/credentials/tests/CHIPCert_error_test_vectors.h new file mode 100644 index 00000000000000..49f46f5121622f --- /dev/null +++ b/src/credentials/tests/CHIPCert_error_test_vectors.h @@ -0,0 +1,44 @@ +/* + * + * Copyright (c) 2022 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include + +#include + +namespace chip { +namespace TestCerts { + +extern const uint8_t kTestErrorCert_NOC_0001_InvCATVerZero_Cert_Array[275]; +extern const uint8_t kTestErrorCert_NOC_0001_InvCATVerZero_PublicKey_Array[65]; +extern const uint8_t kTestErrorCert_NOC_0001_InvCATVerZero_PrivateKey_Array[32]; + +extern ByteSpan kTestErrorCert_NOC_0001_InvCATVerZero_Cert; +extern ByteSpan kTestErrorCert_NOC_0001_InvCATVerZero_PrivateKey; +extern ByteSpan kTestErrorCert_NOC_0001_InvCATVerZero_PublicKey; + +extern const uint8_t kTestErrorCert_NOC_0002_InvCATMulVers_Cert_Array[287]; +extern const uint8_t kTestErrorCert_NOC_0002_InvCATMulVers_PublicKey_Array[65]; +extern const uint8_t kTestErrorCert_NOC_0002_InvCATMulVers_PrivateKey_Array[32]; + +extern ByteSpan kTestErrorCert_NOC_0002_InvCATMulVers_Cert; +extern ByteSpan kTestErrorCert_NOC_0002_InvCATMulVers_PrivateKey; +extern ByteSpan kTestErrorCert_NOC_0002_InvCATMulVers_PublicKey; + +} // namespace TestCerts +} // namespace chip diff --git a/src/credentials/tests/TestChipCert.cpp b/src/credentials/tests/TestChipCert.cpp index afdf04caf166ee..97c00d7ca555bd 100644 --- a/src/credentials/tests/TestChipCert.cpp +++ b/src/credentials/tests/TestChipCert.cpp @@ -37,6 +37,7 @@ #include +#include "CHIPCert_error_test_vectors.h" #include "CHIPCert_test_vectors.h" using namespace chip; @@ -1765,7 +1766,7 @@ static void TestChipCert_ExtractOperationalDiscoveryId(nlTestSuite * inSuite, vo } } -static void TestChipCert_ExtractCATsFromOpCert(nlTestSuite * inSuite, void * inContext) +static void TestChipCert_ExtractAndValidateCATsFromOpCert(nlTestSuite * inSuite, void * inContext) { struct TestCase { @@ -1835,6 +1836,20 @@ static void TestChipCert_ExtractCATsFromOpCert(nlTestSuite * inSuite, void * inC certSet.Release(); } + + // Error case: NOC with invalid CAT version. + { + CATValues cats; + CHIP_ERROR err = ExtractCATsFromOpCert(kTestErrorCert_NOC_0001_InvCATVerZero_Cert, cats); + NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_INVALID_ARGUMENT); + } + + // Error case: NOC with multiple versions of the same CAT tag. + { + CATValues cats; + CHIP_ERROR err = ExtractCATsFromOpCert(kTestErrorCert_NOC_0002_InvCATMulVers_Cert, cats); + NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_WRONG_CERT_DN); + } } static void TestChipCert_ExtractSubjectDNFromChipCert(nlTestSuite * inSuite, void * inContext) @@ -2007,7 +2022,7 @@ static const nlTest sTests[] = { NL_TEST_DEF("Test CHIP Verify Generated Cert Chain No ICA", TestChipCert_VerifyGeneratedCertsNoICA), NL_TEST_DEF("Test extracting Node ID and Fabric ID from node certificate", TestChipCert_ExtractNodeIdFabricId), NL_TEST_DEF("Test extracting Operational Discovery ID from node and root certificate", TestChipCert_ExtractOperationalDiscoveryId), - NL_TEST_DEF("Test extracting CASE Authenticated Tags from node certificate", TestChipCert_ExtractCATsFromOpCert), + NL_TEST_DEF("Test extracting and validating CASE Authenticated Tags from NOC", TestChipCert_ExtractAndValidateCATsFromOpCert), NL_TEST_DEF("Test extracting Subject DN from chip certificate", TestChipCert_ExtractSubjectDNFromChipCert), NL_TEST_DEF("Test extracting PublicKey and SKID from chip certificate", TestChipCert_ExtractPublicKeyAndSKID), NL_TEST_SENTINEL() diff --git a/src/tools/chip-cert/Cmd_GenCert.cpp b/src/tools/chip-cert/Cmd_GenCert.cpp index 75153464084414..baed859b89143b 100644 --- a/src/tools/chip-cert/Cmd_GenCert.cpp +++ b/src/tools/chip-cert/Cmd_GenCert.cpp @@ -141,7 +141,6 @@ const char * const gCmdOptionHelp = " x509-der - X.509 DER raw format\n" " x509-hex - X.509 DER hex encoded format\n" " chip - raw CHIP TLV format\n" - " chip-hex - hex encoded CHIP TLV format\n" " chip-b64 - base-64 encoded CHIP TLV format (default)\n" " chip-hex - hex encoded CHIP TLV format\n" "\n" diff --git a/src/tools/chip-cert/Cmd_PrintCert.cpp b/src/tools/chip-cert/Cmd_PrintCert.cpp index 298606136660cd..2bef2ed868c2a2 100644 --- a/src/tools/chip-cert/Cmd_PrintCert.cpp +++ b/src/tools/chip-cert/Cmd_PrintCert.cpp @@ -84,7 +84,7 @@ OptionSet *gCmdOptionSets[] = // clang-format on const char * gInFileName = nullptr; -const char * gOutFileName = nullptr; +const char * gOutFileName = "-"; bool HandleOption(const char * progName, OptionSet * optSet, int id, const char * name, const char * arg) { From a3390b1524ec8bfa1052e9063c0f9035b8b532f3 Mon Sep 17 00:00:00 2001 From: Andrei Litvin Date: Wed, 20 Jul 2022 16:03:18 -0400 Subject: [PATCH 02/18] Add crypto target to build examples (#20958) * Add crypto lib support for host builds. Fix up arm64 a bit * Restyled by autopep8 * Update naming for builds for linux arm compiles * Fix rejection for clang build variants * update bload names with arm64 clang name Co-authored-by: Restyled.io --- .github/workflows/examples-linux-arm.yaml | 14 +- scripts/build/build/targets.py | 31 +- scripts/build/builders/host.py | 37 ++- scripts/build/testdata/build_linux_on_x64.txt | 299 ++++++++---------- 4 files changed, 194 insertions(+), 187 deletions(-) diff --git a/.github/workflows/examples-linux-arm.yaml b/.github/workflows/examples-linux-arm.yaml index 59df7eabc678b0..ec0ff24c12251e 100644 --- a/.github/workflows/examples-linux-arm.yaml +++ b/.github/workflows/examples-linux-arm.yaml @@ -69,11 +69,11 @@ jobs: run: | ./scripts/run_in_build_env.sh \ "./scripts/build/build_examples.py \ - --target linux-arm64-all-clusters \ - --target linux-arm64-chip-tool-ipv6only \ - --target linux-arm64-lock \ - --target linux-arm64-minmdns \ - --target linux-arm64-thermostat-no-ble \ + --target linux-arm64-clang-all-clusters \ + --target linux-arm64-clang-chip-tool-ipv6only \ + --target linux-arm64-clang-lock \ + --target linux-arm64-clang-minmdns \ + --target linux-arm64-clang-thermostat-no-ble \ build \ " - name: Bloat report - chip-tool @@ -81,14 +81,14 @@ jobs: run: | .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ linux arm64 chip-tool-ipv6only \ - out/linux-arm64-chip-tool-ipv6only/chip-tool \ + out/linux-arm64-clang-chip-tool-ipv6only/chip-tool \ /tmp/bloat_reports/ - name: Bloat report - thermostat timeout-minutes: 5 run: | .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ linux arm64 thermostat-no-ble \ - out/linux-arm64-thermostat-no-ble/thermostat-app \ + out/linux-arm64-clang-thermostat-no-ble/thermostat-app \ /tmp/bloat_reports/ - name: Uploading Size Reports uses: actions/upload-artifact@v2 diff --git a/scripts/build/build/targets.py b/scripts/build/build/targets.py index 5da906e0953545..a4d3d859558bca 100755 --- a/scripts/build/build/targets.py +++ b/scripts/build/build/targets.py @@ -22,7 +22,7 @@ from builders.cyw30739 import Cyw30739App, Cyw30739Board, Cyw30739Builder from builders.efr32 import Efr32App, Efr32Board, Efr32Builder from builders.esp32 import Esp32App, Esp32Board, Esp32Builder -from builders.host import HostApp, HostBoard, HostBuilder +from builders.host import HostApp, HostBoard, HostBuilder, HostCryptoLibrary from builders.infineon import InfineonApp, InfineonBoard, InfineonBuilder from builders.k32w import K32WApp, K32WBuilder from builders.mbed import MbedApp, MbedBoard, MbedBuilder, MbedProfile @@ -116,6 +116,17 @@ def Accept(self, name: str): return False +class RejectNameWithSubstrings: + def __init__(self, substr: List[str]): + self.substr = substr + + def Accept(self, name: str): + for s in self.substr: + if s in name: + return False + return True + + class BuildVariant: def __init__(self, name: str, validator=AcceptAnyName(), conflicts: List[str] = [], requires: List[str] = [], @@ -226,7 +237,7 @@ def HostTargets(): # x64 linux supports cross compile cross_compile = (HostBoard.NATIVE.PlatformName() == 'linux') and (HostBoard.NATIVE.BoardName() != HostBoard.ARM64.BoardName()) if cross_compile: - targets.append(target.Extend('arm64', board=HostBoard.ARM64)) + targets.append(target.Extend('arm64-clang', board=HostBoard.ARM64, use_clang=True)) app_targets = [] @@ -276,11 +287,19 @@ def HostTargets(): builder.AppendVariant(name="no-ble", enable_ble=False), builder.AppendVariant(name="no-wifi", enable_wifi=False), builder.AppendVariant(name="no-thread", enable_thread=False), + builder.AppendVariant(name="mbedtls", conflicts=['boringssl'], crypto_library=HostCryptoLibrary.MBEDTLS), + builder.AppendVariant(name="boringssl", conflicts=['mbedtls'], crypto_library=HostCryptoLibrary.BORINGSSL), builder.AppendVariant(name="tsan", conflicts=['asan'], use_tsan=True), builder.AppendVariant(name="asan", conflicts=['tsan'], use_asan=True), builder.AppendVariant(name="libfuzzer", requires=[ "clang"], use_libfuzzer=True), - builder.AppendVariant(name="clang", use_clang=True), + if cross_compile: + builder.AppendVariant(name="clang", use_clang=True, validator=RejectNameWithSubstrings( + ['arm64'] + )), + else: + builder.AppendVariant(name="clang", use_clang=True) + builder.AppendVariant(name="test", extra_tests=True), builder.WhitelistVariantNameForGlob('ipv6only') @@ -310,8 +329,10 @@ def HostTargets(): use_platform_mdns=True, enable_ipv4=False).GlobBlacklist("Reduce default build variants") yield target_native.Extend('tests', app=HostApp.TESTS) - yield target_native.Extend('tests-coverage', app=HostApp.TESTS, use_coverage=True) - yield target_native.Extend('tests-clang', app=HostApp.TESTS, use_clang=True) + yield target_native.Extend('tests-mbedtls', app=HostApp.TESTS, crypto_library=HostCryptoLibrary.MBEDTLS).GlobBlacklist("Non-default test") + 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") 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/host.py b/scripts/build/builders/host.py index 1569b0564c4530..54df761d3dd3ca 100644 --- a/scripts/build/builders/host.py +++ b/scripts/build/builders/host.py @@ -19,6 +19,22 @@ from .gn import GnBuilder +class HostCryptoLibrary(Enum): + """Defines what cryptographic backend applications should use.""" + OPENSSL = auto() + MBEDTLS = auto() + BORINGSSL = auto() + + @property + def gn_argument(self): + if self == HostCryptoLibrary.OPENSSL: + return 'chip_crypto="openssl"' + elif self == HostCryptoLibrary.MBEDTLS: + return 'chip_crypto="mbedtls"' + elif self == HostCryptoLibrary.BORINGSSL: + return 'chip_crypto="boringssl"' + + class HostApp(Enum): ALL_CLUSTERS = auto() ALL_CLUSTERS_MINIMAL = auto() @@ -198,7 +214,7 @@ 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): + use_coverage=False, crypto_library: HostCryptoLibrary = None): super(HostBuilder, self).__init__( root=os.path.join(root, 'examples', app.ExamplePath()), runner=runner) @@ -264,14 +280,19 @@ def __init__(self, root, runner, app: HostApp, board=HostBoard.NATIVE, if app == HostApp.NL_TEST_RUNNER: self.build_command = 'runner' + # Crypto library has per-platform defaults (like openssl for linux/mac + # and mbedtls for android/freertos/zephyr/mbed/...) + if crypto_library: + self.extra_gn_options.append(crypto_library.gn_argument) + + if self.board == HostBoard.ARM64: + if not use_clang: + raise Exception("Cross compile only supported using clang") + if app == HostApp.CERT_TOOL: # Certification only built for openssl - if self.board == HostBoard.ARM64: - # OpenSSL and mbedTLS conflicts. - # We only cross compile with mbedTLS. - raise Exception( - "Cannot cross compile CERT TOOL: ssl library conflict") - self.extra_gn_options.append('chip_crypto="openssl"') + if self.board == HostBoard.ARM64 and crypto_library == HostCryptoLibrary.MBEDTLS: + raise Exception("MbedTLS not supported for cross compiling cert tool") self.build_command = 'src/tools/chip-cert' elif app == HostApp.ADDRESS_RESOLVE: self.build_command = 'src/lib/address_resolve:address-resolve-tool' @@ -287,8 +308,6 @@ def GnBuildArgs(self): self.extra_gn_options.extend( [ 'target_cpu="arm64"', - 'is_clang=true', - 'chip_crypto="mbedtls"', 'sysroot="%s"' % self.SysRootPath('SYSROOT_AARCH64') ] ) diff --git a/scripts/build/testdata/build_linux_on_x64.txt b/scripts/build/testdata/build_linux_on_x64.txt index 8e28a1abd6e909..0affc2ae79ba88 100644 --- a/scripts/build/testdata/build_linux_on_x64.txt +++ b/scripts/build/testdata/build_linux_on_x64.txt @@ -1,170 +1,170 @@ # Commands will be run in CHIP project root. cd "{root}" -# Generating linux-arm64-all-clusters +# Generating linux-arm64-clang-all-clusters bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-app/linux '"'"'--args=target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-all-clusters' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-app/linux '"'"'--args=is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-all-clusters' -# Generating linux-arm64-all-clusters-app-nodeps +# Generating linux-arm64-clang-all-clusters-app-nodeps bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-app/linux '"'"'--args=chip_config_network_layer_ble=false chip_enable_wifi=false chip_enable_openthread=false is_clang=true target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-all-clusters-app-nodeps' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-app/linux '"'"'--args=chip_config_network_layer_ble=false chip_enable_wifi=false chip_enable_openthread=false is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-all-clusters-app-nodeps' -# Generating linux-arm64-all-clusters-app-nodeps-ipv6only +# Generating linux-arm64-clang-all-clusters-app-nodeps-ipv6only bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-app/linux '"'"'--args=chip_inet_config_enable_ipv4=false chip_config_network_layer_ble=false chip_enable_wifi=false chip_enable_openthread=false is_clang=true target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-all-clusters-app-nodeps-ipv6only' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-app/linux '"'"'--args=chip_inet_config_enable_ipv4=false chip_config_network_layer_ble=false chip_enable_wifi=false chip_enable_openthread=false is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-all-clusters-app-nodeps-ipv6only' -# Generating linux-arm64-all-clusters-ipv6only +# Generating linux-arm64-clang-all-clusters-ipv6only bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-app/linux '"'"'--args=chip_inet_config_enable_ipv4=false target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-all-clusters-ipv6only' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-app/linux '"'"'--args=chip_inet_config_enable_ipv4=false is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-all-clusters-ipv6only' -# Generating linux-arm64-all-clusters-minimal +# Generating linux-arm64-clang-all-clusters-minimal bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-minimal-app/linux '"'"'--args=target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-all-clusters-minimal' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-minimal-app/linux '"'"'--args=is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-all-clusters-minimal' -# Generating linux-arm64-all-clusters-minimal-ipv6only +# Generating linux-arm64-clang-all-clusters-minimal-ipv6only bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-minimal-app/linux '"'"'--args=chip_inet_config_enable_ipv4=false target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-all-clusters-minimal-ipv6only' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/all-clusters-minimal-app/linux '"'"'--args=chip_inet_config_enable_ipv4=false is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-all-clusters-minimal-ipv6only' -# Generating linux-arm64-bridge +# Generating linux-arm64-clang-bridge bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/bridge-app/linux '"'"'--args=target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-bridge' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/bridge-app/linux '"'"'--args=is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-bridge' -# Generating linux-arm64-bridge-ipv6only +# Generating linux-arm64-clang-bridge-ipv6only bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/bridge-app/linux '"'"'--args=chip_inet_config_enable_ipv4=false target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-bridge-ipv6only' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/bridge-app/linux '"'"'--args=chip_inet_config_enable_ipv4=false is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-bridge-ipv6only' -# Generating linux-arm64-chip-tool +# Generating linux-arm64-clang-chip-tool bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/chip-tool '"'"'--args=target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-chip-tool' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/chip-tool '"'"'--args=is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-chip-tool' -# Generating linux-arm64-chip-tool-ipv6only +# Generating linux-arm64-clang-chip-tool-ipv6only bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/chip-tool '"'"'--args=chip_inet_config_enable_ipv4=false target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-chip-tool-ipv6only' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/chip-tool '"'"'--args=chip_inet_config_enable_ipv4=false is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-chip-tool-ipv6only' -# Generating linux-arm64-chip-tool-nodeps +# Generating linux-arm64-clang-chip-tool-nodeps bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/chip-tool '"'"'--args=chip_config_network_layer_ble=false chip_enable_wifi=false chip_enable_openthread=false is_clang=true target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-chip-tool-nodeps' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/chip-tool '"'"'--args=chip_config_network_layer_ble=false chip_enable_wifi=false chip_enable_openthread=false is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-chip-tool-nodeps' -# Generating linux-arm64-chip-tool-nodeps-ipv6only +# Generating linux-arm64-clang-chip-tool-nodeps-ipv6only bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/chip-tool '"'"'--args=chip_inet_config_enable_ipv4=false chip_config_network_layer_ble=false chip_enable_wifi=false chip_enable_openthread=false is_clang=true target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-chip-tool-nodeps-ipv6only' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/chip-tool '"'"'--args=chip_inet_config_enable_ipv4=false chip_config_network_layer_ble=false chip_enable_wifi=false chip_enable_openthread=false is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-chip-tool-nodeps-ipv6only' -# Generating linux-arm64-light +# Generating linux-arm64-clang-light bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/linux '"'"'--args=target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-light' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/linux '"'"'--args=is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-light' -# Generating linux-arm64-light-ipv6only +# Generating linux-arm64-clang-light-ipv6only bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/linux '"'"'--args=chip_inet_config_enable_ipv4=false target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-light-ipv6only' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/linux '"'"'--args=chip_inet_config_enable_ipv4=false is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-light-ipv6only' -# Generating linux-arm64-light-rpc +# Generating linux-arm64-clang-light-rpc bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/linux '"'"'--args=import("//with_pw_rpc.gni") target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-light-rpc' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/linux '"'"'--args=import("//with_pw_rpc.gni") is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-light-rpc' -# Generating linux-arm64-light-rpc-ipv6only +# Generating linux-arm64-clang-light-rpc-ipv6only bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/linux '"'"'--args=import("//with_pw_rpc.gni") chip_inet_config_enable_ipv4=false target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-light-rpc-ipv6only' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/linux '"'"'--args=import("//with_pw_rpc.gni") chip_inet_config_enable_ipv4=false is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-light-rpc-ipv6only' -# Generating linux-arm64-lock +# Generating linux-arm64-clang-lock bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/linux '"'"'--args=target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-lock' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/linux '"'"'--args=is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-lock' -# Generating linux-arm64-lock-ipv6only +# Generating linux-arm64-clang-lock-ipv6only bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/linux '"'"'--args=chip_inet_config_enable_ipv4=false target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-lock-ipv6only' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/linux '"'"'--args=chip_inet_config_enable_ipv4=false is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-lock-ipv6only' -# Generating linux-arm64-minmdns +# Generating linux-arm64-clang-minmdns bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/minimal-mdns '"'"'--args=target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-minmdns' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/minimal-mdns '"'"'--args=is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-minmdns' -# Generating linux-arm64-minmdns-ipv6only +# Generating linux-arm64-clang-minmdns-ipv6only bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/minimal-mdns '"'"'--args=chip_inet_config_enable_ipv4=false target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-minmdns-ipv6only' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/minimal-mdns '"'"'--args=chip_inet_config_enable_ipv4=false is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-minmdns-ipv6only' -# Generating linux-arm64-ota-provider +# Generating linux-arm64-clang-ota-provider bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/ota-provider-app/linux '"'"'--args=chip_config_network_layer_ble=false target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-ota-provider' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/ota-provider-app/linux '"'"'--args=chip_config_network_layer_ble=false is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-ota-provider' -# Generating linux-arm64-ota-provider-ipv6only +# Generating linux-arm64-clang-ota-provider-ipv6only bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/ota-provider-app/linux '"'"'--args=chip_inet_config_enable_ipv4=false chip_config_network_layer_ble=false target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-ota-provider-ipv6only' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/ota-provider-app/linux '"'"'--args=chip_inet_config_enable_ipv4=false chip_config_network_layer_ble=false is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-ota-provider-ipv6only' -# Generating linux-arm64-ota-requestor +# Generating linux-arm64-clang-ota-requestor bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/ota-requestor-app/linux '"'"'--args=chip_config_network_layer_ble=false target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-ota-requestor' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/ota-requestor-app/linux '"'"'--args=chip_config_network_layer_ble=false is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-ota-requestor' -# Generating linux-arm64-ota-requestor-ipv6only +# Generating linux-arm64-clang-ota-requestor-ipv6only bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/ota-requestor-app/linux '"'"'--args=chip_inet_config_enable_ipv4=false chip_config_network_layer_ble=false target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-ota-requestor-ipv6only' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/ota-requestor-app/linux '"'"'--args=chip_inet_config_enable_ipv4=false chip_config_network_layer_ble=false is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-ota-requestor-ipv6only' -# Generating linux-arm64-python-bindings +# Generating linux-arm64-clang-python-bindings bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root} '"'"'--args=enable_rtti=false chip_project_config_include_dirs=["//config/python"] target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-python-bindings' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root} '"'"'--args=is_clang=true enable_rtti=false chip_project_config_include_dirs=["//config/python"] target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-python-bindings' -# Generating linux-arm64-shell +# Generating linux-arm64-clang-shell bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/shell/standalone '"'"'--args=target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-shell' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/shell/standalone '"'"'--args=is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-shell' -# Generating linux-arm64-shell-ipv6only +# Generating linux-arm64-clang-shell-ipv6only bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/shell/standalone '"'"'--args=chip_inet_config_enable_ipv4=false target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-shell-ipv6only' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/shell/standalone '"'"'--args=chip_inet_config_enable_ipv4=false is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-shell-ipv6only' -# Generating linux-arm64-thermostat +# Generating linux-arm64-clang-thermostat bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/thermostat/linux '"'"'--args=target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-thermostat' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/thermostat/linux '"'"'--args=is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-thermostat' -# Generating linux-arm64-thermostat-ipv6only +# Generating linux-arm64-clang-thermostat-ipv6only bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/thermostat/linux '"'"'--args=chip_inet_config_enable_ipv4=false target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-thermostat-ipv6only' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/thermostat/linux '"'"'--args=chip_inet_config_enable_ipv4=false is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-thermostat-ipv6only' -# Generating linux-arm64-tv-app +# Generating linux-arm64-clang-tv-app bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/tv-app/linux '"'"'--args=target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-tv-app' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/tv-app/linux '"'"'--args=is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-tv-app' -# Generating linux-arm64-tv-app-ipv6only +# Generating linux-arm64-clang-tv-app-ipv6only bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/tv-app/linux '"'"'--args=chip_inet_config_enable_ipv4=false target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-tv-app-ipv6only' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/tv-app/linux '"'"'--args=chip_inet_config_enable_ipv4=false is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-tv-app-ipv6only' -# Generating linux-arm64-tv-casting-app +# Generating linux-arm64-clang-tv-casting-app bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/tv-casting-app/linux '"'"'--args=target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-tv-casting-app' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/tv-casting-app/linux '"'"'--args=is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-tv-casting-app' -# Generating linux-arm64-tv-casting-app-ipv6only +# Generating linux-arm64-clang-tv-casting-app-ipv6only bash -c ' PKG_CONFIG_PATH="SYSROOT_AARCH64/lib/aarch64-linux-gnu/pkgconfig" \ - gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/tv-casting-app/linux '"'"'--args=chip_inet_config_enable_ipv4=false target_cpu="arm64" is_clang=true chip_crypto="mbedtls" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-tv-casting-app-ipv6only' + gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/tv-casting-app/linux '"'"'--args=chip_inet_config_enable_ipv4=false is_clang=true target_cpu="arm64" sysroot="SYSROOT_AARCH64"'"'"' {out}/linux-arm64-clang-tv-casting-app-ipv6only' # Generating linux-fake-tests gn gen --check --fail-on-unused-args --export-compile-commands --root={root} '--args=chip_build_tests=true custom_toolchain="//build/toolchain/fake:fake_x64_gcc" chip_link_tests=true chip_device_platform="fake" chip_fake_platform=true' {out}/linux-fake-tests @@ -200,7 +200,7 @@ 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/bridge-app/linux --args=chip_inet_config_enable_ipv4=false {out}/linux-x64-bridge-ipv6only # Generating linux-x64-chip-cert -gn gen --check --fail-on-unused-args --export-compile-commands --root={root} '--args=chip_crypto="openssl"' {out}/linux-x64-chip-cert +gn gen --check --fail-on-unused-args --export-compile-commands --root={root} {out}/linux-x64-chip-cert # Generating linux-x64-chip-tool gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/chip-tool {out}/linux-x64-chip-tool @@ -271,18 +271,6 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa # Generating linux-x64-tests gn gen --check --fail-on-unused-args --export-compile-commands --root={root} --args=chip_build_tests=true {out}/linux-x64-tests -# Generating linux-x64-tests-clang -gn gen --check --fail-on-unused-args --export-compile-commands --root={root} '--args=is_clang=true chip_build_tests=true' {out}/linux-x64-tests-clang - -# Generating linux-x64-tests-coverage -gn gen --check --fail-on-unused-args --export-compile-commands --root={root} '--args=use_coverage=true chip_build_tests=true' {out}/linux-x64-tests-coverage - -# Create coverage output location -mkdir -p {out}/linux-x64-tests-coverage/coverage - -# Initial coverage baseline -lcov --initial --capture --directory {out}/linux-x64-tests-coverage/obj --output-file {out}/linux-x64-tests-coverage/coverage/lcov_base.info - # Generating linux-x64-thermostat gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/thermostat/linux {out}/linux-x64-thermostat @@ -301,104 +289,104 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa # Generating linux-x64-tv-casting-app-ipv6only 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-all-clusters -ninja -C {out}/linux-arm64-all-clusters +# Building linux-arm64-clang-all-clusters +ninja -C {out}/linux-arm64-clang-all-clusters -# Building linux-arm64-all-clusters-app-nodeps -ninja -C {out}/linux-arm64-all-clusters-app-nodeps +# Building linux-arm64-clang-all-clusters-app-nodeps +ninja -C {out}/linux-arm64-clang-all-clusters-app-nodeps -# Building linux-arm64-all-clusters-app-nodeps-ipv6only -ninja -C {out}/linux-arm64-all-clusters-app-nodeps-ipv6only +# Building linux-arm64-clang-all-clusters-app-nodeps-ipv6only +ninja -C {out}/linux-arm64-clang-all-clusters-app-nodeps-ipv6only -# Building linux-arm64-all-clusters-ipv6only -ninja -C {out}/linux-arm64-all-clusters-ipv6only +# Building linux-arm64-clang-all-clusters-ipv6only +ninja -C {out}/linux-arm64-clang-all-clusters-ipv6only -# Building linux-arm64-all-clusters-minimal -ninja -C {out}/linux-arm64-all-clusters-minimal +# Building linux-arm64-clang-all-clusters-minimal +ninja -C {out}/linux-arm64-clang-all-clusters-minimal -# Building linux-arm64-all-clusters-minimal-ipv6only -ninja -C {out}/linux-arm64-all-clusters-minimal-ipv6only +# Building linux-arm64-clang-all-clusters-minimal-ipv6only +ninja -C {out}/linux-arm64-clang-all-clusters-minimal-ipv6only -# Building linux-arm64-bridge -ninja -C {out}/linux-arm64-bridge +# Building linux-arm64-clang-bridge +ninja -C {out}/linux-arm64-clang-bridge -# Building linux-arm64-bridge-ipv6only -ninja -C {out}/linux-arm64-bridge-ipv6only +# Building linux-arm64-clang-bridge-ipv6only +ninja -C {out}/linux-arm64-clang-bridge-ipv6only -# Building linux-arm64-chip-tool -ninja -C {out}/linux-arm64-chip-tool +# Building linux-arm64-clang-chip-tool +ninja -C {out}/linux-arm64-clang-chip-tool -# Building linux-arm64-chip-tool-ipv6only -ninja -C {out}/linux-arm64-chip-tool-ipv6only +# Building linux-arm64-clang-chip-tool-ipv6only +ninja -C {out}/linux-arm64-clang-chip-tool-ipv6only -# Building linux-arm64-chip-tool-nodeps -ninja -C {out}/linux-arm64-chip-tool-nodeps +# Building linux-arm64-clang-chip-tool-nodeps +ninja -C {out}/linux-arm64-clang-chip-tool-nodeps -# Building linux-arm64-chip-tool-nodeps-ipv6only -ninja -C {out}/linux-arm64-chip-tool-nodeps-ipv6only +# Building linux-arm64-clang-chip-tool-nodeps-ipv6only +ninja -C {out}/linux-arm64-clang-chip-tool-nodeps-ipv6only -# Building linux-arm64-light -ninja -C {out}/linux-arm64-light +# Building linux-arm64-clang-light +ninja -C {out}/linux-arm64-clang-light -# Building linux-arm64-light-ipv6only -ninja -C {out}/linux-arm64-light-ipv6only +# Building linux-arm64-clang-light-ipv6only +ninja -C {out}/linux-arm64-clang-light-ipv6only -# Building linux-arm64-light-rpc -ninja -C {out}/linux-arm64-light-rpc +# Building linux-arm64-clang-light-rpc +ninja -C {out}/linux-arm64-clang-light-rpc -# Building linux-arm64-light-rpc-ipv6only -ninja -C {out}/linux-arm64-light-rpc-ipv6only +# Building linux-arm64-clang-light-rpc-ipv6only +ninja -C {out}/linux-arm64-clang-light-rpc-ipv6only -# Building linux-arm64-lock -ninja -C {out}/linux-arm64-lock +# Building linux-arm64-clang-lock +ninja -C {out}/linux-arm64-clang-lock -# Building linux-arm64-lock-ipv6only -ninja -C {out}/linux-arm64-lock-ipv6only +# Building linux-arm64-clang-lock-ipv6only +ninja -C {out}/linux-arm64-clang-lock-ipv6only -# Building linux-arm64-minmdns -ninja -C {out}/linux-arm64-minmdns +# Building linux-arm64-clang-minmdns +ninja -C {out}/linux-arm64-clang-minmdns -# Building linux-arm64-minmdns-ipv6only -ninja -C {out}/linux-arm64-minmdns-ipv6only +# Building linux-arm64-clang-minmdns-ipv6only +ninja -C {out}/linux-arm64-clang-minmdns-ipv6only -# Building linux-arm64-ota-provider -ninja -C {out}/linux-arm64-ota-provider +# Building linux-arm64-clang-ota-provider +ninja -C {out}/linux-arm64-clang-ota-provider -# Building linux-arm64-ota-provider-ipv6only -ninja -C {out}/linux-arm64-ota-provider-ipv6only +# Building linux-arm64-clang-ota-provider-ipv6only +ninja -C {out}/linux-arm64-clang-ota-provider-ipv6only -# Building linux-arm64-ota-requestor -ninja -C {out}/linux-arm64-ota-requestor +# Building linux-arm64-clang-ota-requestor +ninja -C {out}/linux-arm64-clang-ota-requestor -# Building linux-arm64-ota-requestor-ipv6only -ninja -C {out}/linux-arm64-ota-requestor-ipv6only +# Building linux-arm64-clang-ota-requestor-ipv6only +ninja -C {out}/linux-arm64-clang-ota-requestor-ipv6only -# Building linux-arm64-python-bindings -ninja -C {out}/linux-arm64-python-bindings chip-repl +# Building linux-arm64-clang-python-bindings +ninja -C {out}/linux-arm64-clang-python-bindings chip-repl -# Building linux-arm64-shell -ninja -C {out}/linux-arm64-shell +# Building linux-arm64-clang-shell +ninja -C {out}/linux-arm64-clang-shell -# Building linux-arm64-shell-ipv6only -ninja -C {out}/linux-arm64-shell-ipv6only +# Building linux-arm64-clang-shell-ipv6only +ninja -C {out}/linux-arm64-clang-shell-ipv6only -# Building linux-arm64-thermostat -ninja -C {out}/linux-arm64-thermostat +# Building linux-arm64-clang-thermostat +ninja -C {out}/linux-arm64-clang-thermostat -# Building linux-arm64-thermostat-ipv6only -ninja -C {out}/linux-arm64-thermostat-ipv6only +# Building linux-arm64-clang-thermostat-ipv6only +ninja -C {out}/linux-arm64-clang-thermostat-ipv6only -# Building linux-arm64-tv-app -ninja -C {out}/linux-arm64-tv-app +# Building linux-arm64-clang-tv-app +ninja -C {out}/linux-arm64-clang-tv-app -# Building linux-arm64-tv-app-ipv6only -ninja -C {out}/linux-arm64-tv-app-ipv6only +# Building linux-arm64-clang-tv-app-ipv6only +ninja -C {out}/linux-arm64-clang-tv-app-ipv6only -# Building linux-arm64-tv-casting-app -ninja -C {out}/linux-arm64-tv-casting-app +# Building linux-arm64-clang-tv-casting-app +ninja -C {out}/linux-arm64-clang-tv-casting-app -# Building linux-arm64-tv-casting-app-ipv6only -ninja -C {out}/linux-arm64-tv-casting-app-ipv6only +# Building linux-arm64-clang-tv-casting-app-ipv6only +ninja -C {out}/linux-arm64-clang-tv-casting-app-ipv6only # Building linux-fake-tests ninja -C {out}/linux-fake-tests check @@ -505,27 +493,6 @@ ninja -C {out}/linux-x64-shell-ipv6only # Building linux-x64-tests ninja -C {out}/linux-x64-tests check -# Building linux-x64-tests-clang -ninja -C {out}/linux-x64-tests-clang check - -# Build-only -ninja -C {out}/linux-x64-tests-coverage default - -# Initial coverage baseline -lcov --initial --capture --directory {out}/linux-x64-tests-coverage/obj --output-file {out}/linux-x64-tests-coverage/coverage/lcov_base.info - -# Building linux-x64-tests-coverage -ninja -C {out}/linux-x64-tests-coverage check - -# Update coverage -lcov --capture --directory {out}/linux-x64-tests-coverage/obj --output-file {out}/linux-x64-tests-coverage/coverage/lcov_test.info - -# Final coverage info -lcov --add-tracefile {out}/linux-x64-tests-coverage/coverage/lcov_base.info --add-tracefile {out}/linux-x64-tests-coverage/coverage/lcov_test.info --output-file {out}/linux-x64-tests-coverage/coverage/lcov_final.info - -# HTML coverage -genhtml {out}/linux-x64-tests-coverage/coverage/lcov_final.info --output-directory {out}/linux-x64-tests-coverage/coverage/html - # Building linux-x64-thermostat ninja -C {out}/linux-x64-thermostat From d1679fa69971c050460b0a18d7e6ea1005536a07 Mon Sep 17 00:00:00 2001 From: shgutte <102281713+shgutte@users.noreply.github.com> Date: Thu, 21 Jul 2022 02:29:55 +0530 Subject: [PATCH 03/18] Adds fix for WF200 and RS911x for AP not found and retry logic for WF200 (#20922) --- src/platform/EFR32/NetworkCommissioningWiFiDriver.cpp | 2 +- third_party/silabs/matter_support | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/platform/EFR32/NetworkCommissioningWiFiDriver.cpp b/src/platform/EFR32/NetworkCommissioningWiFiDriver.cpp index 7bc9883799e28e..54e38020c7949d 100644 --- a/src/platform/EFR32/NetworkCommissioningWiFiDriver.cpp +++ b/src/platform/EFR32/NetworkCommissioningWiFiDriver.cpp @@ -130,7 +130,7 @@ CHIP_ERROR SlWiFiDriver::ConnectWiFiNetwork(const char * ssid, uint8_t ssidLen, wfx_wifi_provision_t wifiConfig = {}; memcpy(wifiConfig.ssid, ssid, ssidLen); memcpy(wifiConfig.passkey, key, keyLen); - wifiConfig.security = WFX_SEC_WPA2; + wifiConfig.security = WFX_SEC_WPA_WPA2_MIXED; ChipLogProgress(NetworkProvisioning, "Setting up connection for WiFi SSID: %.*s", static_cast(ssidLen), ssid); // Configure the WFX WiFi interface. diff --git a/third_party/silabs/matter_support b/third_party/silabs/matter_support index eef1aab171ff5c..e09b35b26704c2 160000 --- a/third_party/silabs/matter_support +++ b/third_party/silabs/matter_support @@ -1 +1 @@ -Subproject commit eef1aab171ff5c114c98aaee6f236f3a0bbc2a6a +Subproject commit e09b35b26704c22e06e8aaa1d2a1d1c7a6180f1c From 893ac17ef6f25682e101afa0181a373372b62be4 Mon Sep 17 00:00:00 2001 From: PSONALl <77670766+PSONALl@users.noreply.github.com> Date: Thu, 21 Jul 2022 02:48:16 +0530 Subject: [PATCH 04/18] Align xml files with spec (#20920) --- .../zap-templates/zcl/data-model/chip/matter-devices.xml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/app/zap-templates/zcl/data-model/chip/matter-devices.xml b/src/app/zap-templates/zcl/data-model/chip/matter-devices.xml index 36ffc95d2f7deb..705816a3852d9f 100644 --- a/src/app/zap-templates/zcl/data-model/chip/matter-devices.xml +++ b/src/app/zap-templates/zcl/data-model/chip/matter-devices.xml @@ -240,9 +240,6 @@ limitations under the License. CLIENT_LIST PARTS_LIST - - BINDING - GROUP_NAME_SUPPORT AddGroup @@ -289,7 +286,7 @@ limitations under the License. OnWithRecallGlobalScene OnWithTimedOff - + CURRENT_LEVEL OPTIONS LEVEL_CONTROL_REMAINING_TIME @@ -303,7 +300,7 @@ limitations under the License. StepWithOnOff StopWithOnOff - + From 62ccd498247a863e9fe34054e15a8bcb630c505c Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Wed, 20 Jul 2022 17:30:23 -0400 Subject: [PATCH 05/18] Detect mis-typed constraint names. (#21006) We had various YAML tests that had mis-typed constraint names, which led to those constraints silently being ignored. The new setup: * Generates #error for unknown constraint names. * Fixes up the problems in YAML that this uncovers. * Adds support for minLength/maxLength on lists, which some YAMLs were trying to do, but in ways that caused those constraints to be ignored. --- examples/chip-tool/templates/tests/helper.js | 8 +- .../checks/maybeCheckExpectedConstraints.zapt | 68 +++++----- .../commands/tests/TestCommandBridge.h | 24 ++++ .../checks/maybeCheckExpectedConstraints.zapt | 4 +- .../tests/suites/TestModeSelectCluster.yaml | 6 +- .../certification/Test_TC_APBSC_9_1.yaml | 2 +- .../certification/Test_TC_BINFO_2_1.yaml | 2 +- .../certification/Test_TC_CADMIN_1_4.yaml | 3 - .../suites/certification/Test_TC_OCC_3_1.yaml | 2 +- .../suites/certification/Test_TC_PS_2_1.yaml | 8 +- .../certification/Test_TC_ULABEL_2_2.yaml | 4 +- .../tests/suites/include/ConstraintsChecker.h | 40 +++++- .../common/ClusterTestGeneration.js | 21 +++- .../chip-tool/zap-generated/test/Commands.h | 118 ++++++++++-------- .../zap-generated/test/Commands.h | 32 +++-- 15 files changed, 227 insertions(+), 115 deletions(-) diff --git a/examples/chip-tool/templates/tests/helper.js b/examples/chip-tool/templates/tests/helper.js index a2f7cdb708b469..d50912ca9f5703 100644 --- a/examples/chip-tool/templates/tests/helper.js +++ b/examples/chip-tool/templates/tests/helper.js @@ -33,13 +33,15 @@ function asPropertyValue(options) { let rootObject = 'value'; + let context = options.hash.context || this; + // The decodable type for commands is a struct by default, even if the // command just returns a single value. - if (this.parent.isCommand) { - rootObject += '.' + asLowerCamelCase(this.name); + if (context.parent.isCommand) { + rootObject += '.' + asLowerCamelCase(context.name); } - if (this.isOptional && !options.hash.dontUnwrapValue) { + if (context.isOptional && !options.hash.dontUnwrapValue) { rootObject += '.Value()'; } diff --git a/examples/chip-tool/templates/tests/partials/checks/maybeCheckExpectedConstraints.zapt b/examples/chip-tool/templates/tests/partials/checks/maybeCheckExpectedConstraints.zapt index 8250c27ba03230..da6a6b6a230b14 100644 --- a/examples/chip-tool/templates/tests/partials/checks/maybeCheckExpectedConstraints.zapt +++ b/examples/chip-tool/templates/tests/partials/checks/maybeCheckExpectedConstraints.zapt @@ -6,59 +6,65 @@ {{/if}} {{/if}} - {{~#if (hasProperty expectedConstraints "type")}}VerifyOrReturn(CheckConstraintType("{{asPropertyValue}}", "", "{{expectedConstraints.type}}"));{{/if}} + {{~#chip_tests_iterate_constraints expectedConstraints}} + {{~#if (isStrEqual constraint "hasValue")}} + {{~! Already handled above~}} + {{~else if (isStrEqual constraint "type")}}VerifyOrReturn(CheckConstraintType("{{asPropertyValue context=..}}", "", "{{value}}")); - {{~#if (hasProperty expectedConstraints "format")}}VerifyOrReturn(CheckConstraintFormat("{{asPropertyValue}}", "", "{{expectedConstraints.format}}"));{{/if}} + {{~else if (isStrEqual constraint "format")}}VerifyOrReturn(CheckConstraintFormat("{{asPropertyValue context=..}}", "", "{{value}}")); - {{~#if (hasProperty expectedConstraints "startsWith")}}VerifyOrReturn(CheckConstraintStartsWith("{{asPropertyValue}}", {{asPropertyValue}}, "{{expectedConstraints.startsWith}}"));{{/if}} + {{~else if (isStrEqual constraint "startsWith")}}VerifyOrReturn(CheckConstraintStartsWith("{{asPropertyValue context=..}}", {{asPropertyValue context=..}}, "{{value}}")); - {{~#if (hasProperty expectedConstraints "endsWith")}}VerifyOrReturn(CheckConstraintEndsWith("{{asPropertyValue}}", {{asPropertyValue}}, "{{expectedConstraints.endsWith}}"));{{/if}} + {{~else if (isStrEqual constraint "endsWith")}}VerifyOrReturn(CheckConstraintEndsWith("{{asPropertyValue context=..}}", {{asPropertyValue context=..}}, "{{value}}")); - {{~#if (hasProperty expectedConstraints "isUpperCase")}}VerifyOrReturn(CheckConstraintIsUpperCase("{{asPropertyValue}}", {{asPropertyValue}}, {{expectedConstraints.isUpperCase}}));{{/if}} + {{~else if (isStrEqual constraint "isUpperCase")}}VerifyOrReturn(CheckConstraintIsUpperCase("{{asPropertyValue context=..}}", {{asPropertyValue context=..}}, {{value}})); - {{~#if (hasProperty expectedConstraints "isLowerCase")}}VerifyOrReturn(CheckConstraintIsLowerCase("{{asPropertyValue}}", {{asPropertyValue}}, {{expectedConstraints.isLowerCase}}));{{/if}} + {{~else if (isStrEqual constraint "isLowerCase")}}VerifyOrReturn(CheckConstraintIsLowerCase("{{asPropertyValue context=..}}", {{asPropertyValue context=..}}, {{value}})); - {{~#if (hasProperty expectedConstraints "isHexString")}}VerifyOrReturn(CheckConstraintIsHexString("{{asPropertyValue}}", {{asPropertyValue}}, {{expectedConstraints.isHexString}}));{{/if}} + {{~else if (isStrEqual constraint "isHexString")}}VerifyOrReturn(CheckConstraintIsHexString("{{asPropertyValue context=..}}", {{asPropertyValue context=..}}, {{value}})); - {{~#if (hasProperty expectedConstraints "minLength")}}VerifyOrReturn(CheckConstraintMinLength("{{asPropertyValue}}", {{asPropertyValue}}.size(), {{expectedConstraints.minLength}}));{{/if}} + {{~else if (isStrEqual constraint "minLength")}}VerifyOrReturn(CheckConstraintMinLength("{{asPropertyValue context=..}}", {{asPropertyValue context=..}}, {{value}})); - {{~#if (hasProperty expectedConstraints "maxLength")}}VerifyOrReturn(CheckConstraintMaxLength("{{asPropertyValue}}", {{asPropertyValue}}.size(), {{expectedConstraints.maxLength}}));{{/if}} + {{~else if (isStrEqual constraint "maxLength")}}VerifyOrReturn(CheckConstraintMaxLength("{{asPropertyValue context=..}}", {{asPropertyValue context=..}}, {{value}})); - {{~#if (hasProperty expectedConstraints "minValue")}}VerifyOrReturn(CheckConstraintMinValue("{{asPropertyValue}}", {{asPropertyValue}}, {{asTypedLiteral expectedConstraints.minValue type}}));{{/if}} + {{~else if (isStrEqual constraint "minValue")}}VerifyOrReturn(CheckConstraintMinValue("{{asPropertyValue context=..}}", {{asPropertyValue context=..}}, {{asTypedLiteral value ../type}})); - {{~#if (hasProperty expectedConstraints "maxValue")}}VerifyOrReturn(CheckConstraintMaxValue("{{asPropertyValue}}", {{asPropertyValue}}, {{asTypedLiteral expectedConstraints.maxValue type}}));{{/if}} + {{~else if (isStrEqual constraint "maxValue")}}VerifyOrReturn(CheckConstraintMaxValue("{{asPropertyValue context=..}}", {{asPropertyValue context=..}}, {{asTypedLiteral value ../type}})); - {{~#if (hasProperty expectedConstraints "contains")}} - {{#chip_tests_iterate_expected_list expectedConstraints.contains}} - VerifyOrReturn(CheckConstraintContains("{{asPropertyValue}}", {{asPropertyValue}}, {{asTypedLiteral value type}})); + {{~else if (isStrEqual constraint "contains")}} + {{#chip_tests_iterate_expected_list value context=..}} + VerifyOrReturn(CheckConstraintContains("{{asPropertyValue context=..}}", {{asPropertyValue}}, {{asTypedLiteral value type}})); {{/chip_tests_iterate_expected_list}} - {{/if}} - {{~#if (hasProperty expectedConstraints "excludes")}} - {{#chip_tests_iterate_expected_list expectedConstraints.excludes}} - VerifyOrReturn(CheckConstraintExcludes("{{asPropertyValue}}", {{asPropertyValue}}, {{asTypedLiteral value type}})); + {{~else if (isStrEqual constraint "excludes")}} + {{#chip_tests_iterate_expected_list value context=..}} + VerifyOrReturn(CheckConstraintExcludes("{{asPropertyValue context=..}}", {{asPropertyValue}}, {{asTypedLiteral value type}})); {{/chip_tests_iterate_expected_list}} - {{/if}} - {{~#if (hasProperty expectedConstraints "hasMasksSet")}} - {{#chip_tests_iterate_expected_list expectedConstraints.hasMasksSet}} - VerifyOrReturn(CheckConstraintHasMasksSet("{{asPropertyValue}}", {{asPropertyValue}}, {{asTypedLiteral value type}})); + {{~else if (isStrEqual constraint "hasMasksSet")}} + {{#chip_tests_iterate_expected_list value context=..}} + VerifyOrReturn(CheckConstraintHasMasksSet("{{asPropertyValue context=..}}", {{asPropertyValue}}, {{asTypedLiteral value type}})); {{/chip_tests_iterate_expected_list}} - {{/if}} - {{~#if (hasProperty expectedConstraints "hasMasksClear")}} - {{#chip_tests_iterate_expected_list expectedConstraints.hasMasksClear}} - VerifyOrReturn(CheckConstraintHasMasksClear("{{asPropertyValue}}", {{asPropertyValue}}, {{asTypedLiteral value type}})); + {{~else if (isStrEqual constraint "hasMasksClear")}} + {{#chip_tests_iterate_expected_list value context=..}} + VerifyOrReturn(CheckConstraintHasMasksClear("{{asPropertyValue context=..}}", {{asPropertyValue}}, {{asTypedLiteral value type}})); {{/chip_tests_iterate_expected_list}} - {{/if}} - {{~#if (hasProperty expectedConstraints "notValue")}} - {{#if (isLiteralNull expectedConstraints.notValue)}} - VerifyOrReturn(CheckValueNonNull("{{asPropertyValue}}", {{asPropertyValue}})); + {{~else if (isStrEqual constraint "notValue")}} + {{#if (isLiteralNull value)}} + VerifyOrReturn(CheckValueNonNull("{{asPropertyValue context=..}}", {{asPropertyValue context=..}})); {{else}} - VerifyOrReturn(CheckConstraintNotValue("{{asPropertyValue}}", {{asPropertyValue}}, {{asTypedLiteral expectedConstraints.notValue type}})); + VerifyOrReturn(CheckConstraintNotValue("{{asPropertyValue context=..}}", {{asPropertyValue context=..}}, {{asTypedLiteral value ../type}})); {{/if}} + + {{~else}} + {{! Ensure there's a line-break before the #error }} + #error "Unknown constraint {{constraint}}"; + {{! Ensure there's a line-break after the #error }} {{/if}} + {{/chip_tests_iterate_constraints}} + {{~#if isOptional}} {{~#unless (hasProperty expectedConstraints "hasValue")}} } diff --git a/examples/darwin-framework-tool/commands/tests/TestCommandBridge.h b/examples/darwin-framework-tool/commands/tests/TestCommandBridge.h index 839457a9726d81..14cd1eef4d4b94 100644 --- a/examples/darwin-framework-tool/commands/tests/TestCommandBridge.h +++ b/examples/darwin-framework-tool/commands/tests/TestCommandBridge.h @@ -372,6 +372,30 @@ class TestCommandBridge : public CHIPCommandBridge, return CheckConstraintNotValue(itemName, currentValue, @(expected)); } + using ConstraintsChecker::CheckConstraintMinLength; + + bool CheckConstraintMinLength(const char * _Nonnull itemName, NSString * _Nonnull current, uint64_t expected) + { + return CheckConstraintMinLength(itemName, [current length], expected); + } + + bool CheckConstraintMinLength(const char * _Nonnull itemName, NSArray * _Nonnull current, uint64_t expected) + { + return CheckConstraintMinLength(itemName, [current count], expected); + } + + using ConstraintsChecker::CheckConstraintMaxLength; + + bool CheckConstraintMaxLength(const char * _Nonnull itemName, NSString * _Nonnull current, uint64_t expected) + { + return CheckConstraintMaxLength(itemName, [current length], expected); + } + + bool CheckConstraintMaxLength(const char * _Nonnull itemName, NSArray * _Nonnull current, uint64_t expected) + { + return CheckConstraintMaxLength(itemName, [current count], expected); + } + using ConstraintsChecker::CheckConstraintMinValue; // Used when the minValue is a saved variable, since ConstraintsChecker does diff --git a/examples/darwin-framework-tool/templates/tests/partials/checks/maybeCheckExpectedConstraints.zapt b/examples/darwin-framework-tool/templates/tests/partials/checks/maybeCheckExpectedConstraints.zapt index 29a0930f90772b..073efc9cab618e 100644 --- a/examples/darwin-framework-tool/templates/tests/partials/checks/maybeCheckExpectedConstraints.zapt +++ b/examples/darwin-framework-tool/templates/tests/partials/checks/maybeCheckExpectedConstraints.zapt @@ -22,9 +22,9 @@ {{~#if (hasProperty expectedConstraints "isHexString")}}VerifyOrReturn(CheckConstraintIsHexString("{{>item}}", {{>actualValue}}, {{expectedConstraints.isHexString}}));{{/if}} - {{~#if (hasProperty expectedConstraints "minLength")}}VerifyOrReturn(CheckConstraintMinLength("{{>item}}", [{{>actualValue}} length], {{expectedConstraints.minLength}}));{{/if}} + {{~#if (hasProperty expectedConstraints "minLength")}}VerifyOrReturn(CheckConstraintMinLength("{{>item}}", {{>actualValue}}, {{expectedConstraints.minLength}}));{{/if}} - {{~#if (hasProperty expectedConstraints "maxLength")}}VerifyOrReturn(CheckConstraintMaxLength("{{>item}}", [{{>actualValue}} length], {{expectedConstraints.maxLength}}));{{/if}} + {{~#if (hasProperty expectedConstraints "maxLength")}}VerifyOrReturn(CheckConstraintMaxLength("{{>item}}", {{>actualValue}}, {{expectedConstraints.maxLength}}));{{/if}} {{~#if (hasProperty expectedConstraints "minValue")}} VerifyOrReturn(CheckConstraintMinValue<{{chipType}}>("{{>item}}", [{{>actualValue}} {{asObjectiveCNumberType "" type true}}Value], {{asTypedLiteral expectedConstraints.minValue type}})); diff --git a/src/app/tests/suites/TestModeSelectCluster.yaml b/src/app/tests/suites/TestModeSelectCluster.yaml index b8ec4e07177ebc..68f8317e16580f 100644 --- a/src/app/tests/suites/TestModeSelectCluster.yaml +++ b/src/app/tests/suites/TestModeSelectCluster.yaml @@ -58,9 +58,9 @@ tests: }, ] constraints: - - type: list - - minLength: 3 - - maxLength: 3 + type: list + minLength: 3 + maxLength: 3 - label: "Read CurrentMode" command: "readAttribute" diff --git a/src/app/tests/suites/certification/Test_TC_APBSC_9_1.yaml b/src/app/tests/suites/certification/Test_TC_APBSC_9_1.yaml index fa7f138e3a9283..41fe02b98672e5 100644 --- a/src/app/tests/suites/certification/Test_TC_APBSC_9_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_APBSC_9_1.yaml @@ -44,7 +44,7 @@ tests: response: constraints: type: vendor-id - saveAs: vendorID + saveAs: vendorID - label: "Reads the ApplicationName attribute" PICS: APBSC.S.A0002 diff --git a/src/app/tests/suites/certification/Test_TC_BINFO_2_1.yaml b/src/app/tests/suites/certification/Test_TC_BINFO_2_1.yaml index e9fda6db810f28..3f1ffcd648b803 100644 --- a/src/app/tests/suites/certification/Test_TC_BINFO_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_BINFO_2_1.yaml @@ -317,7 +317,7 @@ tests: saveAs: SoftwareVersionStringValue constraints: minLength: 1 - maxLenght: 64 + maxLength: 64 - label: "TH writes SoftwareVersionString from the DUT." PICS: BINFO.S.A000a diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_4.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_4.yaml index 129fb21fbb1c07..6e164ea50b9bd4 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_4.yaml @@ -68,7 +68,6 @@ tests: constraints: type: string maxLength: 32 - value: "chiptest" - label: "Commission from beta" identity: "beta" @@ -132,7 +131,6 @@ tests: constraints: type: string maxLength: 32 - value: "chiptest" - label: "TH_CR1 writes the Basic Information Clusters NodeLabel mandatory @@ -157,7 +155,6 @@ tests: constraints: type: string maxLength: 32 - value: "chiptest" - label: "TH_CR2 opens a commissioning window on DUT_CE" cluster: "AdministratorCommissioning" diff --git a/src/app/tests/suites/certification/Test_TC_OCC_3_1.yaml b/src/app/tests/suites/certification/Test_TC_OCC_3_1.yaml index 648e8d4a7f2422..1f4c0c701c8100 100644 --- a/src/app/tests/suites/certification/Test_TC_OCC_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_OCC_3_1.yaml @@ -53,4 +53,4 @@ tests: attribute: "occupancy" response: constraints: - notvalue: OccupancyValue + notValue: OccupancyValue diff --git a/src/app/tests/suites/certification/Test_TC_PS_2_1.yaml b/src/app/tests/suites/certification/Test_TC_PS_2_1.yaml index ba8ecaa297abb9..e76b9e49f9a167 100644 --- a/src/app/tests/suites/certification/Test_TC_PS_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_PS_2_1.yaml @@ -138,7 +138,7 @@ tests: response: constraints: type: list - maxlength: 8 + maxLength: 8 - label: "Test Harness Client reads BatVoltage from Server DUT" PICS: PICS_SKIP_SAMPLE_APP && PS.S.A000b @@ -157,8 +157,8 @@ tests: response: constraints: type: uint8 - minvalue: 0 - maxvalue: 200 + minValue: 0 + maxValue: 200 - label: "Test Harness Client reads BatTimeRemaining from Server DUT" PICS: PICS_SKIP_SAMPLE_APP && PS.S.A000d @@ -213,7 +213,7 @@ tests: response: constraints: type: list - maxlength: 8 + maxLength: 8 - label: "Test Harness Client reads BatReplacementDescription from Server DUT" diff --git a/src/app/tests/suites/certification/Test_TC_ULABEL_2_2.yaml b/src/app/tests/suites/certification/Test_TC_ULABEL_2_2.yaml index b7a4a1502cccd6..9de3fe935077da 100644 --- a/src/app/tests/suites/certification/Test_TC_ULABEL_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_ULABEL_2_2.yaml @@ -54,5 +54,5 @@ tests: { label: "roomType", value: "bedroom" }, ] constraints: - - type: list - - minLength: 4 + type: list + minLength: 4 diff --git a/src/app/tests/suites/include/ConstraintsChecker.h b/src/app/tests/suites/include/ConstraintsChecker.h index f988b057ecdfa4..3eff23d80ac761 100644 --- a/src/app/tests/suites/include/ConstraintsChecker.h +++ b/src/app/tests/suites/include/ConstraintsChecker.h @@ -59,13 +59,51 @@ class ConstraintsChecker { if (current > expected) { - Exit(std::string(itemName) + " length > minLength: " + std::to_string(current) + " > " + std::to_string(expected)); + Exit(std::string(itemName) + " length > maxLength: " + std::to_string(current) + " > " + std::to_string(expected)); return false; } return true; } + template + bool CheckConstraintMinLength(const char * itemName, const chip::Span & current, uint64_t expected) + { + return CheckConstraintMinLength(itemName, current.size(), expected); + } + + template + bool CheckConstraintMaxLength(const char * itemName, const chip::Span & current, uint64_t expected) + { + return CheckConstraintMaxLength(itemName, current.size(), expected); + } + + template + bool CheckConstraintMinLength(const char * itemName, const chip::app::DataModel::DecodableList & current, uint64_t expected) + { + size_t size; + CHIP_ERROR err = current.ComputeSize(&size); + if (err != CHIP_NO_ERROR) + { + Exit(std::string(itemName) + " length cannot be extracted: " + err.AsString()); + return false; + } + return CheckConstraintMinLength(itemName, size, expected); + } + + template + bool CheckConstraintMaxLength(const char * itemName, const chip::app::DataModel::DecodableList & current, uint64_t expected) + { + size_t size; + CHIP_ERROR err = current.ComputeSize(&size); + if (err != CHIP_NO_ERROR) + { + Exit(std::string(itemName) + " length cannot be extracted: " + err.AsString()); + return false; + } + return CheckConstraintMaxLength(itemName, size, expected); + } + bool CheckConstraintStartsWith(const char * itemName, const chip::CharSpan current, const char * expected) { std::string value(current.data(), current.size()); diff --git a/src/app/zap-templates/common/ClusterTestGeneration.js b/src/app/zap-templates/common/ClusterTestGeneration.js index 354001d65a2a10..6a3afd703992bc 100644 --- a/src/app/zap-templates/common/ClusterTestGeneration.js +++ b/src/app/zap-templates/common/ClusterTestGeneration.js @@ -1000,15 +1000,31 @@ async function chip_tests_only_cluster_response_parameters(options) function chip_tests_iterate_expected_list(values, options) { - values = values.map(value => { + let context = options.hash.context || this; + values = values.map(value => { return { - global: this.global, parent: this.parent, name: this.name, type: this.type, isArray: false, isNullable: false, value: value, + global: context.global, parent: context.parent, name: context.name, type: context.type, isArray: false, isNullable: false, + value: value, } }); return asBlocks.call(this, Promise.resolve(values), options); } +function chip_tests_iterate_constraints(constraints, options) +{ + let values = []; + for (let key of Object.keys(constraints)) { + // Skip "global", because that's not an actual constraint. + if (key == "global") { + continue; + } + values.push({ global : this.global, constraint : key, value : constraints[key] }) + } + + return asBlocks.call(this, Promise.resolve(values), options) +} + // // Module exports // @@ -1040,3 +1056,4 @@ exports.isHexString = isHexString; exports.octetStringLengthFromHexString = octetStringLengthFromHexString; exports.octetStringFromHexString = octetStringFromHexString; exports.chip_tests_iterate_expected_list = chip_tests_iterate_expected_list; +exports.chip_tests_iterate_constraints = chip_tests_iterate_constraints; diff --git a/zzz_generated/chip-tool/zap-generated/test/Commands.h b/zzz_generated/chip-tool/zap-generated/test/Commands.h index ce57b4dc6da4bf..c6e69f87e5b770 100644 --- a/zzz_generated/chip-tool/zap-generated/test/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/test/Commands.h @@ -2695,7 +2695,7 @@ class Test_TC_CC_2_1Suite : public TestCommand chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 254)); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 254)); } break; case 8: @@ -9991,7 +9991,7 @@ class Test_TC_BINFO_2_1Suite : public TestCommand chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 32)); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 32)); if (VendorNameValueBuffer != nullptr) { chip::Platform::MemoryFree(VendorNameValueBuffer); @@ -10040,7 +10040,7 @@ class Test_TC_BINFO_2_1Suite : public TestCommand chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 32)); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 32)); if (ProductNameValueBuffer != nullptr) { chip::Platform::MemoryFree(ProductNameValueBuffer); @@ -10089,7 +10089,7 @@ class Test_TC_BINFO_2_1Suite : public TestCommand chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 32)); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 32)); if (NodeLabelValueBuffer != nullptr) { chip::Platform::MemoryFree(NodeLabelValueBuffer); @@ -10117,7 +10117,7 @@ class Test_TC_BINFO_2_1Suite : public TestCommand VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckValueAsString("location", value, CountryCode)); VerifyOrReturn(CheckConstraintType("value", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 16)); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 16)); } break; case 21: @@ -10159,8 +10159,8 @@ class Test_TC_BINFO_2_1Suite : public TestCommand chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "string")); - VerifyOrReturn(CheckConstraintMinLength("value", value.size(), 1)); - VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 64)); + VerifyOrReturn(CheckConstraintMinLength("value", value, 1)); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 64)); if (HardwareVersionStringValueBuffer != nullptr) { chip::Platform::MemoryFree(HardwareVersionStringValueBuffer); @@ -10211,7 +10211,8 @@ class Test_TC_BINFO_2_1Suite : public TestCommand { chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMinLength("value", value.size(), 1)); + VerifyOrReturn(CheckConstraintMinLength("value", value, 1)); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 64)); if (SoftwareVersionStringValueBuffer != nullptr) { chip::Platform::MemoryFree(SoftwareVersionStringValueBuffer); @@ -10238,8 +10239,8 @@ class Test_TC_BINFO_2_1Suite : public TestCommand chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "string")); - VerifyOrReturn(CheckConstraintMinLength("value", value.size(), 8)); - VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 16)); + VerifyOrReturn(CheckConstraintMinLength("value", value, 8)); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 16)); if (ManufacturingDateValueBuffer != nullptr) { chip::Platform::MemoryFree(ManufacturingDateValueBuffer); @@ -10270,7 +10271,7 @@ class Test_TC_BINFO_2_1Suite : public TestCommand chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 32)); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 32)); if (PartNumberValueBuffer != nullptr) { chip::Platform::MemoryFree(PartNumberValueBuffer); @@ -10297,7 +10298,7 @@ class Test_TC_BINFO_2_1Suite : public TestCommand chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 256)); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 256)); if (ProductURLValueBuffer != nullptr) { chip::Platform::MemoryFree(ProductURLValueBuffer); @@ -10328,7 +10329,7 @@ class Test_TC_BINFO_2_1Suite : public TestCommand chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 64)); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 64)); if (ProductLabelValueBuffer != nullptr) { chip::Platform::MemoryFree(ProductLabelValueBuffer); @@ -10359,7 +10360,7 @@ class Test_TC_BINFO_2_1Suite : public TestCommand chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 32)); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 32)); if (SerialNumberValueBuffer != nullptr) { chip::Platform::MemoryFree(SerialNumberValueBuffer); @@ -10418,7 +10419,7 @@ class Test_TC_BINFO_2_1Suite : public TestCommand chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 32)); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 32)); if (UniqueIDValueBuffer != nullptr) { chip::Platform::MemoryFree(UniqueIDValueBuffer); @@ -21923,6 +21924,8 @@ class Test_TC_APBSC_9_1Suite : public TestCommand chip::Optional mEndpoint; chip::Optional mTimeout; + uint16_t vendorID; + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } // @@ -21945,7 +21948,7 @@ class Test_TC_APBSC_9_1Suite : public TestCommand chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 32)); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 32)); } break; case 2: @@ -21954,6 +21957,7 @@ class Test_TC_APBSC_9_1Suite : public TestCommand uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "vendor-id")); + vendorID = value; } break; case 3: @@ -21962,7 +21966,7 @@ class Test_TC_APBSC_9_1Suite : public TestCommand chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 256)); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 256)); } break; case 4: @@ -21998,7 +22002,7 @@ class Test_TC_APBSC_9_1Suite : public TestCommand chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 32)); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 32)); } break; case 8: @@ -24629,6 +24633,7 @@ class Test_TC_PS_2_1Suite : public TestCommand chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 8)); } break; case 12: @@ -24647,6 +24652,8 @@ class Test_TC_PS_2_1Suite : public TestCommand chip::app::DataModel::Nullable value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 200U)); } break; case 14: @@ -24701,6 +24708,7 @@ class Test_TC_PS_2_1Suite : public TestCommand chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 8)); } break; case 20: @@ -24709,7 +24717,7 @@ class Test_TC_PS_2_1Suite : public TestCommand chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 60)); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 60)); } break; case 21: @@ -24728,7 +24736,7 @@ class Test_TC_PS_2_1Suite : public TestCommand chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 20)); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 20)); } break; case 23: @@ -24737,7 +24745,7 @@ class Test_TC_PS_2_1Suite : public TestCommand chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 20)); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 20)); } break; case 24: @@ -27349,10 +27357,10 @@ class Test_TC_SC_4_2Suite : public TestCommand { chip::app::Clusters::DiscoveryCommands::Commands::DiscoveryCommandResponse::DecodableType value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintMinLength("value.instanceName", value.instanceName, 16)); + VerifyOrReturn(CheckConstraintMaxLength("value.instanceName", value.instanceName, 16)); VerifyOrReturn(CheckConstraintIsUpperCase("value.instanceName", value.instanceName, true)); VerifyOrReturn(CheckConstraintIsHexString("value.instanceName", value.instanceName, true)); - VerifyOrReturn(CheckConstraintMinLength("value.instanceName", value.instanceName.size(), 16)); - VerifyOrReturn(CheckConstraintMaxLength("value.instanceName", value.instanceName.size(), 16)); if (deviceInstanceNameBeforeReboot1Buffer != nullptr) { chip::Platform::MemoryFree(deviceInstanceNameBeforeReboot1Buffer); @@ -27368,10 +27376,10 @@ class Test_TC_SC_4_2Suite : public TestCommand { chip::app::Clusters::DiscoveryCommands::Commands::DiscoveryCommandResponse::DecodableType value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintMinLength("value.hostName", value.hostName, 12)); + VerifyOrReturn(CheckConstraintMaxLength("value.hostName", value.hostName, 12)); VerifyOrReturn(CheckConstraintIsUpperCase("value.hostName", value.hostName, true)); VerifyOrReturn(CheckConstraintIsHexString("value.hostName", value.hostName, true)); - VerifyOrReturn(CheckConstraintMinLength("value.hostName", value.hostName.size(), 12)); - VerifyOrReturn(CheckConstraintMaxLength("value.hostName", value.hostName.size(), 12)); } shouldContinue = true; break; @@ -27380,10 +27388,10 @@ class Test_TC_SC_4_2Suite : public TestCommand { chip::app::Clusters::DiscoveryCommands::Commands::DiscoveryCommandResponse::DecodableType value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintMinLength("value.hostName", value.hostName, 16)); + VerifyOrReturn(CheckConstraintMaxLength("value.hostName", value.hostName, 16)); VerifyOrReturn(CheckConstraintIsUpperCase("value.hostName", value.hostName, true)); VerifyOrReturn(CheckConstraintIsHexString("value.hostName", value.hostName, true)); - VerifyOrReturn(CheckConstraintMinLength("value.hostName", value.hostName.size(), 16)); - VerifyOrReturn(CheckConstraintMaxLength("value.hostName", value.hostName.size(), 16)); } shouldContinue = true; break; @@ -27500,7 +27508,7 @@ class Test_TC_SC_4_2Suite : public TestCommand { chip::app::Clusters::DiscoveryCommands::Commands::DiscoveryCommandResponse::DecodableType value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMaxLength("value.deviceName", value.deviceName.size(), 32)); + VerifyOrReturn(CheckConstraintMaxLength("value.deviceName", value.deviceName, 32)); } shouldContinue = true; break; @@ -27527,7 +27535,7 @@ class Test_TC_SC_4_2Suite : public TestCommand { chip::app::Clusters::DiscoveryCommands::Commands::DiscoveryCommandResponse::DecodableType value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMaxLength("value.pairingInstruction", value.pairingInstruction.size(), 128)); + VerifyOrReturn(CheckConstraintMaxLength("value.pairingInstruction", value.pairingInstruction, 128)); } shouldContinue = true; break; @@ -27560,10 +27568,10 @@ class Test_TC_SC_4_2Suite : public TestCommand { chip::app::Clusters::DiscoveryCommands::Commands::DiscoveryCommandResponse::DecodableType value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintMinLength("value.instanceName", value.instanceName, 16)); + VerifyOrReturn(CheckConstraintMaxLength("value.instanceName", value.instanceName, 16)); VerifyOrReturn(CheckConstraintIsUpperCase("value.instanceName", value.instanceName, true)); VerifyOrReturn(CheckConstraintIsHexString("value.instanceName", value.instanceName, true)); - VerifyOrReturn(CheckConstraintMinLength("value.instanceName", value.instanceName.size(), 16)); - VerifyOrReturn(CheckConstraintMaxLength("value.instanceName", value.instanceName.size(), 16)); VerifyOrReturn(CheckConstraintNotValue("value.instanceName", value.instanceName, deviceInstanceNameBeforeReboot1)); } shouldContinue = true; @@ -27573,10 +27581,10 @@ class Test_TC_SC_4_2Suite : public TestCommand { chip::app::Clusters::DiscoveryCommands::Commands::DiscoveryCommandResponse::DecodableType value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintMinLength("value.hostName", value.hostName, 12)); + VerifyOrReturn(CheckConstraintMaxLength("value.hostName", value.hostName, 12)); VerifyOrReturn(CheckConstraintIsUpperCase("value.hostName", value.hostName, true)); VerifyOrReturn(CheckConstraintIsHexString("value.hostName", value.hostName, true)); - VerifyOrReturn(CheckConstraintMinLength("value.hostName", value.hostName.size(), 12)); - VerifyOrReturn(CheckConstraintMaxLength("value.hostName", value.hostName.size(), 12)); } shouldContinue = true; break; @@ -27585,10 +27593,10 @@ class Test_TC_SC_4_2Suite : public TestCommand { chip::app::Clusters::DiscoveryCommands::Commands::DiscoveryCommandResponse::DecodableType value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintMinLength("value.hostName", value.hostName, 16)); + VerifyOrReturn(CheckConstraintMaxLength("value.hostName", value.hostName, 16)); VerifyOrReturn(CheckConstraintIsUpperCase("value.hostName", value.hostName, true)); VerifyOrReturn(CheckConstraintIsHexString("value.hostName", value.hostName, true)); - VerifyOrReturn(CheckConstraintMinLength("value.hostName", value.hostName.size(), 16)); - VerifyOrReturn(CheckConstraintMaxLength("value.hostName", value.hostName.size(), 16)); } shouldContinue = true; break; @@ -27705,7 +27713,7 @@ class Test_TC_SC_4_2Suite : public TestCommand { chip::app::Clusters::DiscoveryCommands::Commands::DiscoveryCommandResponse::DecodableType value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMaxLength("value.deviceName", value.deviceName.size(), 32)); + VerifyOrReturn(CheckConstraintMaxLength("value.deviceName", value.deviceName, 32)); } shouldContinue = true; break; @@ -27732,7 +27740,7 @@ class Test_TC_SC_4_2Suite : public TestCommand { chip::app::Clusters::DiscoveryCommands::Commands::DiscoveryCommandResponse::DecodableType value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMaxLength("value.pairingInstruction", value.pairingInstruction.size(), 128)); + VerifyOrReturn(CheckConstraintMaxLength("value.pairingInstruction", value.pairingInstruction, 128)); } shouldContinue = true; break; @@ -33599,6 +33607,8 @@ class Test_TC_ULABEL_2_2Suite : public TestCommand VerifyOrReturn(CheckValueAsString("labelList[3].value", iter_0.GetValue().value, chip::CharSpan("bedroom", 7))); VerifyOrReturn(CheckNoMoreListItems("labelList", iter_0, 4)); } + VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintMinLength("value", value, 4)); } break; default: @@ -48205,7 +48215,7 @@ class TestConstraintsSuite : public TestCommand { chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMinLength("value", value.size(), 5)); + VerifyOrReturn(CheckConstraintMinLength("value", value, 5)); } break; case 18: @@ -48213,7 +48223,7 @@ class TestConstraintsSuite : public TestCommand { chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 20)); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 20)); } break; case 19: @@ -48240,8 +48250,8 @@ class TestConstraintsSuite : public TestCommand { chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintIsUpperCase("value", value, false)); VerifyOrReturn(CheckConstraintIsLowerCase("value", value, true)); + VerifyOrReturn(CheckConstraintIsUpperCase("value", value, false)); } break; case 23: @@ -48995,10 +49005,10 @@ class TestDiscoverySuite : public TestCommand { chip::app::Clusters::DiscoveryCommands::Commands::DiscoveryCommandResponse::DecodableType value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintMinLength("value.instanceName", value.instanceName, 16)); + VerifyOrReturn(CheckConstraintMaxLength("value.instanceName", value.instanceName, 16)); VerifyOrReturn(CheckConstraintIsUpperCase("value.instanceName", value.instanceName, true)); VerifyOrReturn(CheckConstraintIsHexString("value.instanceName", value.instanceName, true)); - VerifyOrReturn(CheckConstraintMinLength("value.instanceName", value.instanceName.size(), 16)); - VerifyOrReturn(CheckConstraintMaxLength("value.instanceName", value.instanceName.size(), 16)); if (deviceInstanceNameBeforeRebootBuffer != nullptr) { chip::Platform::MemoryFree(deviceInstanceNameBeforeRebootBuffer); @@ -49116,7 +49126,7 @@ class TestDiscoverySuite : public TestCommand { chip::app::Clusters::DiscoveryCommands::Commands::DiscoveryCommandResponse::DecodableType value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMaxLength("value.deviceName", value.deviceName.size(), 32)); + VerifyOrReturn(CheckConstraintMaxLength("value.deviceName", value.deviceName, 32)); } shouldContinue = true; break; @@ -49143,7 +49153,7 @@ class TestDiscoverySuite : public TestCommand { chip::app::Clusters::DiscoveryCommands::Commands::DiscoveryCommandResponse::DecodableType value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMaxLength("value.pairingInstruction", value.pairingInstruction.size(), 128)); + VerifyOrReturn(CheckConstraintMaxLength("value.pairingInstruction", value.pairingInstruction, 128)); } shouldContinue = true; break; @@ -49176,10 +49186,10 @@ class TestDiscoverySuite : public TestCommand { chip::app::Clusters::DiscoveryCommands::Commands::DiscoveryCommandResponse::DecodableType value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintMinLength("value.instanceName", value.instanceName, 16)); + VerifyOrReturn(CheckConstraintMaxLength("value.instanceName", value.instanceName, 16)); VerifyOrReturn(CheckConstraintIsUpperCase("value.instanceName", value.instanceName, true)); VerifyOrReturn(CheckConstraintIsHexString("value.instanceName", value.instanceName, true)); - VerifyOrReturn(CheckConstraintMinLength("value.instanceName", value.instanceName.size(), 16)); - VerifyOrReturn(CheckConstraintMaxLength("value.instanceName", value.instanceName.size(), 16)); VerifyOrReturn(CheckConstraintNotValue("value.instanceName", value.instanceName, deviceInstanceNameBeforeReboot)); } shouldContinue = true; @@ -52687,6 +52697,9 @@ class TestModeSelectClusterSuite : public TestCommand } VerifyOrReturn(CheckNoMoreListItems("supportedModes", iter_0, 3)); } + VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintMinLength("value", value, 3)); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 3)); } break; case 4: @@ -75891,7 +75904,7 @@ class Test_TC_CADMIN_1_3Suite : public TestCommand VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckValueAsString("nodeLabel", value, chip::CharSpan("chiptest", 8))); VerifyOrReturn(CheckConstraintType("value", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 32)); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 32)); } break; case 4: @@ -75946,7 +75959,7 @@ class Test_TC_CADMIN_1_3Suite : public TestCommand VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckValueAsString("nodeLabel", value, chip::CharSpan("chiptest1", 9))); VerifyOrReturn(CheckConstraintType("value", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 32)); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 32)); } break; case 10: @@ -75959,7 +75972,7 @@ class Test_TC_CADMIN_1_3Suite : public TestCommand VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckValueAsString("nodeLabel", value, chip::CharSpan("chiptest2", 9))); VerifyOrReturn(CheckConstraintType("value", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 32)); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 32)); } break; case 12: @@ -76220,7 +76233,7 @@ class Test_TC_CADMIN_1_4Suite : public TestCommand chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 32)); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 32)); } break; case 4: @@ -76272,7 +76285,7 @@ class Test_TC_CADMIN_1_4Suite : public TestCommand chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 32)); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 32)); } break; case 10: @@ -76284,7 +76297,7 @@ class Test_TC_CADMIN_1_4Suite : public TestCommand chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 32)); + VerifyOrReturn(CheckConstraintMaxLength("value", value, 32)); } break; case 12: @@ -81993,6 +82006,7 @@ class Test_TC_OCC_3_1Suite : public TestCommand { uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintNotValue("value", value, OccupancyValue)); } break; default: 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 de697962af5a18..03f270678c92eb 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h @@ -4125,7 +4125,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("compensationText", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("compensationText", [value length], 254)); + VerifyOrReturn(CheckConstraintMaxLength("compensationText", value, 254)); NextTest(); }]; @@ -35663,12 +35663,13 @@ class Test_TC_APBSC_9_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("vendorName", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("vendorName", [value length], 32)); + VerifyOrReturn(CheckConstraintMaxLength("vendorName", value, 32)); NextTest(); }]; return CHIP_NO_ERROR; } + NSNumber * _Nonnull vendorID; CHIP_ERROR TestReadsTheVendorIDAttribute_2() { @@ -35684,6 +35685,10 @@ class Test_TC_APBSC_9_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("vendorID", "", "vendor-id")); + { + vendorID = value; + } + NextTest(); }]; @@ -35704,7 +35709,7 @@ class Test_TC_APBSC_9_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("applicationName", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("applicationName", [value length], 256)); + VerifyOrReturn(CheckConstraintMaxLength("applicationName", value, 256)); NextTest(); }]; @@ -35791,7 +35796,7 @@ class Test_TC_APBSC_9_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("applicationVersion", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("applicationVersion", [value length], 32)); + VerifyOrReturn(CheckConstraintMaxLength("applicationVersion", value, 32)); NextTest(); }]; @@ -40706,6 +40711,7 @@ class Test_TC_PS_2_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("activeWiredFaults", "", "list")); + VerifyOrReturn(CheckConstraintMaxLength("activeWiredFaults", value, 8)); NextTest(); }]; @@ -40754,6 +40760,8 @@ class Test_TC_PS_2_1 : public TestCommandBridge { if (value != nil) { VerifyOrReturn(CheckConstraintType("batPercentRemaining", "", "uint8")); + VerifyOrReturn(CheckConstraintMinValue("batPercentRemaining", [value unsignedCharValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("batPercentRemaining", [value unsignedCharValue], 200U)); } NextTest(); @@ -40888,6 +40896,7 @@ class Test_TC_PS_2_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("activeBatFaults", "", "list")); + VerifyOrReturn(CheckConstraintMaxLength("activeBatFaults", value, 8)); NextTest(); }]; @@ -40909,7 +40918,7 @@ class Test_TC_PS_2_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("batReplacementDescription", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("batReplacementDescription", [value length], 60)); + VerifyOrReturn(CheckConstraintMaxLength("batReplacementDescription", value, 60)); NextTest(); }]; @@ -40953,7 +40962,7 @@ class Test_TC_PS_2_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("batANSIDesignation", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("batANSIDesignation", [value length], 20)); + VerifyOrReturn(CheckConstraintMaxLength("batANSIDesignation", value, 20)); NextTest(); }]; @@ -40974,7 +40983,7 @@ class Test_TC_PS_2_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("batIECDesignation", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("batIECDesignation", [value length], 20)); + VerifyOrReturn(CheckConstraintMaxLength("batIECDesignation", value, 20)); NextTest(); }]; @@ -54169,6 +54178,8 @@ class Test_TC_ULABEL_2_2 : public TestCommandBridge { VerifyOrReturn(CheckValueAsString("value", ((MTRUserLabelClusterLabelStruct *) actualValue[3]).value, @"bedroom")); } + VerifyOrReturn(CheckConstraintType("labelList", "", "list")); + VerifyOrReturn(CheckConstraintMinLength("labelList", value, 4)); NextTest(); }]; @@ -83520,7 +83531,7 @@ class TestConstraints : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintMinLength("charString", [value length], 5)); + VerifyOrReturn(CheckConstraintMinLength("charString", value, 5)); NextTest(); }]; @@ -83540,7 +83551,7 @@ class TestConstraints : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintMaxLength("charString", [value length], 20)); + VerifyOrReturn(CheckConstraintMaxLength("charString", value, 20)); NextTest(); }]; @@ -90529,6 +90540,9 @@ class TestModeSelectCluster : public TestCommandBridge { [((MTRModeSelectClusterModeOptionStruct *) actualValue[2]).semanticTags count], static_cast(1))); } + VerifyOrReturn(CheckConstraintType("supportedModes", "", "list")); + VerifyOrReturn(CheckConstraintMinLength("supportedModes", value, 3)); + VerifyOrReturn(CheckConstraintMaxLength("supportedModes", value, 3)); NextTest(); }]; From 8145ce3f53aa26108cb7cae73119b9cc1bff73e6 Mon Sep 17 00:00:00 2001 From: Vikram Bhat Date: Thu, 21 Jul 2022 03:20:31 +0530 Subject: [PATCH 06/18] Test Script Updates - July 21st (#21014) * 1. Test script issues fixed - 288,259,261,262,267,269,270,282 2. PICS updates as per latest test plan * 1. Fixed issues 203, 201, 263, 281, 279, 274, 272, 270, 269, 265, 262 * 1.Issues fixed 229, 275, 231 * Adding auto generated files * Restyled by whitespace * Restyled by prettier-yaml * PICS file format error fixed * 1. Increasing delay after move to saturation command * Updating auto generated files * 1.Increasing delay after move commands * 1.Updating auto generated files Co-authored-by: Restyled.io --- src/app/tests/suites/certification/PICS.yaml | 75 +- .../suites/certification/Test_TC_ACT_3_1.yaml | 107 +- .../Test_TC_APPLAUNCHER_1_3.yaml | 2 +- .../suites/certification/Test_TC_BR_1.yaml | 139 +- .../certification/Test_TC_CADMIN_1_1.yaml | 22 +- .../certification/Test_TC_CADMIN_1_10.yaml | 40 +- .../certification/Test_TC_CADMIN_1_11.yaml | 452 +- .../certification/Test_TC_CADMIN_1_12.yaml | 386 +- .../certification/Test_TC_CADMIN_1_13.yaml | 18 +- .../certification/Test_TC_CADMIN_1_14.yaml | 322 +- .../certification/Test_TC_CADMIN_1_15.yaml | 29 +- .../certification/Test_TC_CADMIN_1_16.yaml | 511 +- .../certification/Test_TC_CADMIN_1_17.yaml | 149 +- .../certification/Test_TC_CADMIN_1_18.yaml | 6 +- .../certification/Test_TC_CADMIN_1_19.yaml | 6 +- .../certification/Test_TC_CADMIN_1_2.yaml | 18 +- .../certification/Test_TC_CADMIN_1_20.yaml | 6 +- .../certification/Test_TC_CADMIN_1_21.yaml | 4 +- .../certification/Test_TC_CADMIN_1_22.yaml | 6 +- .../certification/Test_TC_CADMIN_1_23.yaml | 4 +- .../certification/Test_TC_CADMIN_1_24.yaml | 4 +- .../certification/Test_TC_CADMIN_1_3.yaml | 9 +- .../certification/Test_TC_CADMIN_1_4.yaml | 9 +- .../certification/Test_TC_CADMIN_1_5.yaml | 29 +- .../certification/Test_TC_CADMIN_1_6.yaml | 27 +- .../certification/Test_TC_CADMIN_1_7.yaml | 33 +- .../certification/Test_TC_CADMIN_1_8.yaml | 17 +- .../certification/Test_TC_CADMIN_1_9.yaml | 25 +- .../suites/certification/Test_TC_CC_1_1.yaml | 75 +- .../suites/certification/Test_TC_CC_2_1.yaml | 580 +- .../suites/certification/Test_TC_CC_2_2.yaml | 1329 ++- .../suites/certification/Test_TC_CC_3_1.yaml | 105 +- .../suites/certification/Test_TC_CC_3_2.yaml | 122 +- .../suites/certification/Test_TC_CC_3_3.yaml | 12 +- .../suites/certification/Test_TC_CC_3_4.yaml | 374 +- .../suites/certification/Test_TC_CC_4_1.yaml | 29 +- .../suites/certification/Test_TC_CC_4_2.yaml | 289 +- .../suites/certification/Test_TC_CC_4_3.yaml | 28 +- .../suites/certification/Test_TC_CC_4_4.yaml | 27 +- .../suites/certification/Test_TC_CC_4_5.yaml | 488 +- .../suites/certification/Test_TC_CC_5_1.yaml | 32 +- .../suites/certification/Test_TC_CC_5_2.yaml | 44 +- .../suites/certification/Test_TC_CC_5_3.yaml | 30 +- .../suites/certification/Test_TC_CC_5_4.yaml | 437 +- .../suites/certification/Test_TC_CC_6_1.yaml | 42 +- .../suites/certification/Test_TC_CC_6_2.yaml | 200 +- .../suites/certification/Test_TC_CC_6_3.yaml | 96 +- .../suites/certification/Test_TC_CC_6_4.yaml | 411 +- .../suites/certification/Test_TC_CC_7_1.yaml | 153 +- .../suites/certification/Test_TC_CC_7_2.yaml | 94 +- .../suites/certification/Test_TC_CC_7_3.yaml | 24 +- .../suites/certification/Test_TC_CC_7_4.yaml | 15 +- .../suites/certification/Test_TC_CC_7_5.yaml | 416 +- .../suites/certification/Test_TC_CC_8_1.yaml | 78 +- .../suites/certification/Test_TC_CC_9_1.yaml | 40 +- .../suites/certification/Test_TC_CC_9_2.yaml | 48 +- .../suites/certification/Test_TC_CC_9_3.yaml | 40 +- .../suites/certification/Test_TC_CC_9_4.yaml | 599 +- .../certification/Test_TC_CHANNEL_1_6.yaml | 30 +- .../certification/Test_TC_CHANNEL_5_2.yaml | 2 +- .../certification/Test_TC_CHANNEL_5_3.yaml | 2 +- .../Test_TC_CONTENTLAUNCHER_1_11.yaml | 3 +- .../suites/certification/Test_TC_DA_1_3.yaml | 26 + .../suites/certification/Test_TC_DD_1_10.yaml | 12 +- .../suites/certification/Test_TC_DD_1_11.yaml | 85 +- .../suites/certification/Test_TC_DD_1_12.yaml | 58 +- .../suites/certification/Test_TC_DD_1_13.yaml | 6 +- .../suites/certification/Test_TC_DD_1_14.yaml | 11 +- .../suites/certification/Test_TC_DD_1_15.yaml | 14 +- .../suites/certification/Test_TC_DD_1_8.yaml | 43 +- .../suites/certification/Test_TC_DD_1_9.yaml | 61 +- .../suites/certification/Test_TC_DD_3_1.yaml | 8 +- .../suites/certification/Test_TC_DD_3_10.yaml | 39 +- .../suites/certification/Test_TC_DD_3_11.yaml | 97 +- .../suites/certification/Test_TC_DD_3_12.yaml | 177 +- .../suites/certification/Test_TC_DD_3_13.yaml | 170 +- .../suites/certification/Test_TC_DD_3_14.yaml | 176 +- .../suites/certification/Test_TC_DD_3_15.yaml | 20 +- .../suites/certification/Test_TC_DD_3_16.yaml | 77 +- .../suites/certification/Test_TC_DD_3_17.yaml | 134 +- .../suites/certification/Test_TC_DD_3_18.yaml | 120 +- .../suites/certification/Test_TC_DD_3_19.yaml | 9 +- .../suites/certification/Test_TC_DD_3_2.yaml | 6 +- .../suites/certification/Test_TC_DD_3_20.yaml | 10 +- .../suites/certification/Test_TC_DD_3_21.yaml | 105 + .../suites/certification/Test_TC_DD_3_3.yaml | 23 +- .../suites/certification/Test_TC_DD_3_4.yaml | 18 +- .../suites/certification/Test_TC_DD_3_5.yaml | 329 +- .../suites/certification/Test_TC_DD_3_6.yaml | 12 +- .../suites/certification/Test_TC_DD_3_7.yaml | 371 +- .../suites/certification/Test_TC_DD_3_8.yaml | 22 +- .../suites/certification/Test_TC_DD_3_9.yaml | 18 +- .../certification/Test_TC_DGWIFI_2_3.yaml | 30 +- .../Test_TC_KEYPADINPUT_1_2.yaml | 2 +- .../suites/certification/Test_TC_LVL_1_1.yaml | 2 +- .../suites/certification/Test_TC_LVL_2_1.yaml | 45 +- .../suites/certification/Test_TC_LVL_3_1.yaml | 22 - .../suites/certification/Test_TC_LVL_4_1.yaml | 23 - .../suites/certification/Test_TC_LVL_5_1.yaml | 58 +- .../suites/certification/Test_TC_LVL_6_1.yaml | 22 - .../certification/Test_TC_MEDIAINPUT_1_4.yaml | 2 +- .../Test_TC_MEDIAPLAYBACK_1_7.yaml | 73 +- .../Test_TC_MEDIAPLAYBACK_6_1.yaml | 6 +- .../Test_TC_MEDIAPLAYBACK_6_2.yaml | 10 +- .../Test_TC_MEDIAPLAYBACK_6_3.yaml | 4 +- .../Test_TC_MEDIAPLAYBACK_6_4.yaml | 14 +- .../suites/certification/Test_TC_OO_2_3.yaml | 61 +- .../certification/Test_TC_OPCREDS_3_3.yaml | 1 + .../suites/certification/Test_TC_PS_1_1.yaml | 8 +- .../certification/Test_TC_TSTAT_1_1.yaml | 8 +- .../tests/suites/certification/ci-pics-values | 46 +- src/app/tests/suites/tests.js | 5 +- .../chip-tool/zap-generated/test/Commands.h | 7176 ++++++++------- .../zap-generated/test/Commands.h | 7742 ++++++----------- 114 files changed, 13043 insertions(+), 13323 deletions(-) create mode 100644 src/app/tests/suites/certification/Test_TC_DD_3_21.yaml diff --git a/src/app/tests/suites/certification/PICS.yaml b/src/app/tests/suites/certification/PICS.yaml index fa1b3bee48f8b8..3259ce2f988cc3 100644 --- a/src/app/tests/suites/certification/PICS.yaml +++ b/src/app/tests/suites/certification/PICS.yaml @@ -1766,13 +1766,13 @@ PICS: id: CADMIN.AudioInterface #server - label: "Does the Device support Enhanced Commissioning Method (ECM)?" - id: CADMIN.S.C0000 + id: CADMIN.S.C00.Rsp - label: "Does the Device support Basic Commissioning Method (BCM)?" - id: CADMIN.S.C0001 + id: CADMIN.S.C01.Rsp - label: "Does the Device support revoking commissioning window?" - id: CADMIN.S.C0002 + id: CADMIN.S.C02.Rsp - label: "Does the Device implement receiving the RemoveFabric command?" id: OPCREDS.S.C0a.Rsp @@ -1788,13 +1788,13 @@ PICS: #client - label: "Does the Device support Enhanced Commissioning Method (ECM)?" - id: CADMIN.C.C0000 + id: CADMIN.C.C00.Tx - label: "Does the Device support Basic Commissioning Method (BCM)?" - id: CADMIN.C.C0001 + id: CADMIN.C.C01.Tx - label: "Does the Device support revoking commissioning window?" - id: CADMIN.C.C0002 + id: CADMIN.C.C02.Tx - label: "Does the Device implement receiving the RemoveFabric command?" id: OPCREDS.C.C0a.Tx @@ -1808,6 +1808,12 @@ PICS: - label: "Does the Device support WindowStatus attribute?" id: CADMIN.C.A0000 + - label: "Does the Device implement the Multi Fabric cluster as a server?" + id: CADMIN.S + + - label: "Does the Device implement the Multi Fabric cluster as a client?" + id: CADMIN.C + #User Label cluster - label: "Does the DUT Server support LabelList attribute?" id: ULABEL.S.A0000 @@ -1890,16 +1896,16 @@ PICS: - label: "Does the DUT support the Channel server cluster ChangeChannel command?" - id: CHANNEL.S.C0000 + id: CHANNEL.S.C00.Rsp - label: "Does the DUT support the Channel server cluster ChangeChannelByNumber command?" - id: CHANNEL.S.C0002 + id: CHANNEL.S.C02.Rsp - label: "Does the DUT support the Channel server cluster SkipChannel command?" - id: CHANNEL.S.C0003 + id: CHANNEL.S.C03.Rsp - label: "Does the DUT support the Media Playback server cluster Advanced Seek @@ -2056,18 +2062,9 @@ PICS: id: CHANNEL.S.A0002 - label: - "Does the DUT support the Channel server cluster ChangeChannel + "Does the DUT support the Channel server cluster ChangeChannelResponse command?" - id: CHANNEL.S.C0000 - - - label: - "Does the DUT support the Channel server cluster ChangeChannelByNumber - command?" - id: CHANNEL.S.C0002 - - - label: - "Does the DUT support the Channel server cluster SkipChannel command?" - id: CHANNEL.S.C0003 + id: CHANNEL.S.C01.Tx - label: "Does the DUT support the Media Playback server cluster Advanced Seek @@ -2129,40 +2126,40 @@ PICS: - label: "Does the DUT support the Media Playback server cluster StartOver command?" - id: MEDIAPLAYBACK.S.C0003 + id: MEDIAPLAYBACK.S.C03.Rsp - label: "Does the DUT support the Media Playback server cluster Previous command?" - id: MEDIAPLAYBACK.S.C0004 + id: MEDIAPLAYBACK.S.C04.Rsp - label: "Does the DUT support the Media Playback server cluster Next command?" - id: MEDIAPLAYBACK.S.C0005 + id: MEDIAPLAYBACK.S.C05.Rsp - label: "Does the DUT support the Media Playback server cluster Rewind command?" - id: MEDIAPLAYBACK.S.C0006 + id: MEDIAPLAYBACK.S.C06.Rsp - label: "Does the DUT support the Media Playback server cluster FastForward command?" - id: MEDIAPLAYBACK.S.C0007 + id: MEDIAPLAYBACK.S.C07.Rsp - label: "Does the DUT support the Media Playback server cluster SkipForward command?" - id: MEDIAPLAYBACK.S.C0008 + id: MEDIAPLAYBACK.S.C08.Rsp - label: "Does the DUT support the Media Playback server cluster SkipBackward command?" - id: MEDIAPLAYBACK.S.C0009 + id: MEDIAPLAYBACK.S.C09.Rsp - label: "Does the DUT support the Media Playback server cluster Seek command?" - id: MEDIAPLAYBACK.S.C000B + id: MEDIAPLAYBACK.S.C0B.Rsp - label: "Does the DUT support the Media Playback client cluster Play command?" @@ -2812,10 +2809,10 @@ PICS: id: MCORE.DD.CONTROLLER - label: "Does the DUT support Discovery Capability over IP Network?" - id: MCORE.DD.DT_IP + id: MCORE.DD.DISCOVERY_IP - label: "Does the DUT support Discovery Capability over SoftAP?" - id: MCORE.DD.DT_SOFTAP + id: MCORE.DD.DISCOVERY_SOFTAP - label: "Does the DUT support Standard Commissioning Flow?" id: MCORE.DD.STANDARD_COMM_FLOW @@ -2857,6 +2854,19 @@ PICS: - label: "Does the device support Wifi or Thread interfaces?" id: MCORE.DD.WIRELESS + - label: + "Does the device support TXT Key 'VP' (Vendor ID / Product ID) in it’s + DNS-SD TXT Records for Commissionable Node Discovery?" + id: MCORE.DD.TXT_KEY_VP + + - label: + "Does the device support TXT Key 'DT' (Device Type) in it’s DNS-SD TXT + Records for Commissionable Node Discovery?" + id: MCORE.DD.TXT_KEY_DT + + - label: "Does the Commissioner support Discovery Capability over BLE?" + id: MCORE.DD.DISCOVERY_BLE + #Ethernet Network Diagnostics Cluster - label: "Does the device implement the ResetCounts command?" id: DGETH.S.C00.Rsp @@ -4338,6 +4348,11 @@ PICS: #Node Operational Credential #Server Attributes + - label: + "Factory Reset DUT (to ensure NOC list is empty at the beginning of + the following steps)" + id: MCORE.FACTORY_RESET + - label: "Does the DUT(server) support the NOC list attribute?" id: OPCREDS.S.A0000 diff --git a/src/app/tests/suites/certification/Test_TC_ACT_3_1.yaml b/src/app/tests/suites/certification/Test_TC_ACT_3_1.yaml index 9aec071cf8518d..8268d4b403c9da 100644 --- a/src/app/tests/suites/certification/Test_TC_ACT_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACT_3_1.yaml @@ -13,7 +13,7 @@ # limitations under the License. # Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default -name: 76.2.3. [TC-ACT-3.1] GLobal attributes with client as DUT +name: 77.2.3. [TC-ACT-3.1] GLobal attributes with client as DUT config: nodeId: 0x12344321 @@ -26,28 +26,58 @@ tests: a manufacturer specific order" verification: | ./chip-tool bridgedactions read action-list 1 1 + + Verify in DUT as client side log + [1657608767.991103][57130:57135] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0025 Attribute 0x0000_0000 DataVersion: 2843363251 + [1657608767.991158][57130:57135] CHIP:TOO: action list: 0 entries + + ./chip-tool bridgedactions read endpoint-list 1 1 + + Verify in DUT as client side log + [1657608786.230461][57139:57144] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0025 Attribute 0x0000_0001 DataVersion: 2843363251 + [1657608786.230485][57139:57144] CHIP:TOO: endpoint list: 2 entries + [1657608786.230504][57139:57144] CHIP:TOO: [1]: { + [1657608786.230514][57139:57144] CHIP:TOO: EndpointListID: 57345 + [1657608786.230519][57139:57144] CHIP:TOO: Name: Room 1 + [1657608786.230525][57139:57144] CHIP:TOO: Type: 1 + [1657608786.230531][57139:57144] CHIP:TOO: Endpoints: 2 entries + [1657608786.230538][57139:57144] CHIP:TOO: [1]: 10 + [1657608786.230544][57139:57144] CHIP:TOO: [2]: 11 + [1657608786.230549][57139:57144] CHIP:TOO: } + [1657608786.230558][57139:57144] CHIP:TOO: [2]: { + [1657608786.230563][57139:57144] CHIP:TOO: EndpointListID: 57346 + [1657608786.230567][57139:57144] CHIP:TOO: Name: Room 2 + [1657608786.230572][57139:57144] CHIP:TOO: Type: 1 + [1657608786.230578][57139:57144] CHIP:TOO: Endpoints: 2 entries + [1657608786.230583][57139:57144] CHIP:TOO: [1]: 12 + [1657608786.230589][57139:57144] CHIP:TOO: [2]: 13 + [1657608786.230594][57139:57144] CHIP:TOO: } disabled: true - label: "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order" verification: | + Optional attibute + Verify in DUT as client side log + ./chip-tool bridgedactions read setup-url 1 1 + Needs an SDK Implementation disabled: true - label: "DUT writes a suitable value to all supported mandatory attributes on the TH one at a time in a manufacturer specific order" verification: | - No writeable attribute + This cluster doesn't have any writable attributes disabled: true - label: "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer specific order" verification: | - No writeable attribute + This cluster doesn't have any writable attributes disabled: true - label: @@ -57,7 +87,33 @@ tests: AttributeList. Commission DUT to TH again" verification: | ./chip-tool bridgedactions read action-list 1 1 + + Verify in DUT as client side log + [1657608767.991103][57130:57135] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0025 Attribute 0x0000_0000 DataVersion: 2843363251 + [1657608767.991158][57130:57135] CHIP:TOO: action list: 0 entries + + ./chip-tool bridgedactions read endpoint-list 1 1 + + Verify in DUT as client side log + [1657608786.230461][57139:57144] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0025 Attribute 0x0000_0001 DataVersion: 2843363251 + [1657608786.230485][57139:57144] CHIP:TOO: endpoint list: 2 entries + [1657608786.230504][57139:57144] CHIP:TOO: [1]: { + [1657608786.230514][57139:57144] CHIP:TOO: EndpointListID: 57345 + [1657608786.230519][57139:57144] CHIP:TOO: Name: Room 1 + [1657608786.230525][57139:57144] CHIP:TOO: Type: 1 + [1657608786.230531][57139:57144] CHIP:TOO: Endpoints: 2 entries + [1657608786.230538][57139:57144] CHIP:TOO: [1]: 10 + [1657608786.230544][57139:57144] CHIP:TOO: [2]: 11 + [1657608786.230549][57139:57144] CHIP:TOO: } + [1657608786.230558][57139:57144] CHIP:TOO: [2]: { + [1657608786.230563][57139:57144] CHIP:TOO: EndpointListID: 57346 + [1657608786.230567][57139:57144] CHIP:TOO: Name: Room 2 + [1657608786.230572][57139:57144] CHIP:TOO: Type: 1 + [1657608786.230578][57139:57144] CHIP:TOO: Endpoints: 2 entries + [1657608786.230583][57139:57144] CHIP:TOO: [1]: 12 + [1657608786.230589][57139:57144] CHIP:TOO: [2]: 13 + [1657608786.230594][57139:57144] CHIP:TOO: } disabled: true - label: @@ -66,34 +122,35 @@ tests: verification: | ./chip-tool bridgedactions read setup-url 1 1 + Verify in DUT as client side log [1656480136859] [49753:5741500] CHIP: [DMG] ReportDataMessage = [1656480136859] [49753:5741500] CHIP: [DMG] { - [1656480136859] [49753:5741500] CHIP: [DMG] AttributeReportIBs = - [1656480136859] [49753:5741500] CHIP: [DMG] [ - [1656480136859] [49753:5741500] CHIP: [DMG] AttributeReportIB = - [1656480136859] [49753:5741500] CHIP: [DMG] { - [1656480136859] [49753:5741500] CHIP: [DMG] AttributeStatusIB = - [1656480136859] [49753:5741500] CHIP: [DMG] { - [1656480136859] [49753:5741500] CHIP: [DMG] AttributePathIB = - [1656480136859] [49753:5741500] CHIP: [DMG] { - [1656480136859] [49753:5741500] CHIP: [DMG] Endpoint = 0x1, - [1656480136859] [49753:5741500] CHIP: [DMG] Cluster = 0x25, - [1656480136859] [49753:5741500] CHIP: [DMG] Attribute = 0x0000_0002, - [1656480136859] [49753:5741500] CHIP: [DMG] } + [1656480136859] [49753:5741500] CHIP: [DMG] AttributeReportIBs = + [1656480136859] [49753:5741500] CHIP: [DMG] [ + [1656480136859] [49753:5741500] CHIP: [DMG] AttributeReportIB = + [1656480136859] [49753:5741500] CHIP: [DMG] { + [1656480136859] [49753:5741500] CHIP: [DMG] AttributeStatusIB = + [1656480136859] [49753:5741500] CHIP: [DMG] { + [1656480136859] [49753:5741500] CHIP: [DMG] AttributePathIB = + [1656480136859] [49753:5741500] CHIP: [DMG] { + [1656480136859] [49753:5741500] CHIP: [DMG] Endpoint = 0x1, + [1656480136859] [49753:5741500] CHIP: [DMG] Cluster = 0x25, + [1656480136859] [49753:5741500] CHIP: [DMG] Attribute = 0x0000_0002, + [1656480136859] [49753:5741500] CHIP: [DMG] } [1656480136859] [49753:5741500] CHIP: [DMG] - [1656480136859] [49753:5741500] CHIP: [DMG] StatusIB = - [1656480136859] [49753:5741500] CHIP: [DMG] { - [1656480136859] [49753:5741500] CHIP: [DMG] status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1656480136859] [49753:5741500] CHIP: [DMG] }, + [1656480136859] [49753:5741500] CHIP: [DMG] StatusIB = + [1656480136859] [49753:5741500] CHIP: [DMG] { + [1656480136859] [49753:5741500] CHIP: [DMG] status = 0x86 (UNSUPPORTED_ATTRIBUTE), + [1656480136859] [49753:5741500] CHIP: [DMG] }, [1656480136859] [49753:5741500] CHIP: [DMG] - [1656480136859] [49753:5741500] CHIP: [DMG] }, + [1656480136859] [49753:5741500] CHIP: [DMG] }, [1656480136859] [49753:5741500] CHIP: [DMG] - [1656480136859] [49753:5741500] CHIP: [DMG] }, + [1656480136859] [49753:5741500] CHIP: [DMG] }, [1656480136859] [49753:5741500] CHIP: [DMG] - [1656480136859] [49753:5741500] CHIP: [DMG] ], + [1656480136859] [49753:5741500] CHIP: [DMG] ], [1656480136859] [49753:5741500] CHIP: [DMG] - [1656480136859] [49753:5741500] CHIP: [DMG] SuppressResponse = true, - [1656480136859] [49753:5741500] CHIP: [DMG] InteractionModelRevision = 1 + [1656480136859] [49753:5741500] CHIP: [DMG] SuppressResponse = true, + [1656480136859] [49753:5741500] CHIP: [DMG] InteractionModelRevision = 1 [1656480136859] [49753:5741500] CHIP: [DMG] } [1656480136859] [49753:5741500] CHIP: [TOO] Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) disabled: true @@ -102,5 +159,5 @@ tests: "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer specific order" verification: | - No writeable attribute + This cluster doesn't have any writable attributes disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_1_3.yaml b/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_1_3.yaml index c1fded43f574ea..6cb7e4f38a6cbb 100644 --- a/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_1_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_1_3.yaml @@ -38,7 +38,7 @@ tests: constraints: type: uint16 - - label: "Read the optional global attribute: FeatureMap" + - label: "Read the global attribute: FeatureMap" PICS: APPLAUNCHER.S.AP command: "readAttribute" attribute: "FeatureMap" diff --git a/src/app/tests/suites/certification/Test_TC_BR_1.yaml b/src/app/tests/suites/certification/Test_TC_BR_1.yaml index 11c5522188def4..ced5f99d29adf8 100644 --- a/src/app/tests/suites/certification/Test_TC_BR_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_BR_1.yaml @@ -25,11 +25,10 @@ tests: "Read attribute DeviceTypeList of the Descriptor cluster on endpoint 0" PICS: MCORE.BRIDGE verification: | - Verify in TH Log - - ./chip-tool descriptor read device-list 1 0 + Verify in TH Log + [1657002174.323780][3885:3890] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 3573910940 [1657002174.323838][3885:3890] CHIP:TOO: device list: 1 entries [1657002174.323919][3885:3890] CHIP:TOO: [1]: { @@ -41,10 +40,9 @@ tests: - label: "Read attribute PartsList of the Descriptor cluster on endpoint 0" PICS: MCORE.BRIDGE verification: | - Verify in TH Log - ./chip-tool descriptor read parts-list 1 0 + Verify in TH Log [1657002201.045720][3893:3899] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0003 DataVersion: 3573910940 [1657002201.045841][3893:3899] CHIP:TOO: parts list: 12 entries @@ -67,19 +65,22 @@ tests: DeviceTypeList of the Descriptor cluster on that endpoint" PICS: MCORE.BRIDGE verification: | + ./chip-tool descriptor read device-list 1 1 + Verify in TH Log - ./chip-tool descriptor read device-list 1 1 [1657002313.871608][3977:3982] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 3021853414 [1657002313.871680][3977:3982] CHIP:TOO: device list: 1 entries [1657002313.871740][3977:3982] CHIP:TOO: [1]: { [1657002313.871788][3977:3982] CHIP:TOO: Type: 14 [1657002313.871821][3977:3982] CHIP:TOO: Revision: 1 - [1657002313.871852][3977:3982] CHIP:TOO: } - + [1657002313.871852][3977:3982] :TOOCHIP: } ./chip-tool descriptor read device-list 1 3 + + Verify in TH Log + [1657002329.438065][3983:3988] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 2452512872 [1657002329.438135][3983:3988] CHIP:TOO: device list: 2 entries [1657002329.438193][3983:3988] CHIP:TOO: [1]: { @@ -93,6 +94,9 @@ tests: ./chip-tool descriptor read device-list 1 4 + + Verify in TH Log + [1657002348.693948][3989:3994] CHIP:TOO: Endpoint: 4 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 1398882309 [1657002348.694013][3989:3994] CHIP:TOO: device list: 2 entries [1657002348.694063][3989:3994] CHIP:TOO: [1]: { @@ -107,6 +111,9 @@ tests: ./chip-tool descriptor read device-list 1 5 + + Verify in TH Log + [1657002369.589492][3996:4001] CHIP:TOO: Endpoint: 5 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 130458766 [1657002369.589556][3996:4001] CHIP:TOO: device list: 2 entries [1657002369.589610][3996:4001] CHIP:TOO: [1]: { @@ -121,6 +128,10 @@ tests: ./chip-tool descriptor read device-list 1 6 + + Verify in TH Log + + [1657002386.484093][4002:4007] CHIP:TOO: Endpoint: 6 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 295450100 [1657002386.484155][4002:4007] CHIP:TOO: device list: 1 entries [1657002386.484255][4002:4007] CHIP:TOO: [1]: { @@ -131,6 +142,9 @@ tests: ./chip-tool descriptor read device-list 1 7 + + Verify in TH Log + [1657002413.721927][4015:4020] CHIP:TOO: Endpoint: 7 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 2117104859 [1657002413.721981][4015:4020] CHIP:TOO: device list: 1 entries [1657002413.722028][4015:4020] CHIP:TOO: [1]: { @@ -141,6 +155,9 @@ tests: ./chip-tool descriptor read device-list 1 8 + + Verify in TH Log + [1657002436.415904][4034:4039] CHIP:TOO: Endpoint: 8 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 2026786918 [1657002436.415972][4034:4039] CHIP:TOO: device list: 1 entries [1657002436.416033][4034:4039] CHIP:TOO: [1]: { @@ -151,6 +168,9 @@ tests: ./chip-tool descriptor read device-list 1 9 + + Verify in TH Log + [1657002455.445818][4040:4045] CHIP:TOO: Endpoint: 9 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 913116116 [1657002455.445883][4040:4045] CHIP:TOO: device list: 1 entries [1657002455.445944][4040:4045] CHIP:TOO: [1]: { @@ -161,6 +181,9 @@ tests: ./chip-tool descriptor read device-list 1 10 + + Verify in TH Log + [1657002473.100910][4047:4052] CHIP:TOO: Endpoint: 10 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 259205426 [1657002473.100967][4047:4052] CHIP:TOO: device list: 2 entries [1657002473.101013][4047:4052] CHIP:TOO: [1]: { @@ -173,8 +196,10 @@ tests: [1657002473.101192][4047:4052] CHIP:TOO: } - ./chip-tool descriptor read device-list 1 11 + + Verify in TH Log + [1657002495.856770][4061:4066] CHIP:TOO: Endpoint: 11 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 4248421677 [1657002495.856836][4061:4066] CHIP:TOO: device list: 2 entries [1657002495.856893][4061:4066] CHIP:TOO: [1]: { @@ -189,6 +214,9 @@ tests: ./chip-tool descriptor read device-list 1 12 + + Verify in TH Log + [1657002515.862187][4073:4078] CHIP:TOO: Endpoint: 12 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 2731599835 [1657002515.862249][4073:4078] CHIP:TOO: device list: 2 entries [1657002515.862302][4073:4078] CHIP:TOO: [1]: { @@ -203,6 +231,9 @@ tests: ./chip-tool descriptor read device-list 1 13 + + Verify in TH Log + [1657002538.134605][4097:4102] CHIP:TOO: Endpoint: 13 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 3449178249 [1657002538.134700][4097:4102] CHIP:TOO: device list: 2 entries [1657002538.134784][4097:4102] CHIP:TOO: [1]: { @@ -215,15 +246,25 @@ tests: [1657002538.135166][4097:4102] CHIP:TOO: } disabled: true + - label: + "For each of the endpoints read in step 1b, read attribute + DeviceTypeList of the Descriptor cluster on that endpoint" + PICS: MCORE.BRIDGE + verification: | + Verify in step 1c list of endpoints is printed for aggregator i.e., 0x000e=14 + + Then in this case Endpoint is 1 + disabled: true + - label: "Read attribute PartsList of the Descriptor cluster on endpoint found in step 1c" PICS: MCORE.BRIDGE verification: | - Verify in TH Log - ./chip-tool descriptor read parts-list 1 1 + Verify in TH Log + [1657002810.697118][4121:4126] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_0003 DataVersion: 3021853414 [1657002810.697276][4121:4126] CHIP:TOO: parts list: 11 entries [1657002810.697312][4121:4126] CHIP:TOO: [1]: 3 @@ -246,10 +287,9 @@ tests: Bridged Node in their DeviceTypeList" PICS: MCORE.BRIDGE verification: | - Verify in TH Log - Verify device type has either Bridged node (0x0013), i.e., Type=19 + Verify in TH Log ./chip-tool descriptor read device-list 1 3 [1657002843.395988][4135:4140] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 2452512872 @@ -264,6 +304,9 @@ tests: [1657002843.396342][4135:4140] CHIP:TOO: } ./chip-tool descriptor read device-list 1 4 + + Verify in TH Log + [1657002927.992247][4143:4148] CHIP:TOO: Endpoint: 4 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 1398882309 [1657002927.992309][4143:4148] CHIP:TOO: device list: 2 entries [1657002927.992362][4143:4148] CHIP:TOO: [1]: { @@ -276,6 +319,9 @@ tests: [1657002927.992567][4143:4148] CHIP:TOO: } ./chip-tool descriptor read device-list 1 5 + + Verify in TH Log + [1657002949.332151][4156:4161] CHIP:TOO: Endpoint: 5 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 130458766 [1657002949.332245][4156:4161] CHIP:TOO: device list: 2 entries [1657002949.332294][4156:4161] CHIP:TOO: [1]: { @@ -288,6 +334,10 @@ tests: [1657002949.332470][4156:4161] CHIP:TOO: } ./chip-tool descriptor read device-list 1 6 + + Verify in TH Log + + [1657002965.947096][4163:4168] CHIP:TOO: Endpoint: 6 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 295450100 [1657002965.947150][4163:4168] CHIP:TOO: device list: 1 entries [1657002965.947196][4163:4168] CHIP:TOO: [1]: { @@ -296,6 +346,8 @@ tests: [1657002965.947278][4163:4168] CHIP:TOO: } ./chip-tool descriptor read device-list 1 7 + + Verify in TH Log [1657002981.963307][4176:4181] CHIP:TOO: Endpoint: 7 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 2117104859 [1657002981.963371][4176:4181] CHIP:TOO: device list: 1 entries [1657002981.963429][4176:4181] CHIP:TOO: [1]: { @@ -304,6 +356,9 @@ tests: [1657002981.963533][4176:4181] CHIP:TOO: } ./chip-tool descriptor read device-list 1 8 + + Verify in TH Log + [1657003007.476575][4183:4188] CHIP:TOO: Endpoint: 8 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 2026786918 [1657003007.476635][4183:4188] CHIP:TOO: device list: 1 entries [1657003007.476689][4183:4188] CHIP:TOO: [1]: { @@ -312,6 +367,9 @@ tests: [1657003007.476786][4183:4188] CHIP:TOO: } ./chip-tool descriptor read device-list 1 9 + + Verify in TH Log + [1657003023.263333][4191:4196] CHIP:TOO: Endpoint: 9 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 913116116 [1657003023.263391][4191:4196] CHIP:TOO: device list: 1 entries [1657003023.263443][4191:4196] CHIP:TOO: [1]: { @@ -320,6 +378,9 @@ tests: [1657003023.263538][4191:4196] CHIP:TOO: } ./chip-tool descriptor read device-list 1 10 + + Verify in TH Log + [1657003044.071972][4204:4209] CHIP:TOO: Endpoint: 10 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 259205426 [1657003044.072037][4204:4209] CHIP:TOO: device list: 2 entries [1657003044.072085][4204:4209] CHIP:TOO: [1]: { @@ -332,6 +393,9 @@ tests: [1657003044.072295][4204:4209] CHIP:TOO: } ./chip-tool descriptor read device-list 1 11 + + Verify in TH Log + [1657003082.358311][4217:4222] CHIP:TOO: Endpoint: 11 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 4248421677 [1657003082.358379][4217:4222] CHIP:TOO: device list: 2 entries [1657003082.358432][4217:4222] CHIP:TOO: [1]: { @@ -344,6 +408,9 @@ tests: [1657003082.358646][4217:4222] CHIP:TOO: } ./chip-tool descriptor read device-list 1 12 + + Verify in TH Log + [1657003103.954911][4248:4253] CHIP:TOO: Endpoint: 12 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 2731599835 [1657003103.954986][4248:4253] CHIP:TOO: device list: 2 entries [1657003103.955050][4248:4253] CHIP:TOO: [1]: { @@ -356,6 +423,9 @@ tests: [1657003103.955269][4248:4253] CHIP:TOO: } ./chip-tool descriptor read device-list 1 13 + + Verify in TH Log + [1657003125.905572][4261:4266] CHIP:TOO: Endpoint: 13 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 3449178249 [1657003125.905638][4261:4266] CHIP:TOO: device list: 2 entries [1657003125.905687][4261:4266] CHIP:TOO: [1]: { @@ -373,15 +443,19 @@ tests: perform the tests for Bridged Device Basic Information cluster" PICS: MCORE.BRIDGE verification: | - Verify in TH Log - ref to test plan for Bridged Device Basic Information cluster(https://github.com/CHIP-Specifications/chip-test-plans/blob/master/src/cluster/bridged_device_basic_information.adoc) ./chip-tool bridgeddevicebasic read reachable 1 3 + + Verify in TH Log + [1657003614.269096][4564:4569] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_0039 Attribute 0x0000_0011 DataVersion: 1897994097 [1657003614.269155][4564:4569] CHIP:TOO: Reachable: TRUE ./chip-tool bridgeddevicebasic read node-label 1 4 + + Verify in TH Log + [1657003598.573764][4552:4557] CHIP:TOO: Endpoint: 4 Cluster: 0x0000_0039 Attribute 0x0000_0005 DataVersion: 3722118563 [1657003598.573811][4552:4557] CHIP:TOO: NodeLabel: Switch 1 disabled: true @@ -405,12 +479,13 @@ tests: type(s) of the bridged device" PICS: MCORE.BRIDGE verification: | - Verify in TH Log - Verify the Endpoint list has devicetype application 1.e, 0x0100 = 256(actuator), 0x0103=259(sensor) ./chip-tool descriptor read device-list 1 3 + + Verify in TH Log + [1657003925.553294][4664:4669] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 2452512872 [1657003925.553368][4664:4669] CHIP:TOO: device list: 2 entries [1657003925.553430][4664:4669] CHIP:TOO: [1]: { @@ -425,6 +500,9 @@ tests: ./chip-tool descriptor read device-list 1 4 + + Verify in TH Log + [1657004014.927308][4678:4683] CHIP:TOO: Endpoint: 4 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 1398882309 [1657004014.927387][4678:4683] CHIP:TOO: device list: 2 entries [1657004014.927460][4678:4683] CHIP:TOO: [1]: { @@ -438,6 +516,9 @@ tests: ./chip-tool descriptor read device-list 1 5 + + Verify in TH Log + [1657004035.789404][4690:4695] CHIP:TOO: Endpoint: 5 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 130458766 [1657004035.789470][4690:4695] CHIP:TOO: device list: 2 entries [1657004035.789526][4690:4695] CHIP:TOO: [1]: { @@ -451,6 +532,9 @@ tests: ./chip-tool descriptor read device-list 1 6 + + Verify in TH Log + [1657004053.597061][4698:4703] CHIP:TOO: Endpoint: 6 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 295450100 [1657004053.597116][4698:4703] CHIP:TOO: device list: 1 entries [1657004053.597164][4698:4703] CHIP:TOO: [1]: { @@ -460,6 +544,9 @@ tests: ./chip-tool descriptor read device-list 1 10 + + Verify in TH Log + [1657004074.939061][4704:4709] CHIP:TOO: Endpoint: 10 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 259205426 [1657004074.939126][4704:4709] CHIP:TOO: device list: 2 entries [1657004074.939178][4704:4709] CHIP:TOO: [1]: { @@ -473,6 +560,9 @@ tests: ./chip-tool descriptor read device-list 1 11 + + Verify in TH Log + [1657004114.075998][4725:4730] CHIP:TOO: Endpoint: 11 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 4248421677 [1657004114.076073][4725:4730] CHIP:TOO: device list: 2 entries [1657004114.076130][4725:4730] CHIP:TOO: [1]: { @@ -486,6 +576,9 @@ tests: ./chip-tool descriptor read device-list 1 12 + + Verify in TH Log + [1657004134.659723][4737:4742] CHIP:TOO: Endpoint: 12 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 2731599835 [1657004134.659785][4737:4742] CHIP:TOO: device list: 2 entries [1657004134.659835][4737:4742] CHIP:TOO: [1]: { @@ -499,6 +592,9 @@ tests: ./chip-tool descriptor read device-list 1 13 + + Verify in TH Log + [1657004152.758221][4749:4754] CHIP:TOO: Endpoint: 13 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 3449178249 [1657004152.758277][4749:4754] CHIP:TOO: device list: 2 entries [1657004152.758323][4749:4754] CHIP:TOO: [1]: { @@ -524,10 +620,10 @@ tests: brightness" PICS: MCORE.BRIDGE verification: | - Verify in TH Log - ./chip-tool onoff read on-off 1 3 + Verify in TH Log + [1657004454.213279][4792:4798] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 3808303315 [1657004454.213319][4792:4798] CHIP:TOO: OnOff: FALSE disabled: true @@ -535,7 +631,6 @@ tests: - label: "Change the state of this bridged device (through Matter), e.g. change its brightness or toggle its on/off state" - PICS: MCORE.BRIDGE verification: | ./chip-tool onoff toggle 1 3 On bridge-app @@ -548,6 +643,7 @@ tests: Verify in TH Log + [1657522278.539407][16698:16703] CHIP:DMG: { [1657522278.539447][16698:16703] CHIP:DMG: suppressResponse = false, [1657522278.539495][16698:16703] CHIP:DMG: InvokeResponseIBs = @@ -583,10 +679,9 @@ tests: - label: "Read the state of this bridged device (through Matter), as in 6b" PICS: MCORE.BRIDGE verification: | - Verify in TH Log - ./chip-tool onoff read on-off 1 3 + Verify in TH Log [1657004565.254591][4804:4809] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 3808303316 [1657004565.254635][4804:4809] CHIP:TOO: OnOff: TRUE diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_1.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_1.yaml index e0a2486c4420c2..94f6fdcfc0fcd5 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_1.yaml @@ -14,8 +14,7 @@ # Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default name: - 24.1.1. [TC-CADMIN-1.1] Administrator Behavior using ECM [DUT - - Commissioner] + 3.1.1. [TC-CADMIN-1.1] Administrator Behavior using ECM [DUT - Commissioner] config: nodeId: 0x12344321 @@ -24,6 +23,7 @@ config: tests: - label: "TH_CR1 starts a commissioning process with TH_CE" + PICS: CADMIN.C verification: | "1. Provision the device using 1st controller chip-tool on the raspi (use above instructions) " @@ -33,7 +33,7 @@ tests: "TH_CR1 sends command to TH_CE to open a commissioning window with a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM (Enhanced Commissioning Method)" - PICS: CADMIN.C.C0000 + PICS: CADMIN.C.C00.Tx verification: | On 1st controller using chip tool, open commissioning window using ECM @@ -69,7 +69,8 @@ tests: ./chip-tool operationalcredentials read fabrics 1 0 --fabric-filtered 0 - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 3621507058 + Verify in DUT as client side log + CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 3621507058 [1649245801.244173][10091:10096] CHIP:TOO: Fabrics: 1 entries [1649245801.244305][10091:10096] CHIP:TOO: [1]: { [1649245801.244348][10091:10096] CHIP:TOO: RootPublicKey: 045541017FCEFD0D83963C9ED7F21380C6B789EB989B5D20DC318FAE92D60D0F685666505E9C4F86C49ADC71AB3A8B9B44FD43214CF9BE2B6D47DE01F28FE1544F @@ -83,12 +84,13 @@ tests: disabled: true - label: "DUT_CR2 starts a commissioning process with TH_CE" + PICS: CADMIN.C verification: | On 2nd controller, using chip-tool connect using manual code. Below is the example when using chip tool as controller (considering 35998938564 as the manual code generated by 1st controller) ./chip-tool pairing code 2 35998938564 - Verify whether you got below message in the log of TH + Verify whether you got below message in the log of TH Device commissioning completed with success disabled: true @@ -324,7 +326,7 @@ tests: "DUT_CR2 sends command to TH_CE to open a commissioning window using a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM (Enhanced Commissioning Method)" - PICS: CADMIN.C.C0000 + PICS: CADMIN.C.C00.Tx verification: | 1. Using your DUT controller open commissioning window using ECM @@ -344,7 +346,7 @@ tests: - label: "DUT_CR2 sends command to TH_CE to revoke the commissioning window using the Revoke Commissioning command" - PICS: CADMIN.C.C0002 + PICS: CADMIN.C.C02.Tx verification: | On your DUT controller, run revoke command @@ -388,6 +390,7 @@ tests: - label: "TH_CR3 attempts to execute a PASE to starts a commissioning process with TH_CE" + PICS: CADMIN.C verification: | On 3rd controller using chip-tool connect using manual code generated from 1st controller. This attempt should fail, i.e ./chip-tool pairing code 1 34995354639 @@ -447,7 +450,7 @@ tests: - label: "DUT_CR2 sends command to TH_CE to open a commissioning window using ECM" - PICS: CADMIN.C.C0000 + PICS: CADMIN.C.C00.Tx verification: | 1. Using your DUT controller open commissioning window using ECM @@ -473,7 +476,7 @@ tests: - label: "DUT_CR2 sends command to TH_CE to open a commissioning window using ECM" - PICS: CADMIN.C.C0000 + PICS: CADMIN.C.C00.Tx verification: | 1. Using your DUT controller open commissioning window using ECM @@ -493,6 +496,7 @@ tests: - label: "TH_CR1 starts a commissioning process with TH_CE before the timeout from step 15" + PICS: CADMIN.C verification: | On 1st controller, using chip-tool connect using manual code. Below is the example when using chip tool as controller (considering 34995354639 as the manual code generated by DUT) diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_10.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_10.yaml index f2d209221b7a1a..6edc60eb000278 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_10.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_10.yaml @@ -43,6 +43,7 @@ tests: - label: "TH_CR1 starts a commissioning process with DUT_CE" cluster: "DelayCommands" command: "WaitForCommissionee" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -51,7 +52,7 @@ tests: - label: "TH_CR1 opens a commissioning window on DUT_CE" cluster: "AdministratorCommissioning" command: "OpenBasicCommissioningWindow" - PICS: CADMIN.S.C0000 + PICS: CADMIN.S.C01.Rsp timedInteractionTimeoutMs: 10000 arguments: values: @@ -64,6 +65,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -79,6 +81,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -94,6 +97,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -109,6 +113,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -124,6 +129,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -139,6 +145,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -154,6 +161,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -169,6 +177,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -184,6 +193,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -214,6 +224,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -229,6 +240,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -244,6 +256,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -259,6 +272,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -274,6 +288,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -289,6 +304,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -304,6 +320,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -319,6 +336,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -334,6 +352,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -349,6 +368,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -359,11 +379,12 @@ tests: error: FAILURE - label: - "TH_CR2 starts a commissioning process with DUT_CE using valid setup - code" + "TH_CR2 attempts to do PASE to DUT_CE using the correct onboarding + payload" identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -372,16 +393,3 @@ tests: value: payload response: error: FAILURE - - - label: "TH_CR3 starts a commissioning process with DUT_CE" - identity: "gamma" - cluster: "CommissionerCommands" - command: "PairWithCode" - arguments: - values: - - name: "nodeId" - value: nodeId3 - - name: "payload" - value: payload - response: - error: FAILURE diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_11.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_11.yaml index 8dc4eb53a8fff6..eb0e711bb0bbac 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_11.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_11.yaml @@ -14,8 +14,8 @@ # Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default name: - 24.1.11. [TC-CADMIN-1.11] Open commissioning window on DUT twice using ECM - then BCM [DUT - Commissioner] + 3.1.11. [TC-CADMIN-1.11] Open commissioning window on DUT twice using ECM + then BCM [DUT - Commissionee] config: nodeId: 0x12344321 @@ -23,88 +23,428 @@ config: endpoint: 0 tests: - - label: "TH_CR2 starts a commissioning process with TH_CE" + - label: "TH_CR1 starts a commissioning process with DUT_CE" + PICS: CADMIN.S verification: | - "1. Provision the device using 2nd controller chip tool on the raspi (use above instructions)" + "1. Provision the device using 1st controller chip tool on the raspi (use above instructions) , + " disabled: true - label: - "TH_CR2 sends command to TH_CE to open a commissioning window with a - commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" - PICS: CADMIN.C.C0000 + "TH_CR1 opens a commissioning window on DUT_CE using a commissioning + timeout of PIXIT.CADMIN.CwDuration seconds using ECM" + PICS: CADMIN.S.C00.Rsp verification: | - On the 2nd controller using chip tool, open commissioning window using ECM + On the 1st controller using chip tool, open commissioning window using ECM - ./chip-tool pairing open-commissioning-window 2 1 400 2000 3840 - Controller: + ./chip-tool pairing open-commissioning-window 1 1 180 1000 3840 + + [1635874557.409509][4549:4554] CHIP:SC: Success status report received. Session was established + [1635874557.409553][4549:4554] CHIP:IN: New secure session created for device 0x0000000000000001, key 76!! + [1635874557.409649][4549:4554] CHIP:CTL: OpenCommissioningWindow for device ID 1 + [1635874557.416929][4549:4554] CHIP:DMG: ICR moving to [AddingComm] + [1635874557.417092][4549:4554] CHIP:DMG: ICR moving to [AddedComma] + [1635874557.417215][4549:4554] CHIP:IN: Prepared encrypted message 0xaaaac5947d10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 5541i with MessageCounter:0. + [1635874557.417271][4549:4554] CHIP:IN: Sending encrypted msg 0xaaaac5947d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 16129075 msec + [1635874557.417449][4549:4554] CHIP:DMG: ICR moving to [CommandSen] + [1635874557.417505][4549:4554] CHIP:CTL: Manual pairing code: [35484132896] + [1635874557.417577][4549:4554] CHIP:CTL: SetupQRCode: [MT:00000CQM00AT-F5A510] + disabled: true + + - label: "DNS-SD records shows DUT_CE advertising" + verification: | + grl@grl-ThinkPad-L480:~/2nd_cntrl/connectedhomeip/examples/chip-tool/out/debug$ avahi-browse -rt _matterc._udp + + wlp5s0 IPv6 C326228BDB082BF4 _matterc._udp local + + wlp5s0 IPv6 7B6545A75C5330BE _matterc._udp local + = wlp5s0 IPv6 7B6545A75C5330BE _matterc._udp local + hostname = [E45F010F27530000.local] + address = [fe80::e65f:1ff:fe0f:2755] + port = [5540] + txt = ["PI=" "PH=33" "CM=1" "D=3841" "T=1" "CRA=300" "CRI=5000" "VP=65521+32769"] + = wlp5s0 IPv6 C326228BDB082BF4 _matterc._udp local + hostname = [E45F010F27530000.local] + address = [fe80::e65f:1ff:fe0f:2755] + port = [5540] + txt = ["PI=" "PH=36" "CM=2" "D=3840" "T=1" "CRA=300" "CRI=5000" "VP=65521+32769"] + grl@grl-ThinkPad-L480:~/2nd_cntrl/connectedhomeip/examples/chip-tool/out/debug$ + disabled: true + + - label: "TH_CR3 Commissions with DUT_CE" + PICS: CADMIN.S + verification: | + 1. On 3rd controller using chip tool connect using manual code + + ./chip-tool pairing code 3 35484132896 + + Verify you got below message + Device commissioning completed with success + disabled: true + + - label: + "TH_CR1 opens a commissioning window on DUT_CE using a commissioning + timeout of PIXIT.CADMIN.CwDuration seconds using ECM and TH_CR2 + Commissions with DUT_CE" + PICS: CADMIN.S.C00.Rsp + verification: | + On the 1st controller using chip tool, open commissioning window using ECM + + + ./chip-tool pairing open-commissioning-window 1 1 180 1000 3840 + + [1635874557.409509][4549:4554] CHIP:SC: Success status report received. Session was established + [1635874557.409553][4549:4554] CHIP:IN: New secure session created for device 0x0000000000000001, key 76!! + [1635874557.409649][4549:4554] CHIP:CTL: OpenCommissioningWindow for device ID 1 + [1635874557.416929][4549:4554] CHIP:DMG: ICR moving to [AddingComm] + [1635874557.417092][4549:4554] CHIP:DMG: ICR moving to [AddedComma] + [1635874557.417215][4549:4554] CHIP:IN: Prepared encrypted message 0xaaaac5947d10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 5541i with MessageCounter:0. + [1635874557.417271][4549:4554] CHIP:IN: Sending encrypted msg 0xaaaac5947d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 16129075 msec + [1635874557.417449][4549:4554] CHIP:DMG: ICR moving to [CommandSen] + [1635874557.417505][4549:4554] CHIP:CTL: Manual pairing code: [35484132896] + [1635874557.417577][4549:4554] CHIP:CTL: SetupQRCode: [MT:00000CQM00AT-F5A510] + + + 1. On 2nd controller using chip tool connect using manual code + + ./chip-tool pairing code 1 35484132896 + + Verify you got below message + Device commissioning completed with success + disabled: true + + - label: + "TH_CR1 opens a commissioning window on DUT_CE using a commissioning + timeout of PIXIT.CADMIN.CwDuration seconds using ECM" + PICS: CADMIN.S.C00.Rsp + verification: | + On the 1st controller using chip tool, open commissioning window using ECM + + + ./chip-tool pairing open-commissioning-window 1 1 180 1000 3840 + + [1635874557.409509][4549:4554] CHIP:SC: Success status report received. Session was established + [1635874557.409553][4549:4554] CHIP:IN: New secure session created for device 0x0000000000000001, key 76!! + [1635874557.409649][4549:4554] CHIP:CTL: OpenCommissioningWindow for device ID 1 + [1635874557.416929][4549:4554] CHIP:DMG: ICR moving to [AddingComm] + [1635874557.417092][4549:4554] CHIP:DMG: ICR moving to [AddedComma] + [1635874557.417215][4549:4554] CHIP:IN: Prepared encrypted message 0xaaaac5947d10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 5541i with MessageCounter:0. + [1635874557.417271][4549:4554] CHIP:IN: Sending encrypted msg 0xaaaac5947d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 16129075 msec + [1635874557.417449][4549:4554] CHIP:DMG: ICR moving to [CommandSen] + [1635874557.417505][4549:4554] CHIP:CTL: Manual pairing code: [35484132896] + [1635874557.417577][4549:4554] CHIP:CTL: SetupQRCode: [MT:00000CQM00AT-F5A510] + disabled: true + + - label: + "Before the expiration of PIXIT.CADMIN.CwDuration seconds which was + set in step 5, TH_CR1 opens a 2nd commissioning window on DUT_CE using + a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" + PICS: CADMIN.S.C00.Rsp + verification: | + Before the timer expiry, on the 1st controller using chip tool, open commissioning window using ECM. Verify the General code return error 1 - CHIP:IN: Sending encrypted msg 0xaaaad3464d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 5805157 msec - [1635691999.946536][3822:3827] CHIP:DMG: ICR moving to [CommandSen] - [1635691999.946586][3822:3827] CHIP:CTL: Manual pairing code: [35407541839] - [1635691999.946650][3822:3827] CHIP:CTL: SetupQRCode: [MT:00000CQM00G6V851H10] - [1635691999.946802][3822:3827] CHIP:EM: Sending Standalone Ack for MessageCounter:3234931243 on exchange 35324i - [1635691999.946850][3822:3827] CHIP:IN: Prepared plaintext message 0xffffaa58a960 to 0x0000000000000000 of type 0x10 and protocolId (0, 0) on exchange 35324i with MessageCounter:1726016118. - [1635691999.946895][3822:3827] CHIP:IN: Sending plaintext msg 0xffffaa58a960 with MessageCounter:1726016118 to 0x0000000000000000 at monotonic time: 5805158 msec - [1635691999.946983][3822:3827] CHIP:EM: Flushed pending ack for MessageCounter:3234931243 on exchange 35324i - Device: + ./chip-tool pairing open-commissioning-window 1 1 180 1000 3840 + + CHIP:DMG: InvokeResponseMessage = + [1650527291.952055][8566:8571] CHIP:DMG: { + [1650527291.952074][8566:8571] CHIP:DMG: suppressResponse = false, + [1650527291.952091][8566:8571] CHIP:DMG: InvokeResponseIBs = + [1650527291.952116][8566:8571] CHIP:DMG: [ + [1650527291.952134][8566:8571] CHIP:DMG: InvokeResponseIB = + [1650527291.952172][8566:8571] CHIP:DMG: { + [1650527291.952195][8566:8571] CHIP:DMG: CommandStatusIB = + [1650527291.952220][8566:8571] CHIP:DMG: { + [1650527291.952245][8566:8571] CHIP:DMG: CommandPathIB = + [1650527291.952276][8566:8571] CHIP:DMG: { + [1650527291.952303][8566:8571] CHIP:DMG: EndpointId = 0x0, + [1650527291.952334][8566:8571] CHIP:DMG: ClusterId = 0x3c, + [1650527291.952369][8566:8571] CHIP:DMG: CommandId = 0x0, + [1650527291.952394][8566:8571] CHIP:DMG: }, + [1650527291.952431][8566:8571] CHIP:DMG: + [1650527291.952458][8566:8571] CHIP:DMG: StatusIB = + [1650527291.952488][8566:8571] CHIP:DMG: { + [1650527291.952519][8566:8571] CHIP:DMG: status = 0x01 (FAILURE), + [1650527291.952555][8566:8571] CHIP:DMG: cluster-status = 0x1, + [1650527291.952578][8566:8571] CHIP:DMG: }, + [1650527291.952612][8566:8571] CHIP:DMG: + [1650527291.952634][8566:8571] CHIP:DMG: }, + [1650527291.952671][8566:8571] CHIP:DMG: + [1650527291.952694][8566:8571] CHIP:DMG: }, + [1650527291.952731][8566:8571] CHIP:DMG: + [1650527291.952751][8566:8571] CHIP:DMG: ], + [1650527291.952781][8566:8571] CHIP:DMG: + [1650527291.952795][8566:8571] CHIP:DMG: InteractionModelRevision = 1 + [1650527291.952807][8566:8571] CHIP:DMG: }, + [1650527291.952886][8566:8571] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0000 Status=0x1 + [1650527291.952931][8566:8571] CHIP:CTL: Failed to open pairing window on the device. Status IM Error 0x00000601: Cluster-specific error: 0x01 + disabled: true - CHIP minimal mDNS started advertising. - [1635687658.683388][3792:3792] CHIP:DIS: Failed to find a valid admin pairing. Node ID unknown - [1635687658.683427][3792:3792] CHIP:DIS: Start dns-sd server - no current nodeId - [1635687658.683456][3792:3792] CHIP:DL: MAC is not known, using a default. - [1635687658.683522][3792:3792] CHIP:DIS: Advertise commission parameter vendorID=9050 productID=65279 discriminator=3840/00 - [1635687658.683597][3792:3792] CHIP:DIS: CHIP minimal mDNS configured as 'Commissionable node device'. - [1635687658.684345][3792:3792] CHIP:DIS: Broadcasting mDns reply for query from 192.168.0.225 - [1635687658.687201][3792:3792] CHIP:DIS: Broadcasting mDns reply for query from 192.168.0.225 + - label: "TH_CR1 reads the list of Fabrics on DUT_CE" + PICS: OPCREDS.S.A0001 + verification: | + On 1st controller using chip tool, read fabrics list + ./chip-tool operationalcredentials read fabrics 1 0 --fabric-filtered 0 - The setup pin code is extracted from the manual pairing code in the log and that will be used when pairing the 2nd admin controller. + CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 268962768 + [1650527361.425870][15792:15797] CHIP:TOO: Fabrics: 3 entries + [1650527361.426777][15792:15797] CHIP:TOO: [1]: { + [1650527361.426859][15792:15797] CHIP:TOO: RootPublicKey: 0429A71383F336D80918C9EC655112513E428C073AF7FB44820EC793535302C6E3825C56EE6DD1A683EAA7B59E3F261B46FFA24A6D911E8D88839F4C1B3C84BA01 + [1650527361.426923][15792:15797] CHIP:TOO: VendorId: 65521 + [1650527361.426979][15792:15797] CHIP:TOO: FabricId: 1 + [1650527361.427033][15792:15797] CHIP:TOO: NodeId: 1 + [1650527361.427088][15792:15797] CHIP:TOO: Label: + [1650527361.427166][15792:15797] CHIP:TOO: FabricIndex: 1 + [1650527361.427376][15792:15797] CHIP:TOO: } + [1650527361.427464][15792:15797] CHIP:TOO: [2]: { + [1650527361.427532][15792:15797] CHIP:TOO: RootPublicKey: 04781BCEE70118049ED61DD5B4E401CF1A09D2F78AE7F5770BE5506AD24238E5E0777277DABAFD062659651C95CC2CA7DEAACE40DB579A946CC07CADB141BE05D7 + [1650527361.427595][15792:15797] CHIP:TOO: VendorId: 65521 + [1650527361.427649][15792:15797] CHIP:TOO: FabricId: 1 + [1650527361.427703][15792:15797] CHIP:TOO: NodeId: 3 + [1650527361.427756][15792:15797] CHIP:TOO: Label: + [1650527361.427811][15792:15797] CHIP:TOO: FabricIndex: 2 + [1650527361.427868][15792:15797] CHIP:TOO: } + [1650527361.427943][15792:15797] CHIP:TOO: [3]: { + [1650527361.428008][15792:15797] CHIP:TOO: RootPublicKey: 0403EDB5B461030A34EF7EA2F9DB0D46A36185E4755C365AF9344C4959F049EF21D55EAB903A2C7FBFC305EEFA42989250D7517A73E6156062390A60C0D4C41EBD + [1650527361.428067][15792:15797] CHIP:TOO: VendorId: 65521 + [1650527361.428122][15792:15797] CHIP:TOO: FabricId: 1 + [1650527361.428176][15792:15797] CHIP:TOO: NodeId: 2 + [1650527361.428229][15792:15797] CHIP:TOO: Label: + [1650527361.428282][15792:15797] CHIP:TOO: FabricIndex: 3 + [1650527361.428335][15792:15797] CHIP:TOO: } disabled: true - label: - "Before the expiration of PIXIT.CADMIN.CwDuration set in step 2, set - up a DUT_CR1 to start attempting to do PASE to TH_CE and failing 20 - times. This can be done using a valid onboarding payload with an - incorrect setupcode" + "Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that was + set in step 6" verification: | - 1. On 2nd controller using chip-tool connect using wrong manual code. Repeat the step for 20 times. + Wait for the expiration of PIXIT_COMM_WIN seconds + disabled: true - ./chip-tool pairing code 1 36177160938 --timeout 3 (With wrong manual code) + - label: + "TH_CR1 re-opens a commissioning window on DUT_CE using a + commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" + PICS: CADMIN.S.C01.Rsp + verification: | + On the 1st controller using chip tool, open commissioning window using BCM - verify you got the following message in the TH log - CHIP:SC: PASESession timed out while waiting for a response from the peer. Expected message type was 33 - CHIP:TOO: Secure Pairing Failed - CHIP:TOO: Pairing Failure: ../../third_party/connectedhomeip/src/protocols/secure_channel/PASESession.cpp:324: CHIP Error 0x00000032: Timeout + ./chip-tool administratorcommissioning open-basic-commissioning-window 500 1 0 --timedInteractionTimeoutMs 1000 + + CHIP:DMG: InvokeResponseMessage = + [1650278416.248379][11064:11069] CHIP:DMG: { + [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, + [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = + [1650278416.248570][11064:11069] CHIP:DMG: [ + [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = + [1650278416.248718][11064:11069] CHIP:DMG: { + [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = + [1650278416.248860][11064:11069] CHIP:DMG: { + [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = + [1650278416.249011][11064:11069] CHIP:DMG: { + [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, + [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, + [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, + [1650278416.249347][11064:11069] CHIP:DMG: }, + [1650278416.249430][11064:11069] CHIP:DMG: + [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = + [1650278416.249581][11064:11069] CHIP:DMG: { + [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), + [1650278416.249738][11064:11069] CHIP:DMG: }, + [1650278416.249823][11064:11069] CHIP:DMG: + [1650278416.249889][11064:11069] CHIP:DMG: }, + [1650278416.249969][11064:11069] CHIP:DMG: + [1650278416.250035][11064:11069] CHIP:DMG: }, + [1650278416.250113][11064:11069] CHIP:DMG: + [1650278416.250169][11064:11069] CHIP:DMG: ], + [1650278416.250241][11064:11069] CHIP:DMG: + [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 + [1650278416.250355][11064:11069] CHIP:DMG: }, + [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 + [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] + disabled: true + + - label: "DNS-SD records shows DUT_CE advertising" + verification: | + ubuntu@ubuntu:~/may16_cntrl/connectedhomeip/examples/chip-tool/out/debug$ avahi-browse -rt _matterc._udp + + eth0 IPv6 2664ED6939FC373C _matterc._udp local + = eth0 IPv6 2664ED6939FC373C _matterc._udp local + hostname = [E45F010F27530000.local] + address = [fe80::e65f:1ff:fe0f:2753] + port = [5540] + txt = ["PI=" "PH=36" "CM=1" "D=3840" "T=1" "SAI=300" "SII=5000" "VP=65521+32769"] + ubuntu@ubuntu:~/may16_cntrl/connectedhomeip/examples/chip-tool/out/debug$ disabled: true - label: - "Before the expiration of PIXIT.CADMIN.CwDuration set in step 2, - DUT_CR1 attempts to do PASE to DUT_CE using the correct onboarding - payload" + "Before the expiration of PIXIT.CADMIN.CwDuration seconds that was set + in step 10, TH_CR3 opens a 2nd commissioning window on DUT_CE using a + commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" + PICS: CADMIN.S.C01.Rsp verification: | - 1. On 2nd controller using chip tool connect using correct passcode. + On the 3rd controller using chip tool, open commissioning window using BCM before the timer expiry of the above step + + ./chip-tool administratorcommissioning open-basic-commissioning-window 500 3 0 --timedInteractionTimeoutMs 1000 + + CHIP:DMG: InvokeResponseMessage = + [1650527565.990404][24618:24623] CHIP:DMG: { + [1650527565.990476][24618:24623] CHIP:DMG: suppressResponse = false, + [1650527565.990528][24618:24623] CHIP:DMG: InvokeResponseIBs = + [1650527565.990615][24618:24623] CHIP:DMG: [ + [1650527565.990667][24618:24623] CHIP:DMG: InvokeResponseIB = + [1650527565.990755][24618:24623] CHIP:DMG: { + [1650527565.990816][24618:24623] CHIP:DMG: CommandStatusIB = + [1650527565.990900][24618:24623] CHIP:DMG: { + [1650527565.990967][24618:24623] CHIP:DMG: CommandPathIB = + [1650527565.991042][24618:24623] CHIP:DMG: { + [1650527565.991112][24618:24623] CHIP:DMG: EndpointId = 0x0, + [1650527565.991186][24618:24623] CHIP:DMG: ClusterId = 0x3c, + [1650527565.991257][24618:24623] CHIP:DMG: CommandId = 0x1, + [1650527565.991332][24618:24623] CHIP:DMG: }, + [1650527565.991441][24618:24623] CHIP:DMG: + [1650527565.991505][24618:24623] CHIP:DMG: StatusIB = + [1650527565.991574][24618:24623] CHIP:DMG: { + [1650527565.991645][24618:24623] CHIP:DMG: status = 0x01 (FAILURE), + [1650527565.991743][24618:24623] CHIP:DMG: cluster-status = 0x1, + [1650527565.991830][24618:24623] CHIP:DMG: }, + [1650527565.991918][24618:24623] CHIP:DMG: + [1650527565.991976][24618:24623] CHIP:DMG: }, + [1650527565.992061][24618:24623] CHIP:DMG: + [1650527565.992116][24618:24623] CHIP:DMG: }, + [1650527565.992202][24618:24623] CHIP:DMG: + [1650527565.992253][24618:24623] CHIP:DMG: ], + [1650527565.992316][24618:24623] CHIP:DMG: + [1650527565.992365][24618:24623] CHIP:DMG: InteractionModelRevision = 1 + [1650527565.992414][24618:24623] CHIP:DMG: }, + [1650527565.992535][24618:24623] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x1 + [1650527565.992601][24618:24623] CHIP:TOO: Error: IM Error 0x00000601: Cluster-specific error: 0x01 + disabled: true + + - label: + "Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that was + set in step 11" + verification: | + Wait for the expiration of PIXIT_COMM_WIN seconds + disabled: true + + - label: "TH_CR1 reads the list of Fabrics on DUT_CE" + PICS: OPCREDS.S.A0001 + verification: | + On 1st controller using chip tool, read fabrics list + + ./chip-tool operationalcredentials read fabrics 1 0 --fabric-filtered 0 + + CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 268962768 + [1650527361.425870][15792:15797] CHIP:TOO: Fabrics: 3 entries + [1650527361.426777][15792:15797] CHIP:TOO: [1]: { + [1650527361.426859][15792:15797] CHIP:TOO: RootPublicKey: 0429A71383F336D80918C9EC655112513E428C073AF7FB44820EC793535302C6E3825C56EE6DD1A683EAA7B59E3F261B46FFA24A6D911E8D88839F4C1B3C84BA01 + [1650527361.426923][15792:15797] CHIP:TOO: VendorId: 65521 + [1650527361.426979][15792:15797] CHIP:TOO: FabricId: 1 + [1650527361.427033][15792:15797] CHIP:TOO: NodeId: 1 + [1650527361.427088][15792:15797] CHIP:TOO: Label: + [1650527361.427166][15792:15797] CHIP:TOO: FabricIndex: 1 + [1650527361.427376][15792:15797] CHIP:TOO: } + [1650527361.427464][15792:15797] CHIP:TOO: [2]: { + [1650527361.427532][15792:15797] CHIP:TOO: RootPublicKey: 04781BCEE70118049ED61DD5B4E401CF1A09D2F78AE7F5770BE5506AD24238E5E0777277DABAFD062659651C95CC2CA7DEAACE40DB579A946CC07CADB141BE05D7 + [1650527361.427595][15792:15797] CHIP:TOO: VendorId: 65521 + [1650527361.427649][15792:15797] CHIP:TOO: FabricId: 1 + [1650527361.427703][15792:15797] CHIP:TOO: NodeId: 3 + [1650527361.427756][15792:15797] CHIP:TOO: Label: + [1650527361.427811][15792:15797] CHIP:TOO: FabricIndex: 2 + [1650527361.427868][15792:15797] CHIP:TOO: } + [1650527361.427943][15792:15797] CHIP:TOO: [3]: { + [1650527361.428008][15792:15797] CHIP:TOO: RootPublicKey: 0403EDB5B461030A34EF7EA2F9DB0D46A36185E4755C365AF9344C4959F049EF21D55EAB903A2C7FBFC305EEFA42989250D7517A73E6156062390A60C0D4C41EBD + [1650527361.428067][15792:15797] CHIP:TOO: VendorId: 65521 + [1650527361.428122][15792:15797] CHIP:TOO: FabricId: 1 + [1650527361.428176][15792:15797] CHIP:TOO: NodeId: 2 + [1650527361.428229][15792:15797] CHIP:TOO: Label: + [1650527361.428282][15792:15797] CHIP:TOO: FabricIndex: 3 + [1650527361.428335][15792:15797] CHIP:TOO: } + disabled: true + + - label: + "TH_CR1 opens a commissioning window on DUT_CE using a commissioning + timeout of PIXIT.CADMIN.CwDuration seconds using BCM" + PICS: CADMIN.S.C01.Rsp + verification: | + On the 1st controller using chip tool, open commissioning window using BCM + + + ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 - ./chip-tool pairing code 1 36177160937 (correct passcode) - verify you got the following message in the TH log - CHIP:SC: PASESession timed out while waiting for a response from the peer. Expected message type was 33 - CHIP:TOO: Secure Pairing Failed - CHIP:TOO: Pairing Failure: ../../third_party/connectedhomeip/src/protocols/secure_channel/PASESession.cpp:324: CHIP Error 0x00000032: Timeout + CHIP:DMG: InvokeResponseMessage = + [1650278416.248379][11064:11069] CHIP:DMG: { + [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, + [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = + [1650278416.248570][11064:11069] CHIP:DMG: [ + [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = + [1650278416.248718][11064:11069] CHIP:DMG: { + [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = + [1650278416.248860][11064:11069] CHIP:DMG: { + [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = + [1650278416.249011][11064:11069] CHIP:DMG: { + [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, + [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, + [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, + [1650278416.249347][11064:11069] CHIP:DMG: }, + [1650278416.249430][11064:11069] CHIP:DMG: + [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = + [1650278416.249581][11064:11069] CHIP:DMG: { + [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), + [1650278416.249738][11064:11069] CHIP:DMG: }, + [1650278416.249823][11064:11069] CHIP:DMG: + [1650278416.249889][11064:11069] CHIP:DMG: }, + [1650278416.249969][11064:11069] CHIP:DMG: + [1650278416.250035][11064:11069] CHIP:DMG: }, + [1650278416.250113][11064:11069] CHIP:DMG: + [1650278416.250169][11064:11069] CHIP:DMG: ], + [1650278416.250241][11064:11069] CHIP:DMG: + [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 + [1650278416.250355][11064:11069] CHIP:DMG: }, + [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 + [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] disabled: true - label: - "TH_CR3 starts a commissioning process with TH_CE using the correct - PAKEVerifier" - PICS: CADMIN.C.C0000 + "Before the expiration of PIXIT.CADMIN.CwDuration seconds that was set + in step 14, TH_CR2 opens a second commissioning window on DUT_CE using + a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" + PICS: CADMIN.S.C01.Rsp verification: | - 1. On 3rdd controller using chip-tool connect using correct passcode + On the 2nd controller using chip tool, open commissioning window using BCM before timer expiry from above step - ./chip-tool pairing code 1 36177160938 (With wrong manual code) + ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 - verify you got the following message in the TH log - CHIP:SC: PASESession timed out while waiting for a response from the peer. Expected message type was 33 - CHIP:TOO: Secure Pairing Failed - CHIP:TOO: Pairing Failure: ../../third_party/connectedhomeip/src/protocols/secure_channel/PASESession.cpp:324: CHIP Error 0x00000032: Timeout + CHIP:DMG: InvokeResponseMessage = + [1650527622.373450][15824:15829] CHIP:DMG: { + [1650527622.373531][15824:15829] CHIP:DMG: suppressResponse = false, + [1650527622.373628][15824:15829] CHIP:DMG: InvokeResponseIBs = + [1650527622.373734][15824:15829] CHIP:DMG: [ + [1650527622.373817][15824:15829] CHIP:DMG: InvokeResponseIB = + [1650527622.373913][15824:15829] CHIP:DMG: { + [1650527622.374001][15824:15829] CHIP:DMG: CommandStatusIB = + [1650527622.374087][15824:15829] CHIP:DMG: { + [1650527622.374182][15824:15829] CHIP:DMG: CommandPathIB = + [1650527622.374296][15824:15829] CHIP:DMG: { + [1650527622.374382][15824:15829] CHIP:DMG: EndpointId = 0x0, + [1650527622.374490][15824:15829] CHIP:DMG: ClusterId = 0x3c, + [1650527622.374593][15824:15829] CHIP:DMG: CommandId = 0x1, + [1650527622.374682][15824:15829] CHIP:DMG: }, + [1650527622.374799][15824:15829] CHIP:DMG: + [1650527622.374896][15824:15829] CHIP:DMG: StatusIB = + [1650527622.374979][15824:15829] CHIP:DMG: { + [1650527622.375086][15824:15829] CHIP:DMG: status = 0x01 (FAILURE), + [1650527622.375236][15824:15829] CHIP:DMG: cluster-status = 0x1, + [1650527622.375320][15824:15829] CHIP:DMG: }, + [1650527622.375426][15824:15829] CHIP:DMG: + [1650527622.375527][15824:15829] CHIP:DMG: }, + [1650527622.375616][15824:15829] CHIP:DMG: + [1650527622.375704][15824:15829] CHIP:DMG: }, + [1650527622.375786][15824:15829] CHIP:DMG: + [1650527622.375864][15824:15829] CHIP:DMG: ], + [1650527622.375940][15824:15829] CHIP:DMG: + [1650527622.376000][15824:15829] CHIP:DMG: InteractionModelRevision = 1 + [1650527622.376058][15824:15829] CHIP:DMG: }, + [1650527622.376202][15824:15829] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x1 + [1650527622.376278][15824:15829] CHIP:TOO: Error: IM Error 0x00000601: Cluster-specific error: 0x01 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_12.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_12.yaml index e4052ba9353710..0e02604237b626 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_12.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_12.yaml @@ -14,7 +14,7 @@ # Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default name: - 24.1.12. [TC-CADMIN-1.12] Open commissioning window on DUT twice using ECM + 25.1.12. [TC-CADMIN-1.12] Open commissioning window on DUT twice using ECM then BCM [DUT - Commissioner] config: @@ -23,19 +23,198 @@ config: endpoint: 0 tests: - - label: "TH_CR2 starts a commissioning process with TH_CE" + - label: "DUT_CR1 starts a commissioning process with TH_CE" + PICS: CADMIN.C verification: | - "1. Provision the device using 2nd controller chip tool on the raspi (use above instructions) + "1. Provision the device using your DUT controller (use above instructions) , + " disabled: true - label: - "TH_CR2 sends command to TH_CE to open a commissioning window with a - commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" - PICS: CADMIN.C.C0001 + "DUT_CR1 sends command to TH_CE to open a commissioning window with a + commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM and + TH_CR3 Commissions with TH_CE" + PICS: CADMIN.C.C00.Tx verification: | - On the 2nd controller using chip tool, open commissioning window using BCM + On your DUT controller, open commissioning window using ECM + + Below is the example is using chip tool as controller + ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 + + [1635874557.409509][4549:4554] CHIP:SC: Success status report received. Session was established + [1635874557.409553][4549:4554] CHIP:IN: New secure session created for device 0x0000000000000001, key 76!! + [1635874557.409649][4549:4554] CHIP:CTL: OpenCommissioningWindow for device ID 1 + [1635874557.416929][4549:4554] CHIP:DMG: ICR moving to [AddingComm] + [1635874557.417092][4549:4554] CHIP:DMG: ICR moving to [AddedComma] + [1635874557.417215][4549:4554] CHIP:IN: Prepared encrypted message 0xaaaac5947d10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 5541i with MessageCounter:0. + [1635874557.417271][4549:4554] CHIP:IN: Sending encrypted msg 0xaaaac5947d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 16129075 msec + [1635874557.417449][4549:4554] CHIP:DMG: ICR moving to [CommandSen] + [1635874557.417505][4549:4554] CHIP:CTL: Manual pairing code: [35484132896] + [1635874557.417577][4549:4554] CHIP:CTL: SetupQRCode: [MT:00000CQM00AT-F5A510] + + + + On 3rd controller using chip tool connect using manual code + + ./chip-tool pairing code 1 35484132896 + + Verify you got below message + Device commissioning completed with success + disabled: true + + - label: + "DUT_CR1 sends command to TH_CE to open a commissioning window with a + commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM and + TH_CR2 Commissions with TH_CE" + PICS: CADMIN.C.C00.Tx + verification: | + On your DUT controller, open commissioning window using ECM + + Below is the example is using chip tool as controller + ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 + + [1635874557.409509][4549:4554] CHIP:SC: Success status report received. Session was established + [1635874557.409553][4549:4554] CHIP:IN: New secure session created for device 0x0000000000000001, key 76!! + [1635874557.409649][4549:4554] CHIP:CTL: OpenCommissioningWindow for device ID 1 + [1635874557.416929][4549:4554] CHIP:DMG: ICR moving to [AddingComm] + [1635874557.417092][4549:4554] CHIP:DMG: ICR moving to [AddedComma] + [1635874557.417215][4549:4554] CHIP:IN: Prepared encrypted message 0xaaaac5947d10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 5541i with MessageCounter:0. + [1635874557.417271][4549:4554] CHIP:IN: Sending encrypted msg 0xaaaac5947d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 16129075 msec + [1635874557.417449][4549:4554] CHIP:DMG: ICR moving to [CommandSen] + [1635874557.417505][4549:4554] CHIP:CTL: Manual pairing code: [35484132896] + [1635874557.417577][4549:4554] CHIP:CTL: SetupQRCode: [MT:00000CQM00AT-F5A510] + + + + On 2nd controller using chip tool connect using manual code + + ./chip-tool pairing code 1 35484132896 + + Verify you got below message + Device commissioning completed with success + disabled: true + + - label: + "DUT_CR1 sends command to TH_CE to open a commissioning window with a + commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" + PICS: CADMIN.C.C00.Tx + verification: | + On your DUT controller, open commissioning window using ECM + + Below is the example is using chip tool as controller + ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 + + [1635874557.409509][4549:4554] CHIP:SC: Success status report received. Session was established + [1635874557.409553][4549:4554] CHIP:IN: New secure session created for device 0x0000000000000001, key 76!! + [1635874557.409649][4549:4554] CHIP:CTL: OpenCommissioningWindow for device ID 1 + [1635874557.416929][4549:4554] CHIP:DMG: ICR moving to [AddingComm] + [1635874557.417092][4549:4554] CHIP:DMG: ICR moving to [AddedComma] + [1635874557.417215][4549:4554] CHIP:IN: Prepared encrypted message 0xaaaac5947d10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 5541i with MessageCounter:0. + [1635874557.417271][4549:4554] CHIP:IN: Sending encrypted msg 0xaaaac5947d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 16129075 msec + [1635874557.417449][4549:4554] CHIP:DMG: ICR moving to [CommandSen] + [1635874557.417505][4549:4554] CHIP:CTL: Manual pairing code: [35484132896] + [1635874557.417577][4549:4554] CHIP:CTL: SetupQRCode: [MT:00000CQM00AT-F5A510] + disabled: true + + - label: + "Before the expiration of PIXIT.CADMIN.CwDuration seconds that was set + in step 4, DUT_CR1 sends command to TH_CE to open a 2nd commissioning + window with a commissioning timeout of PIXIT.CADMIN.CwDuration seconds + using ECM" + PICS: CADMIN.C.C00.Tx + verification: | + On your DUT controller, open commissioning window using ECM before the timer expiry from the above step + + Below is the example is using chip tool as controller + ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 + + CHIP:DMG: InvokeResponseMessage = + [1650527622.373450][15824:15829] CHIP:DMG: { + [1650527622.373531][15824:15829] CHIP:DMG: suppressResponse = false, + [1650527622.373628][15824:15829] CHIP:DMG: InvokeResponseIBs = + [1650527622.373734][15824:15829] CHIP:DMG: [ + [1650527622.373817][15824:15829] CHIP:DMG: InvokeResponseIB = + [1650527622.373913][15824:15829] CHIP:DMG: { + [1650527622.374001][15824:15829] CHIP:DMG: CommandStatusIB = + [1650527622.374087][15824:15829] CHIP:DMG: { + [1650527622.374182][15824:15829] CHIP:DMG: CommandPathIB = + [1650527622.374296][15824:15829] CHIP:DMG: { + [1650527622.374382][15824:15829] CHIP:DMG: EndpointId = 0x0, + [1650527622.374490][15824:15829] CHIP:DMG: ClusterId = 0x3c, + [1650527622.374593][15824:15829] CHIP:DMG: CommandId = 0x1, + [1650527622.374682][15824:15829] CHIP:DMG: }, + [1650527622.374799][15824:15829] CHIP:DMG: + [1650527622.374896][15824:15829] CHIP:DMG: StatusIB = + [1650527622.374979][15824:15829] CHIP:DMG: { + [1650527622.375086][15824:15829] CHIP:DMG: status = 0x01 (FAILURE), + [1650527622.375236][15824:15829] CHIP:DMG: cluster-status = 0x1, + [1650527622.375320][15824:15829] CHIP:DMG: }, + [1650527622.375426][15824:15829] CHIP:DMG: + [1650527622.375527][15824:15829] CHIP:DMG: }, + [1650527622.375616][15824:15829] CHIP:DMG: + [1650527622.375704][15824:15829] CHIP:DMG: }, + [1650527622.375786][15824:15829] CHIP:DMG: + [1650527622.375864][15824:15829] CHIP:DMG: ], + [1650527622.375940][15824:15829] CHIP:DMG: + [1650527622.376000][15824:15829] CHIP:DMG: InteractionModelRevision = 1 + [1650527622.376058][15824:15829] CHIP:DMG: }, + [1650527622.376202][15824:15829] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x1 + [1650527622.376278][15824:15829] CHIP:TOO: Error: IM Error 0x00000601: Cluster-specific error: 0x01 + disabled: true + + - label: "DUT_CR1 sends command to TH_CE to read the list of Fabrics" + PICS: OPCREDS.C.A0001 + verification: | + On 1st controller using chip tool, read fabrics list + + ./chip-tool operationalcredentials read fabrics 1234 0 --fabric-filtered 0 + + CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 268962768 + [1650527361.425870][15792:15797] CHIP:TOO: Fabrics: 3 entries + [1650527361.426777][15792:15797] CHIP:TOO: [1]: { + [1650527361.426859][15792:15797] CHIP:TOO: RootPublicKey: 0429A71383F336D80918C9EC655112513E428C073AF7FB44820EC793535302C6E3825C56EE6DD1A683EAA7B59E3F261B46FFA24A6D911E8D88839F4C1B3C84BA01 + [1650527361.426923][15792:15797] CHIP:TOO: VendorId: 65521 + [1650527361.426979][15792:15797] CHIP:TOO: FabricId: 1 + [1650527361.427033][15792:15797] CHIP:TOO: NodeId: 1 + [1650527361.427088][15792:15797] CHIP:TOO: Label: + [1650527361.427166][15792:15797] CHIP:TOO: FabricIndex: 1 + [1650527361.427376][15792:15797] CHIP:TOO: } + [1650527361.427464][15792:15797] CHIP:TOO: [2]: { + [1650527361.427532][15792:15797] CHIP:TOO: RootPublicKey: 04781BCEE70118049ED61DD5B4E401CF1A09D2F78AE7F5770BE5506AD24238E5E0777277DABAFD062659651C95CC2CA7DEAACE40DB579A946CC07CADB141BE05D7 + [1650527361.427595][15792:15797] CHIP:TOO: VendorId: 65521 + [1650527361.427649][15792:15797] CHIP:TOO: FabricId: 1 + [1650527361.427703][15792:15797] CHIP:TOO: NodeId: 3 + [1650527361.427756][15792:15797] CHIP:TOO: Label: + [1650527361.427811][15792:15797] CHIP:TOO: FabricIndex: 2 + [1650527361.427868][15792:15797] CHIP:TOO: } + [1650527361.427943][15792:15797] CHIP:TOO: [3]: { + [1650527361.428008][15792:15797] CHIP:TOO: RootPublicKey: 0403EDB5B461030A34EF7EA2F9DB0D46A36185E4755C365AF9344C4959F049EF21D55EAB903A2C7FBFC305EEFA42989250D7517A73E6156062390A60C0D4C41EBD + [1650527361.428067][15792:15797] CHIP:TOO: VendorId: 65521 + [1650527361.428122][15792:15797] CHIP:TOO: FabricId: 1 + [1650527361.428176][15792:15797] CHIP:TOO: NodeId: 2 + [1650527361.428229][15792:15797] CHIP:TOO: Label: + [1650527361.428282][15792:15797] CHIP:TOO: FabricIndex: 3 + [1650527361.428335][15792:15797] CHIP:TOO: } + disabled: true + + - label: + "Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that was + set in step 5" + verification: | + Wait for the expiration of PIXIT_COMM_WIN seconds + disabled: true + + - label: + "DUT_CR1 sends command to TH_CE to re-opens a commissioning window + with a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using + BCM" + PICS: CADMIN.C.C01.Tx + verification: | + On your DUT controller, open commissioning window using BCM + + Below is the example when using chip tool as controller + ./chip-tool administratorcommissioning open-basic-commissioning-window 500 1 0 --timedInteractionTimeoutMs 1000 - ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 CHIP:DMG: InvokeResponseMessage = @@ -72,47 +251,182 @@ tests: disabled: true - label: - "Before the expiration of PIXIT.CADMIN.CwDuration set in step 2, set - up a DUT_CR1 to start attempting to do PASE to TH_CE and failing 20 - times. This can be done using a valid onboarding payload with an - incorrect setupcode" + "Before the expiration of PIXIT.CADMIN.CwDuration seconds that was set + in step 8, TH_CR3 sends command to TH_CE to open a 2nd commissioning + window with a commissioning timeout of PIXIT.CADMIN.CwDuration seconds + using BCM" + PICS: CADMIN.C.C01.Tx verification: | - On 2nd controller, using chip-tool connect using wrong passcode. Repeat the step for 20 times. + On the 3rd controller using chip tool, open commissioning window using BCM before the timer expiry from above step + + ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 + - ./chip-tool pairing onnetwork 1 20202019 --timeout 3 (With wrong passcode) - verify you got the following message in the TH log - CHIP:SC: PASESession timed out while waiting for a response from the peer. Expected message type was 33 - CHIP:TOO: Secure Pairing Failed - CHIP:TOO: Pairing Failure: ../../third_party/connectedhomeip/src/protocols/secure_channel/PASESession.cpp:324: CHIP Error 0x00000032: Timeout + + CHIP:DMG: InvokeResponseMessage = + [1650527622.373450][15824:15829] CHIP:DMG: { + [1650527622.373531][15824:15829] CHIP:DMG: suppressResponse = false, + [1650527622.373628][15824:15829] CHIP:DMG: InvokeResponseIBs = + [1650527622.373734][15824:15829] CHIP:DMG: [ + [1650527622.373817][15824:15829] CHIP:DMG: InvokeResponseIB = + [1650527622.373913][15824:15829] CHIP:DMG: { + [1650527622.374001][15824:15829] CHIP:DMG: CommandStatusIB = + [1650527622.374087][15824:15829] CHIP:DMG: { + [1650527622.374182][15824:15829] CHIP:DMG: CommandPathIB = + [1650527622.374296][15824:15829] CHIP:DMG: { + [1650527622.374382][15824:15829] CHIP:DMG: EndpointId = 0x0, + [1650527622.374490][15824:15829] CHIP:DMG: ClusterId = 0x3c, + [1650527622.374593][15824:15829] CHIP:DMG: CommandId = 0x1, + [1650527622.374682][15824:15829] CHIP:DMG: }, + [1650527622.374799][15824:15829] CHIP:DMG: + [1650527622.374896][15824:15829] CHIP:DMG: StatusIB = + [1650527622.374979][15824:15829] CHIP:DMG: { + [1650527622.375086][15824:15829] CHIP:DMG: status = 0x01 (FAILURE), + [1650527622.375236][15824:15829] CHIP:DMG: cluster-status = 0x1, + [1650527622.375320][15824:15829] CHIP:DMG: }, + [1650527622.375426][15824:15829] CHIP:DMG: + [1650527622.375527][15824:15829] CHIP:DMG: }, + [1650527622.375616][15824:15829] CHIP:DMG: + [1650527622.375704][15824:15829] CHIP:DMG: }, + [1650527622.375786][15824:15829] CHIP:DMG: + [1650527622.375864][15824:15829] CHIP:DMG: ], + [1650527622.375940][15824:15829] CHIP:DMG: + [1650527622.376000][15824:15829] CHIP:DMG: InteractionModelRevision = 1 + [1650527622.376058][15824:15829] CHIP:DMG: }, + [1650527622.376202][15824:15829] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x1 + [1650527622.376278][15824:15829] CHIP:TOO: Error: IM Error 0x00000601: Cluster-specific error: 0x01 disabled: true - label: - "Before the expiration of PIXIT.CADMIN.CwDuration set in step 2, - DUT_CR1 attempts to do PASE to DUT_CE using the correct onboarding - payload" + "Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that was + set in step 9" verification: | - On 2nd controller, using chip tool connect using correct passcode. + Wait for the expiration of PIXIT_COMM_WIN seconds + disabled: true - ./chip-tool pairing onnetwork 1 20202021 (correct passcode) + - label: "DUT_CR1 sends command to TH_CE to read the list of Fabrics" + PICS: OPCREDS.C.A0001 + verification: | + On 1st controller using chip tool, read fabrics list - verify you got the following message in the TH log - CHIP:SC: PASESession timed out while waiting for a response from the peer. Expected message type was 33 - CHIP:TOO: Secure Pairing Failed - CHIP:TOO: Pairing Failure: ../../third_party/connectedhomeip/src/protocols/secure_channel/PASESession.cpp:324: CHIP Error 0x00000032: Timeout + ./chip-tool operationalcredentials read fabrics 1234 0 --fabric-filtered 0 + + CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 268962768 + [1650527361.425870][15792:15797] CHIP:TOO: Fabrics: 3 entries + [1650527361.426777][15792:15797] CHIP:TOO: [1]: { + [1650527361.426859][15792:15797] CHIP:TOO: RootPublicKey: 0429A71383F336D80918C9EC655112513E428C073AF7FB44820EC793535302C6E3825C56EE6DD1A683EAA7B59E3F261B46FFA24A6D911E8D88839F4C1B3C84BA01 + [1650527361.426923][15792:15797] CHIP:TOO: VendorId: 65521 + [1650527361.426979][15792:15797] CHIP:TOO: FabricId: 1 + [1650527361.427033][15792:15797] CHIP:TOO: NodeId: 1 + [1650527361.427088][15792:15797] CHIP:TOO: Label: + [1650527361.427166][15792:15797] CHIP:TOO: FabricIndex: 1 + [1650527361.427376][15792:15797] CHIP:TOO: } + [1650527361.427464][15792:15797] CHIP:TOO: [2]: { + [1650527361.427532][15792:15797] CHIP:TOO: RootPublicKey: 04781BCEE70118049ED61DD5B4E401CF1A09D2F78AE7F5770BE5506AD24238E5E0777277DABAFD062659651C95CC2CA7DEAACE40DB579A946CC07CADB141BE05D7 + [1650527361.427595][15792:15797] CHIP:TOO: VendorId: 65521 + [1650527361.427649][15792:15797] CHIP:TOO: FabricId: 1 + [1650527361.427703][15792:15797] CHIP:TOO: NodeId: 3 + [1650527361.427756][15792:15797] CHIP:TOO: Label: + [1650527361.427811][15792:15797] CHIP:TOO: FabricIndex: 2 + [1650527361.427868][15792:15797] CHIP:TOO: } + [1650527361.427943][15792:15797] CHIP:TOO: [3]: { + [1650527361.428008][15792:15797] CHIP:TOO: RootPublicKey: 0403EDB5B461030A34EF7EA2F9DB0D46A36185E4755C365AF9344C4959F049EF21D55EAB903A2C7FBFC305EEFA42989250D7517A73E6156062390A60C0D4C41EBD + [1650527361.428067][15792:15797] CHIP:TOO: VendorId: 65521 + [1650527361.428122][15792:15797] CHIP:TOO: FabricId: 1 + [1650527361.428176][15792:15797] CHIP:TOO: NodeId: 2 + [1650527361.428229][15792:15797] CHIP:TOO: Label: + [1650527361.428282][15792:15797] CHIP:TOO: FabricIndex: 3 + [1650527361.428335][15792:15797] CHIP:TOO: } disabled: true - label: - "TH_CR3 starts a commissioning process with TH_CE using the correct - PAKEVerifier" - PICS: CADMIN.C.C0001 + "DUT_CR1 sends command to TH_CE to open a commissioning window with a + commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" + PICS: CADMIN.C.C01.Tx verification: | - 1. On 3rd controller using chip-tool connect using correct passcode + On your DUT controller, open commissioning window using BCM - ./chip-tool pairing onnetwork 1 20202021 + Below is the example when using chip tool as controller + ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 - verify you got the following message in the TH log - CHIP:SC: PASESession timed out while waiting for a response from the peer. Expected message type was 33 - CHIP:TOO: Secure Pairing Failed - CHIP:TOO: Pairing Failure: ../../third_party/connectedhomeip/src/protocols/secure_channel/PASESession.cpp:324: CHIP Error 0x00000032: Timeout + CHIP:DMG: InvokeResponseMessage = + [1650278416.248379][11064:11069] CHIP:DMG: { + [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, + [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = + [1650278416.248570][11064:11069] CHIP:DMG: [ + [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = + [1650278416.248718][11064:11069] CHIP:DMG: { + [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = + [1650278416.248860][11064:11069] CHIP:DMG: { + [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = + [1650278416.249011][11064:11069] CHIP:DMG: { + [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, + [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, + [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, + [1650278416.249347][11064:11069] CHIP:DMG: }, + [1650278416.249430][11064:11069] CHIP:DMG: + [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = + [1650278416.249581][11064:11069] CHIP:DMG: { + [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), + [1650278416.249738][11064:11069] CHIP:DMG: }, + [1650278416.249823][11064:11069] CHIP:DMG: + [1650278416.249889][11064:11069] CHIP:DMG: }, + [1650278416.249969][11064:11069] CHIP:DMG: + [1650278416.250035][11064:11069] CHIP:DMG: }, + [1650278416.250113][11064:11069] CHIP:DMG: + [1650278416.250169][11064:11069] CHIP:DMG: ], + [1650278416.250241][11064:11069] CHIP:DMG: + [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 + [1650278416.250355][11064:11069] CHIP:DMG: }, + [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 + [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] + disabled: true + + - label: + "Before the expiration of PIXIT.CADMIN.CwDuration seconds that was set + in step 12, TH_CR2 sends command to open a second commissioning window + on TH_CE using a commissioning timeout of PIXIT.CADMIN.CwDuration + seconds using BCM" + PICS: CADMIN.C.C01.Tx + verification: | + On the 2nd controller using chip tool, open commissioning window using BCM before the timer expiry from above step + + ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 + + + + + CHIP:DMG: InvokeResponseMessage = + [1650527622.373450][15824:15829] CHIP:DMG: { + [1650527622.373531][15824:15829] CHIP:DMG: suppressResponse = false, + [1650527622.373628][15824:15829] CHIP:DMG: InvokeResponseIBs = + [1650527622.373734][15824:15829] CHIP:DMG: [ + [1650527622.373817][15824:15829] CHIP:DMG: InvokeResponseIB = + [1650527622.373913][15824:15829] CHIP:DMG: { + [1650527622.374001][15824:15829] CHIP:DMG: CommandStatusIB = + [1650527622.374087][15824:15829] CHIP:DMG: { + [1650527622.374182][15824:15829] CHIP:DMG: CommandPathIB = + [1650527622.374296][15824:15829] CHIP:DMG: { + [1650527622.374382][15824:15829] CHIP:DMG: EndpointId = 0x0, + [1650527622.374490][15824:15829] CHIP:DMG: ClusterId = 0x3c, + [1650527622.374593][15824:15829] CHIP:DMG: CommandId = 0x1, + [1650527622.374682][15824:15829] CHIP:DMG: }, + [1650527622.374799][15824:15829] CHIP:DMG: + [1650527622.374896][15824:15829] CHIP:DMG: StatusIB = + [1650527622.374979][15824:15829] CHIP:DMG: { + [1650527622.375086][15824:15829] CHIP:DMG: status = 0x01 (FAILURE), + [1650527622.375236][15824:15829] CHIP:DMG: cluster-status = 0x1, + [1650527622.375320][15824:15829] CHIP:DMG: }, + [1650527622.375426][15824:15829] CHIP:DMG: + [1650527622.375527][15824:15829] CHIP:DMG: }, + [1650527622.375616][15824:15829] CHIP:DMG: + [1650527622.375704][15824:15829] CHIP:DMG: }, + [1650527622.375786][15824:15829] CHIP:DMG: + [1650527622.375864][15824:15829] CHIP:DMG: ], + [1650527622.375940][15824:15829] CHIP:DMG: + [1650527622.376000][15824:15829] CHIP:DMG: InteractionModelRevision = 1 + [1650527622.376058][15824:15829] CHIP:DMG: }, + [1650527622.376202][15824:15829] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x1 + [1650527622.376278][15824:15829] CHIP:TOO: Error: IM Error 0x00000601: Cluster-specific error: 0x01 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_13.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_13.yaml index 662ba4083b4fb7..18a7b80de77266 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_13.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_13.yaml @@ -42,6 +42,7 @@ tests: identity: "alpha" cluster: "DelayCommands" command: "WaitForCommissionee" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -52,7 +53,7 @@ tests: cluster: "AdministratorCommissioning" command: "OpenBasicCommissioningWindow" timedInteractionTimeoutMs: 10000 - PICS: CADMIN.S.C0001 + PICS: CADMIN.S.C01.Rsp arguments: values: - name: "CommissioningTimeout" @@ -73,6 +74,7 @@ tests: identity: "gamma" cluster: "DelayCommands" command: "WaitForCommissionee" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -83,7 +85,7 @@ tests: cluster: "AdministratorCommissioning" command: "OpenBasicCommissioningWindow" timedInteractionTimeoutMs: 10000 - PICS: CADMIN.S.C0001 + PICS: CADMIN.S.C01.Rsp arguments: values: - name: "CommissioningTimeout" @@ -114,7 +116,7 @@ tests: cluster: "AdministratorCommissioning" command: "OpenBasicCommissioningWindow" timedInteractionTimeoutMs: 10000 - PICS: CADMIN.S.C0001 + PICS: CADMIN.S.C01.Rsp arguments: values: - name: "CommissioningTimeout" @@ -125,7 +127,7 @@ tests: cluster: "AdministratorCommissioning" command: "OpenCommissioningWindow" timedInteractionTimeoutMs: 10000 - PICS: CADMIN.S.C0000 + PICS: CADMIN.S.C00.Rsp arguments: values: - name: "CommissioningTimeout" @@ -171,7 +173,7 @@ tests: cluster: "AdministratorCommissioning" command: "OpenCommissioningWindow" timedInteractionTimeoutMs: 10000 - PICS: CADMIN.S.C0000 + PICS: CADMIN.S.C00.Rsp arguments: values: - name: "CommissioningTimeout" @@ -190,7 +192,7 @@ tests: cluster: "AdministratorCommissioning" command: "OpenCommissioningWindow" timedInteractionTimeoutMs: 10000 - PICS: CADMIN.S.C0000 + PICS: CADMIN.S.C00.Rsp arguments: values: - name: "CommissioningTimeout" @@ -236,7 +238,7 @@ tests: cluster: "AdministratorCommissioning" command: "OpenCommissioningWindow" timedInteractionTimeoutMs: 10000 - PICS: CADMIN.S.C0000 + PICS: CADMIN.S.C00.Rsp arguments: values: - name: "CommissioningTimeout" @@ -255,7 +257,7 @@ tests: cluster: "AdministratorCommissioning" command: "OpenCommissioningWindow" timedInteractionTimeoutMs: 10000 - PICS: CADMIN.S.C0000 + PICS: CADMIN.S.C00.Rsp arguments: values: - name: "CommissioningTimeout" diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_14.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_14.yaml index 23dc545208f5f9..db9aab7da4dcc5 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_14.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_14.yaml @@ -14,7 +14,7 @@ # Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default name: - 24.1.14. [TC-CADMIN-1.14] Open commissioning window twice on DUT using BCM + 3.1.14. [TC-CADMIN-1.14] Open commissioning window twice on DUT using BCM then ECM [DUT - Commissioner] config: @@ -24,6 +24,7 @@ config: tests: - label: "DUT_CR1 starts a commissioning process with TH_CE" + PICS: CADMIN.C verification: | "1. Provision the device using your DUT controller (use above instructions) , " @@ -31,13 +32,13 @@ tests: - label: "DUT_CR1 sends command to TH_CE to open a commissioning window with a - commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM and + commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM and TH_CR3 Commissions with TH_CE" - PICS: CADMIN.C.C0000 + PICS: CADMIN.C.C01.Tx verification: | On your DUT controller, open commissioning window using ECM - Below is the example is using chip tool as controller + Below is the example while using chip tool as controller ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 [1635874557.409509][4549:4554] CHIP:SC: Success status report received. Session was established @@ -52,7 +53,6 @@ tests: [1635874557.417577][4549:4554] CHIP:CTL: SetupQRCode: [MT:00000CQM00AT-F5A510] - On 3rd controller using chip tool connect using manual code ./chip-tool pairing code 1 35484132896 @@ -63,13 +63,13 @@ tests: - label: "DUT_CR1 sends command to TH_CE to open a commissioning window with a - commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM and + commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM and TH_CR2 Commissions with TH_CE" - PICS: CADMIN.C.C0000 + PICS: CADMIN.C.C01.Tx verification: | On your DUT controller, open commissioning window using ECM - Below is the example is using chip tool as controller + Below is the example while using chip tool as controller ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 [1635874557.409509][4549:4554] CHIP:SC: Success status report received. Session was established @@ -83,10 +83,7 @@ tests: [1635874557.417505][4549:4554] CHIP:CTL: Manual pairing code: [35484132896] [1635874557.417577][4549:4554] CHIP:CTL: SetupQRCode: [MT:00000CQM00AT-F5A510] - - On 2nd controller using chip tool connect using manual code - ./chip-tool pairing code 1 35484132896 Verify you got below message @@ -95,36 +92,58 @@ tests: - label: "DUT_CR1 sends command to TH_CE to open a commissioning window with a - commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" - PICS: CADMIN.C.C0000 + commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" + PICS: CADMIN.C.C01.Tx verification: | - On your DUT controller, open commissioning window using ECM + On your DUT controller, open commissioning window using BCM - Below is the example is using chip tool as controller - ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 + Below is the example while using chip tool as controller + ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 - [1635874557.409509][4549:4554] CHIP:SC: Success status report received. Session was established - [1635874557.409553][4549:4554] CHIP:IN: New secure session created for device 0x0000000000000001, key 76!! - [1635874557.409649][4549:4554] CHIP:CTL: OpenCommissioningWindow for device ID 1 - [1635874557.416929][4549:4554] CHIP:DMG: ICR moving to [AddingComm] - [1635874557.417092][4549:4554] CHIP:DMG: ICR moving to [AddedComma] - [1635874557.417215][4549:4554] CHIP:IN: Prepared encrypted message 0xaaaac5947d10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 5541i with MessageCounter:0. - [1635874557.417271][4549:4554] CHIP:IN: Sending encrypted msg 0xaaaac5947d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 16129075 msec - [1635874557.417449][4549:4554] CHIP:DMG: ICR moving to [CommandSen] - [1635874557.417505][4549:4554] CHIP:CTL: Manual pairing code: [35484132896] - [1635874557.417577][4549:4554] CHIP:CTL: SetupQRCode: [MT:00000CQM00AT-F5A510] + CHIP:DMG: InvokeResponseMessage = + [1650278416.248379][11064:11069] CHIP:DMG: { + [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, + [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = + [1650278416.248570][11064:11069] CHIP:DMG: [ + [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = + [1650278416.248718][11064:11069] CHIP:DMG: { + [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = + [1650278416.248860][11064:11069] CHIP:DMG: { + [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = + [1650278416.249011][11064:11069] CHIP:DMG: { + [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, + [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, + [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, + [1650278416.249347][11064:11069] CHIP:DMG: }, + [1650278416.249430][11064:11069] CHIP:DMG: + [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = + [1650278416.249581][11064:11069] CHIP:DMG: { + [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), + [1650278416.249738][11064:11069] CHIP:DMG: }, + [1650278416.249823][11064:11069] CHIP:DMG: + [1650278416.249889][11064:11069] CHIP:DMG: }, + [1650278416.249969][11064:11069] CHIP:DMG: + [1650278416.250035][11064:11069] CHIP:DMG: }, + [1650278416.250113][11064:11069] CHIP:DMG: + [1650278416.250169][11064:11069] CHIP:DMG: ], + [1650278416.250241][11064:11069] CHIP:DMG: + [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 + [1650278416.250355][11064:11069] CHIP:DMG: }, + [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 + [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] disabled: true - label: - "Before the expiration of PIXIT.CADMIN.CwDuration seconds that was set - in step 4, DUT_CR1 sends command to TH_CE to open a 2nd commissioning - window with a commissioning timeout of PIXIT.CADMIN.CwDuration seconds - using ECM" - PICS: CADMIN.C.C0000 + "Before the expiration of PIXIT.CADMIN.CwDuration seconds that is set + in step 4, DUT_CR1 sends command to TH_CE to TH_CE to open a 2nd + commissioning window with a commissioning timeout of + PIXIT.CADMIN.CwDuration seconds using ECM" + PICS: CADMIN.C.C00.Tx verification: | - On your DUT controller, open commissioning window using ECM before the timer expiry from the above step + On your DUT controller, open commissioning window using ECM before the timer expiry of the above step + + Below is the example while using chip tool as controller - Below is the example is using chip tool as controller ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 CHIP:DMG: InvokeResponseMessage = @@ -197,7 +216,7 @@ tests: disabled: true - label: - "Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that was + "Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that is set in step 5" verification: | Wait for the expiration of PIXIT_COMM_WIN seconds @@ -206,104 +225,73 @@ tests: - label: "DUT_CR1 sends command to TH_CE to re-opens a commissioning window with a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using - BCM" - PICS: CADMIN.C.C0001 + ECM" + PICS: CADMIN.C.C00.Tx verification: | - On your DUT controller, open commissioning window using BCM - - Below is the example when using chip tool as controller - ./chip-tool administratorcommissioning open-basic-commissioning-window 500 1 0 --timedInteractionTimeoutMs 1000 + On your DUT controller, open commissioning window using ECM + Below is the example while using chip tool as controller + ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 - CHIP:DMG: InvokeResponseMessage = - [1650278416.248379][11064:11069] CHIP:DMG: { - [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, - [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = - [1650278416.248570][11064:11069] CHIP:DMG: [ - [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = - [1650278416.248718][11064:11069] CHIP:DMG: { - [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = - [1650278416.248860][11064:11069] CHIP:DMG: { - [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = - [1650278416.249011][11064:11069] CHIP:DMG: { - [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, - [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, - [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, - [1650278416.249347][11064:11069] CHIP:DMG: }, - [1650278416.249430][11064:11069] CHIP:DMG: - [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = - [1650278416.249581][11064:11069] CHIP:DMG: { - [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), - [1650278416.249738][11064:11069] CHIP:DMG: }, - [1650278416.249823][11064:11069] CHIP:DMG: - [1650278416.249889][11064:11069] CHIP:DMG: }, - [1650278416.249969][11064:11069] CHIP:DMG: - [1650278416.250035][11064:11069] CHIP:DMG: }, - [1650278416.250113][11064:11069] CHIP:DMG: - [1650278416.250169][11064:11069] CHIP:DMG: ], - [1650278416.250241][11064:11069] CHIP:DMG: - [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 - [1650278416.250355][11064:11069] CHIP:DMG: }, - [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 - [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] + [1635926152.609542][10140:10145] CHIP:SC: Success status report received. Session was established + [1635926152.609582][10140:10145] CHIP:IN: New secure session created for device 0x0000000000000001, key 42!! + [1635926152.609695][10140:10145] CHIP:CTL: OpenCommissioningWindow for device ID 1 + [1635926152.617050][10140:10145] CHIP:DMG: ICR moving to [AddingComm] + [1635926152.617103][10140:10145] CHIP:DMG: ICR moving to [AddedComma] + [1635926152.617228][10140:10145] CHIP:IN: Prepared encrypted message 0xaaab02ca7d10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 6544i with MessageCounter:0. + [1635926152.617286][10140:10145] CHIP:IN: Sending encrypted msg 0xaaab02ca7d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 13888103 msec + [1635926152.617454][10140:10145] CHIP:DMG: ICR moving to [CommandSen] + [1635926152.617523][10140:10145] CHIP:CTL: Manual pairing code: [35484132896] + [1635926152.617611][10140:10145] CHIP:CTL: SetupQRCode: [MT:00000CQM00QHQP0JG00] disabled: true - label: - "Before the expiration of PIXIT.CADMIN.CwDuration seconds that was set + "Before the expiration of PIXIT.CADMIN.CwDuration seconds that is set in step 8, TH_CR3 sends command to TH_CE to open a 2nd commissioning window with a commissioning timeout of PIXIT.CADMIN.CwDuration seconds - using BCM" - PICS: CADMIN.C.C0001 + using ECM" + PICS: CADMIN.C.C00.Tx verification: | - On the 3rd controller using chip tool, open commissioning window using BCM before the timer expiry from above step - - ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 - + On the 3rd controller using chip tool, open commissioning window using ECM + ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 CHIP:DMG: InvokeResponseMessage = [1650527622.373450][15824:15829] CHIP:DMG: { - [1650527622.373531][15824:15829] CHIP:DMG: suppressResponse = false, - [1650527622.373628][15824:15829] CHIP:DMG: InvokeResponseIBs = - [1650527622.373734][15824:15829] CHIP:DMG: [ - [1650527622.373817][15824:15829] CHIP:DMG: InvokeResponseIB = - [1650527622.373913][15824:15829] CHIP:DMG: { - [1650527622.374001][15824:15829] CHIP:DMG: CommandStatusIB = - [1650527622.374087][15824:15829] CHIP:DMG: { - [1650527622.374182][15824:15829] CHIP:DMG: CommandPathIB = - [1650527622.374296][15824:15829] CHIP:DMG: { - [1650527622.374382][15824:15829] CHIP:DMG: EndpointId = 0x0, - [1650527622.374490][15824:15829] CHIP:DMG: ClusterId = 0x3c, - [1650527622.374593][15824:15829] CHIP:DMG: CommandId = 0x1, - [1650527622.374682][15824:15829] CHIP:DMG: }, + [1650527622.373531][15824:15829] CHIP:DMG: suppressResponse = false, + [1650527622.373628][15824:15829] CHIP:DMG: InvokeResponseIBs = + [1650527622.373734][15824:15829] CHIP:DMG: [ + [1650527622.373817][15824:15829] CHIP:DMG: InvokeResponseIB = + [1650527622.373913][15824:15829] CHIP:DMG: { + [1650527622.374001][15824:15829] CHIP:DMG: CommandStatusIB = + [1650527622.374087][15824:15829] CHIP:DMG: { + [1650527622.374182][15824:15829] CHIP:DMG: CommandPathIB = + [1650527622.374296][15824:15829] CHIP:DMG: { + [1650527622.374382][15824:15829] CHIP:DMG: EndpointId = 0x0, + [1650527622.374490][15824:15829] CHIP:DMG: ClusterId = 0x3c, + [1650527622.374593][15824:15829] CHIP:DMG: CommandId = 0x1, + [1650527622.374682][15824:15829] CHIP:DMG: }, [1650527622.374799][15824:15829] CHIP:DMG: - [1650527622.374896][15824:15829] CHIP:DMG: StatusIB = - [1650527622.374979][15824:15829] CHIP:DMG: { - [1650527622.375086][15824:15829] CHIP:DMG: status = 0x01 (FAILURE), - [1650527622.375236][15824:15829] CHIP:DMG: cluster-status = 0x1, - [1650527622.375320][15824:15829] CHIP:DMG: }, + [1650527622.374896][15824:15829] CHIP:DMG: StatusIB = + [1650527622.374979][15824:15829] CHIP:DMG: { + [1650527622.375086][15824:15829] CHIP:DMG: status = 0x01 (FAILURE), + [1650527622.375236][15824:15829] CHIP:DMG: cluster-status = 0x1, + [1650527622.375320][15824:15829] CHIP:DMG: }, [1650527622.375426][15824:15829] CHIP:DMG: - [1650527622.375527][15824:15829] CHIP:DMG: }, + [1650527622.375527][15824:15829] CHIP:DMG: }, [1650527622.375616][15824:15829] CHIP:DMG: - [1650527622.375704][15824:15829] CHIP:DMG: }, + [1650527622.375704][15824:15829] CHIP:DMG: }, [1650527622.375786][15824:15829] CHIP:DMG: - [1650527622.375864][15824:15829] CHIP:DMG: ], + [1650527622.375864][15824:15829] CHIP:DMG: ], [1650527622.375940][15824:15829] CHIP:DMG: - [1650527622.376000][15824:15829] CHIP:DMG: InteractionModelRevision = 1 + [1650527622.376000][15824:15829] CHIP:DMG: InteractionModelRevision = 1 [1650527622.376058][15824:15829] CHIP:DMG: }, [1650527622.376202][15824:15829] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x1 [1650527622.376278][15824:15829] CHIP:TOO: Error: IM Error 0x00000601: Cluster-specific error: 0x01 disabled: true - - label: - "Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that was - set in step 9" - verification: | - Wait for the expiration of PIXIT_COMM_WIN seconds - disabled: true - - label: "DUT_CR1 sends command to TH_CE to read the list of Fabrics" PICS: OPCREDS.C.A0001 verification: | @@ -340,91 +328,75 @@ tests: disabled: true - label: - "DUT_CR1 sends command to TH_CE to open a commissioning window with a - commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" - PICS: CADMIN.C.C0001 + "Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that is + set in step 9" verification: | - On your DUT controller, open commissioning window using BCM - - Below is the example when using chip tool as controller - ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 - - CHIP:DMG: InvokeResponseMessage = - [1650278416.248379][11064:11069] CHIP:DMG: { - [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, - [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = - [1650278416.248570][11064:11069] CHIP:DMG: [ - [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = - [1650278416.248718][11064:11069] CHIP:DMG: { - [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = - [1650278416.248860][11064:11069] CHIP:DMG: { - [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = - [1650278416.249011][11064:11069] CHIP:DMG: { - [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, - [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, - [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, - [1650278416.249347][11064:11069] CHIP:DMG: }, - [1650278416.249430][11064:11069] CHIP:DMG: - [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = - [1650278416.249581][11064:11069] CHIP:DMG: { - [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), - [1650278416.249738][11064:11069] CHIP:DMG: }, - [1650278416.249823][11064:11069] CHIP:DMG: - [1650278416.249889][11064:11069] CHIP:DMG: }, - [1650278416.249969][11064:11069] CHIP:DMG: - [1650278416.250035][11064:11069] CHIP:DMG: }, - [1650278416.250113][11064:11069] CHIP:DMG: - [1650278416.250169][11064:11069] CHIP:DMG: ], - [1650278416.250241][11064:11069] CHIP:DMG: - [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 - [1650278416.250355][11064:11069] CHIP:DMG: }, - [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 - [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] + Wait for the expiration of PIXIT_COMM_WIN seconds disabled: true - label: - "Before the expiration of PIXIT.CADMIN.CwDuration seconds that was set - in step 12, TH_CR2 sends command to open a second commissioning - window on TH_CE using a commissioning timeout of - PIXIT.CADMIN.CwDuration seconds using BCM" - PICS: CADMIN.C.C0001 + "DUT_CR1 sends command to TH_CE to open a commissioning window with a + commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" + PICS: CADMIN.C.C00.Tx verification: | - On the 2nd controller using chip tool, open commissioning window using BCM before the timer expiry from above step + On your DUT controller, open commissioning window using ECM - ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 + Below is the example while using chip tool as controller + + ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 + [1635926434.941379][10165:10170] CHIP:SC: Success status report received. Session was established + [1635926434.941428][10165:10170] CHIP:IN: New secure session created for device 0x0000000000000001, key 44!! + [1635926434.941515][10165:10170] CHIP:CTL: OpenCommissioningWindow for device ID 1 + [1635926434.949324][10165:10170] CHIP:DMG: ICR moving to [AddingComm] + [1635926434.949381][10165:10170] CHIP:DMG: ICR moving to [AddedComma] + [1635926434.949532][10165:10170] CHIP:IN: Prepared encrypted message 0xaaaad95dbd10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 19421i with MessageCounter:0. + [1635926434.949592][10165:10170] CHIP:IN: Sending encrypted msg 0xaaaad95dbd10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 14170436 msec + [1635926434.949727][10165:10170] CHIP:DMG: ICR moving to [CommandSen] + [1635926434.949788][10165:10170] CHIP:CTL: Manual pairing code: [35484132896] + [1635926434.949865][10165:10170] CHIP:CTL: SetupQRCode: [MT:00000CQM00OAX.7RA00] + disabled: true + - label: + "Before the expiration of PIXIT.CADMIN.CwDuration seconds that is set + in step 12, TH_CR2 sends command to TH_CE to open a second + commissioning window with a commissioning timeout of + PIXIT.CADMIN.CwDuration seconds using ECM" + PICS: CADMIN.C.C00.Tx + verification: | + On the 2nd controller using chip tool, open commissioning window using ECM + ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 CHIP:DMG: InvokeResponseMessage = [1650527622.373450][15824:15829] CHIP:DMG: { - [1650527622.373531][15824:15829] CHIP:DMG: suppressResponse = false, - [1650527622.373628][15824:15829] CHIP:DMG: InvokeResponseIBs = - [1650527622.373734][15824:15829] CHIP:DMG: [ - [1650527622.373817][15824:15829] CHIP:DMG: InvokeResponseIB = - [1650527622.373913][15824:15829] CHIP:DMG: { - [1650527622.374001][15824:15829] CHIP:DMG: CommandStatusIB = - [1650527622.374087][15824:15829] CHIP:DMG: { - [1650527622.374182][15824:15829] CHIP:DMG: CommandPathIB = - [1650527622.374296][15824:15829] CHIP:DMG: { - [1650527622.374382][15824:15829] CHIP:DMG: EndpointId = 0x0, - [1650527622.374490][15824:15829] CHIP:DMG: ClusterId = 0x3c, - [1650527622.374593][15824:15829] CHIP:DMG: CommandId = 0x1, - [1650527622.374682][15824:15829] CHIP:DMG: }, + [1650527622.373531][15824:15829] CHIP:DMG: suppressResponse = false, + [1650527622.373628][15824:15829] CHIP:DMG: InvokeResponseIBs = + [1650527622.373734][15824:15829] CHIP:DMG: [ + [1650527622.373817][15824:15829] CHIP:DMG: InvokeResponseIB = + [1650527622.373913][15824:15829] CHIP:DMG: { + [1650527622.374001][15824:15829] CHIP:DMG: CommandStatusIB = + [1650527622.374087][15824:15829] CHIP:DMG: { + [1650527622.374182][15824:15829] CHIP:DMG: CommandPathIB = + [1650527622.374296][15824:15829] CHIP:DMG: { + [1650527622.374382][15824:15829] CHIP:DMG: EndpointId = 0x0, + [1650527622.374490][15824:15829] CHIP:DMG: ClusterId = 0x3c, + [1650527622.374593][15824:15829] CHIP:DMG: CommandId = 0x1, + [1650527622.374682][15824:15829] CHIP:DMG: }, [1650527622.374799][15824:15829] CHIP:DMG: - [1650527622.374896][15824:15829] CHIP:DMG: StatusIB = - [1650527622.374979][15824:15829] CHIP:DMG: { - [1650527622.375086][15824:15829] CHIP:DMG: status = 0x01 (FAILURE), - [1650527622.375236][15824:15829] CHIP:DMG: cluster-status = 0x1, - [1650527622.375320][15824:15829] CHIP:DMG: }, + [1650527622.374896][15824:15829] CHIP:DMG: StatusIB = + [1650527622.374979][15824:15829] CHIP:DMG: { + [1650527622.375086][15824:15829] CHIP:DMG: status = 0x01 (FAILURE), + [1650527622.375236][15824:15829] CHIP:DMG: cluster-status = 0x1, + [1650527622.375320][15824:15829] CHIP:DMG: }, [1650527622.375426][15824:15829] CHIP:DMG: - [1650527622.375527][15824:15829] CHIP:DMG: }, + [1650527622.375527][15824:15829] CHIP:DMG: }, [1650527622.375616][15824:15829] CHIP:DMG: - [1650527622.375704][15824:15829] CHIP:DMG: }, + [1650527622.375704][15824:15829] CHIP:DMG: }, [1650527622.375786][15824:15829] CHIP:DMG: - [1650527622.375864][15824:15829] CHIP:DMG: ], + [1650527622.375864][15824:15829] CHIP:DMG: ], [1650527622.375940][15824:15829] CHIP:DMG: - [1650527622.376000][15824:15829] CHIP:DMG: InteractionModelRevision = 1 + [1650527622.376000][15824:15829] CHIP:DMG: InteractionModelRevision = 1 [1650527622.376058][15824:15829] CHIP:DMG: }, [1650527622.376202][15824:15829] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x1 [1650527622.376278][15824:15829] CHIP:TOO: Error: IM Error 0x00000601: Cluster-specific error: 0x01 diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_15.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_15.yaml index 147d66f69a0535..d7e9d9370426fb 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_15.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_15.yaml @@ -29,6 +29,7 @@ tests: disabled: true - label: "TH_CR1 starts a commissioning process with DUT_CE" + PICS: CADMIN.C verification: | "1. Provision the device using 1st controller chip tool(use above instructions) , " @@ -37,7 +38,7 @@ tests: - label: "TH_CR1 opens a commissioning window on DUT_CE using a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" - PICS: CADMIN.S.C0000 + PICS: CADMIN.S.C00.Rsp verification: | On 1st controller chip tool, open commissioning window @@ -57,6 +58,7 @@ tests: disabled: true - label: "TH_CR2 starts a commissioning process with DUT_CE" + PICS: CADMIN.S verification: | On 2nd controller using chip tool connect to the accessory @@ -70,7 +72,7 @@ tests: - label: "TH_CR1 opens a commissioning window on DUT_CE using a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" - PICS: CADMIN.S.C0000 + PICS: CADMIN.S.C00.Rsp verification: | On 1st controller chip tool, open commissioning window @@ -90,6 +92,7 @@ tests: disabled: true - label: "TH_CR3 starts a commissioning process with DUT_CE" + PICS: CADMIN.S verification: | On 3rd controller using chip tool connect to the accessory @@ -204,10 +207,29 @@ tests: [1647863260.287515][9294:9299] CHIP:EM: Sending Standalone Ack for MessageCounter:11301761 on exchange 13180i" disabled: true + - label: "TH_CR1 reads the list of Fabrics on DUT_CE" + verification: | + On 1st controller using chip tool, read fabrics list + grl@grl-ThinkPad-L480:~/may16_cntrl03/connectedhomeip/examples/chip-tool/out/debug$ avahi-browse -rt _matter._tcp + + wlp5s0 IPv6 8E50A59FAF52A809-0000000000000001 _matter._tcp local + + wlp5s0 IPv6 03E707466A904C7E-0000000000000003 _matter._tcp local + = wlp5s0 IPv6 8E50A59FAF52A809-0000000000000001 _matter._tcp local + hostname = [E45F010F27530000.local] + address = [fe80::e65f:1ff:fe0f:2753] + port = [5540] + txt = ["T=1" "SAI=300" "SII=5000"] + = wlp5s0 IPv6 03E707466A904C7E-0000000000000003 _matter._tcp local + hostname = [E45F010F27530000.local] + address = [fe80::e65f:1ff:fe0f:2753] + port = [5540] + txt = ["T=1" "SAI=300" "SII=5000"] + grl@grl-ThinkPad-L480:~/may16_cntrl03/connectedhomeip/examples/chip-tool/out/debug$ + disabled: true + - label: "TH_CR1 opens a commissioning window on DUT_CE using a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" - PICS: CADMIN.S.C0000 + PICS: CADMIN.S.C00.Rsp verification: | On 1st controller chip tool, open commissioning window @@ -227,6 +249,7 @@ tests: disabled: true - label: "TH_CR2 starts a commissioning process with DUT_CE" + PICS: CADMIN.S verification: | On 2nd controller using chip tool connect to the accessory diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_16.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_16.yaml index db6d5624d975b6..26d00ca40c8e07 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_16.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_16.yaml @@ -14,7 +14,7 @@ # Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default name: - 24.1.16. [TC-CADMIN-1.16] Removing Fabrics from DUT and Fabric index + 3.1.16. [TC-CADMIN-1.16] Removing Fabrics from DUT and Fabric index enumeration using BCM [DUT - Commissionee] config: @@ -23,80 +23,77 @@ config: endpoint: 0 tests: - - label: "DUT_CR1 starts a commissioning process with TH_CE" + - label: "Reset DUT_CE to factory defaults" verification: | - "1. Provision the device using your DUT controller (use above instructions) , + + disabled: true + + - label: "TH_CR1 starts a commissioning process with DUT_CE" + PICS: CADMIN.S + verification: | + "1. Provision the device using 1st controller chip tool(use above instructions) , " disabled: true - label: - "DUT_CR1 sends command to TH_CE to open a commissioning window with a - commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM and - TH_CR3 Commissions with TH_CE" - PICS: CADMIN.C.C0001 + "TH_CR1 opens a commissioning window on DUT_CE using a commissioning + timeout of PIXIT.CADMIN.CwDuration seconds using BCM" + PICS: CADMIN.S.C01.Rsp verification: | - On your DUT controller, open commissioning window using ECM - - Below is the example while using chip tool as controller - ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 - - [1635874557.409509][4549:4554] CHIP:SC: Success status report received. Session was established - [1635874557.409553][4549:4554] CHIP:IN: New secure session created for device 0x0000000000000001, key 76!! - [1635874557.409649][4549:4554] CHIP:CTL: OpenCommissioningWindow for device ID 1 - [1635874557.416929][4549:4554] CHIP:DMG: ICR moving to [AddingComm] - [1635874557.417092][4549:4554] CHIP:DMG: ICR moving to [AddedComma] - [1635874557.417215][4549:4554] CHIP:IN: Prepared encrypted message 0xaaaac5947d10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 5541i with MessageCounter:0. - [1635874557.417271][4549:4554] CHIP:IN: Sending encrypted msg 0xaaaac5947d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 16129075 msec - [1635874557.417449][4549:4554] CHIP:DMG: ICR moving to [CommandSen] - [1635874557.417505][4549:4554] CHIP:CTL: Manual pairing code: [35484132896] - [1635874557.417577][4549:4554] CHIP:CTL: SetupQRCode: [MT:00000CQM00AT-F5A510] - + On 1st controller chip tool, open commissioning window + ./chip-tool administratorcommissioning open-basic-commissioning-window 500 1 0 --timedInteractionTimeoutMs 1000 - On 3rd controller using chip tool connect using manual code - - ./chip-tool pairing code 1 35484132896 - - Verify you got below message - Device commissioning completed with success + CHIP:DMG: InvokeResponseMessage = + [1650278416.248379][11064:11069] CHIP:DMG: { + [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, + [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = + [1650278416.248570][11064:11069] CHIP:DMG: [ + [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = + [1650278416.248718][11064:11069] CHIP:DMG: { + [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = + [1650278416.248860][11064:11069] CHIP:DMG: { + [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = + [1650278416.249011][11064:11069] CHIP:DMG: { + [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, + [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, + [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, + [1650278416.249347][11064:11069] CHIP:DMG: }, + [1650278416.249430][11064:11069] CHIP:DMG: + [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = + [1650278416.249581][11064:11069] CHIP:DMG: { + [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), + [1650278416.249738][11064:11069] CHIP:DMG: }, + [1650278416.249823][11064:11069] CHIP:DMG: + [1650278416.249889][11064:11069] CHIP:DMG: }, + [1650278416.249969][11064:11069] CHIP:DMG: + [1650278416.250035][11064:11069] CHIP:DMG: }, + [1650278416.250113][11064:11069] CHIP:DMG: + [1650278416.250169][11064:11069] CHIP:DMG: ], + [1650278416.250241][11064:11069] CHIP:DMG: + [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 + [1650278416.250355][11064:11069] CHIP:DMG: }, + [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 + [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] disabled: true - - label: - "DUT_CR1 sends command to TH_CE to open a commissioning window with a - commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM and - TH_CR2 Commissions with TH_CE" - PICS: CADMIN.C.C0001 + - label: "TH_CR2 starts a commissioning process with DUT_CE" + PICS: CADMIN.S verification: | - On your DUT controller, open commissioning window using ECM + On 2nd controller using chip tool connect to the accessory - Below is the example while using chip tool as controller - ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 - [1635874557.409509][4549:4554] CHIP:SC: Success status report received. Session was established - [1635874557.409553][4549:4554] CHIP:IN: New secure session created for device 0x0000000000000001, key 76!! - [1635874557.409649][4549:4554] CHIP:CTL: OpenCommissioningWindow for device ID 1 - [1635874557.416929][4549:4554] CHIP:DMG: ICR moving to [AddingComm] - [1635874557.417092][4549:4554] CHIP:DMG: ICR moving to [AddedComma] - [1635874557.417215][4549:4554] CHIP:IN: Prepared encrypted message 0xaaaac5947d10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 5541i with MessageCounter:0. - [1635874557.417271][4549:4554] CHIP:IN: Sending encrypted msg 0xaaaac5947d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 16129075 msec - [1635874557.417449][4549:4554] CHIP:DMG: ICR moving to [CommandSen] - [1635874557.417505][4549:4554] CHIP:CTL: Manual pairing code: [35484132896] - [1635874557.417577][4549:4554] CHIP:CTL: SetupQRCode: [MT:00000CQM00AT-F5A510] - - On 2nd controller using chip tool connect using manual code - ./chip-tool pairing code 1 35484132896 + ./chip-tool pairing onnetwork 2 20202021 Verify you got below message Device commissioning completed with success disabled: true - label: - "DUT_CR1 sends command to TH_CE to open a commissioning window with a - commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" - PICS: CADMIN.C.C0001 + "TH_CR1 opens a commissioning window on DUT_CE using a commissioning + timeout of PIXIT.CADMIN.CwDuration seconds using BCM" + PICS: CADMIN.S.C01.Rsp verification: | - On your DUT controller, open commissioning window using BCM - - Below is the example while using chip tool as controller + On 1st controller chip tool, open commissioning window ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 CHIP:DMG: InvokeResponseMessage = @@ -132,270 +129,212 @@ tests: [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] disabled: true - - label: - "Before the expiration of PIXIT.CADMIN.CwDuration seconds that is set - in step 4, DUT_CR1 sends command to TH_CE to TH_CE to open a 2nd - commissioning window with a commissioning timeout of - PIXIT.CADMIN.CwDuration seconds using ECM" - PICS: CADMIN.C.C0000 + - label: "TH_CR3 starts a commissioning process with DUT_CE" + PICS: CADMIN.S verification: | - On your DUT controller, open commissioning window using ECM before the timer expiry of the above step + On 3rd controller using chip tool connect to the accessory - Below is the example while using chip tool as controller - ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 - CHIP:DMG: InvokeResponseMessage = - [1650527622.373450][15824:15829] CHIP:DMG: { - [1650527622.373531][15824:15829] CHIP:DMG: suppressResponse = false, - [1650527622.373628][15824:15829] CHIP:DMG: InvokeResponseIBs = - [1650527622.373734][15824:15829] CHIP:DMG: [ - [1650527622.373817][15824:15829] CHIP:DMG: InvokeResponseIB = - [1650527622.373913][15824:15829] CHIP:DMG: { - [1650527622.374001][15824:15829] CHIP:DMG: CommandStatusIB = - [1650527622.374087][15824:15829] CHIP:DMG: { - [1650527622.374182][15824:15829] CHIP:DMG: CommandPathIB = - [1650527622.374296][15824:15829] CHIP:DMG: { - [1650527622.374382][15824:15829] CHIP:DMG: EndpointId = 0x0, - [1650527622.374490][15824:15829] CHIP:DMG: ClusterId = 0x3c, - [1650527622.374593][15824:15829] CHIP:DMG: CommandId = 0x1, - [1650527622.374682][15824:15829] CHIP:DMG: }, - [1650527622.374799][15824:15829] CHIP:DMG: - [1650527622.374896][15824:15829] CHIP:DMG: StatusIB = - [1650527622.374979][15824:15829] CHIP:DMG: { - [1650527622.375086][15824:15829] CHIP:DMG: status = 0x01 (FAILURE), - [1650527622.375236][15824:15829] CHIP:DMG: cluster-status = 0x1, - [1650527622.375320][15824:15829] CHIP:DMG: }, - [1650527622.375426][15824:15829] CHIP:DMG: - [1650527622.375527][15824:15829] CHIP:DMG: }, - [1650527622.375616][15824:15829] CHIP:DMG: - [1650527622.375704][15824:15829] CHIP:DMG: }, - [1650527622.375786][15824:15829] CHIP:DMG: - [1650527622.375864][15824:15829] CHIP:DMG: ], - [1650527622.375940][15824:15829] CHIP:DMG: - [1650527622.376000][15824:15829] CHIP:DMG: InteractionModelRevision = 1 - [1650527622.376058][15824:15829] CHIP:DMG: }, - [1650527622.376202][15824:15829] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x1 - [1650527622.376278][15824:15829] CHIP:TOO: Error: IM Error 0x00000601: Cluster-specific error: 0x01 - disabled: true + ./chip-tool pairing onnetwork 1 20202021 - - label: "DUT_CR1 sends command to TH_CE to read the list of Fabrics" - PICS: OPCREDS.C.A0001 - verification: | - On 1st controller using chip tool, read fabrics list - - ./chip-tool operationalcredentials read fabrics 1234 0 --fabric-filtered 0 - - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 268962768 - [1650527361.425870][15792:15797] CHIP:TOO: Fabrics: 3 entries - [1650527361.426777][15792:15797] CHIP:TOO: [1]: { - [1650527361.426859][15792:15797] CHIP:TOO: RootPublicKey: 0429A71383F336D80918C9EC655112513E428C073AF7FB44820EC793535302C6E3825C56EE6DD1A683EAA7B59E3F261B46FFA24A6D911E8D88839F4C1B3C84BA01 - [1650527361.426923][15792:15797] CHIP:TOO: VendorId: 65521 - [1650527361.426979][15792:15797] CHIP:TOO: FabricId: 1 - [1650527361.427033][15792:15797] CHIP:TOO: NodeId: 1 - [1650527361.427088][15792:15797] CHIP:TOO: Label: - [1650527361.427166][15792:15797] CHIP:TOO: FabricIndex: 1 - [1650527361.427376][15792:15797] CHIP:TOO: } - [1650527361.427464][15792:15797] CHIP:TOO: [2]: { - [1650527361.427532][15792:15797] CHIP:TOO: RootPublicKey: 04781BCEE70118049ED61DD5B4E401CF1A09D2F78AE7F5770BE5506AD24238E5E0777277DABAFD062659651C95CC2CA7DEAACE40DB579A946CC07CADB141BE05D7 - [1650527361.427595][15792:15797] CHIP:TOO: VendorId: 65521 - [1650527361.427649][15792:15797] CHIP:TOO: FabricId: 1 - [1650527361.427703][15792:15797] CHIP:TOO: NodeId: 3 - [1650527361.427756][15792:15797] CHIP:TOO: Label: - [1650527361.427811][15792:15797] CHIP:TOO: FabricIndex: 2 - [1650527361.427868][15792:15797] CHIP:TOO: } - [1650527361.427943][15792:15797] CHIP:TOO: [3]: { - [1650527361.428008][15792:15797] CHIP:TOO: RootPublicKey: 0403EDB5B461030A34EF7EA2F9DB0D46A36185E4755C365AF9344C4959F049EF21D55EAB903A2C7FBFC305EEFA42989250D7517A73E6156062390A60C0D4C41EBD - [1650527361.428067][15792:15797] CHIP:TOO: VendorId: 65521 - [1650527361.428122][15792:15797] CHIP:TOO: FabricId: 1 - [1650527361.428176][15792:15797] CHIP:TOO: NodeId: 2 - [1650527361.428229][15792:15797] CHIP:TOO: Label: - [1650527361.428282][15792:15797] CHIP:TOO: FabricIndex: 3 - [1650527361.428335][15792:15797] CHIP:TOO: } + Verify you got below message + Device commissioning completed with success disabled: true - - label: - "Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that is - set in step 5" + - label: "TH_CR2 reads the list of Fabrics on DUT_CE" + PICS: OPCREDS.S.A0001 verification: | - Wait for the expiration of PIXIT_COMM_WIN seconds + On 2nd controller using chip tool, read fabrics list + + ./chip-tool operationalcredentials read fabrics 2 0 --fabric-filtered 0 + + CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 2455995193 + CHIP:TOO: Fabrics: 3 entries + CHIP:TOO: [1]: { + CHIP:TOO: RootPublicKey: 04656F56DBDB677DC957028DFC0ED76709C72753C9194B117A483BDC07386BFD9529B68EB4448FBBA3964EFF37A56A8F461D348B0DAF3B56A75F3B94BF8209D36F + CHIP:TOO: VendorId: 65521 + CHIP:TOO: FabricId: 1 + CHIP:TOO: NodeId: 1 + CHIP:TOO: Label: + CHIP:TOO: FabricIndex: 1 + CHIP:TOO: } + CHIP:TOO: [2]: { + CHIP:TOO: RootPublicKey: 04F8F28D5D70A4510E0F72FBBA31369796C4206FF95D97B77C1BDFD0438A3BE43510631A1B915BE189323F4CC0E015480192654D8170F8F230C7713898962958B7 + CHIP:TOO: VendorId: 65521 + CHIP:TOO: FabricId: 1 + CHIP:TOO: NodeId: 2 + CHIP:TOO: Label: + CHIP:TOO: FabricIndex: 2 + CHIP:TOO: } + CHIP:TOO: [3]: { + CHIP:TOO: RootPublicKey: 04F8F28D5D70A4510E0F72FBBA31369796C4206FF95D97B77C1BDFD0438A3BE43510631A1B915BE189323F4CC0E015480192654D8170F8F230C7713898962958B7 + CHIP:TOO: VendorId: 65521 + CHIP:TOO: FabricId: 1 + CHIP:TOO: NodeId: 3 + CHIP:TOO: Label: + CHIP:TOO: FabricIndex: 3 + CHIP:TOO: } + CHIP:EM: Sending Standalone Ack for MessageCounter:9143157 on exchange 1147i disabled: true - - label: - "DUT_CR1 sends command to TH_CE to re-opens a commissioning window - with a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using - ECM" - PICS: CADMIN.C.C0000 + - label: "TH_CR2 sends RemoveFabric with FabricIndex = 2command to DUT_CE" + PICS: OPCREDS.S.C0a.Rsp verification: | - On your DUT controller, open commissioning window using ECM - - Below is the example while using chip tool as controller - - ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 - - [1635926152.609542][10140:10145] CHIP:SC: Success status report received. Session was established - [1635926152.609582][10140:10145] CHIP:IN: New secure session created for device 0x0000000000000001, key 42!! - [1635926152.609695][10140:10145] CHIP:CTL: OpenCommissioningWindow for device ID 1 - [1635926152.617050][10140:10145] CHIP:DMG: ICR moving to [AddingComm] - [1635926152.617103][10140:10145] CHIP:DMG: ICR moving to [AddedComma] - [1635926152.617228][10140:10145] CHIP:IN: Prepared encrypted message 0xaaab02ca7d10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 6544i with MessageCounter:0. - [1635926152.617286][10140:10145] CHIP:IN: Sending encrypted msg 0xaaab02ca7d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 13888103 msec - [1635926152.617454][10140:10145] CHIP:DMG: ICR moving to [CommandSen] - [1635926152.617523][10140:10145] CHIP:CTL: Manual pairing code: [35484132896] - [1635926152.617611][10140:10145] CHIP:CTL: SetupQRCode: [MT:00000CQM00QHQP0JG00] + on 2nd controller using chip tool, remove fabric with FabricIndex=2 + + ./chip-tool operationalcredentials remove-fabric 2 2 0 + + CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0008 + CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Command 0x0000_0008 + CHIP:TOO: NOCResponse: { + CHIP:TOO: statusCode: 0 + CHIP:TOO: fabricIndex: 2 + CHIP:TOO: } + CHIP:DMG: ICR moving to [AwaitingDe] disabled: true - label: - "Before the expiration of PIXIT.CADMIN.CwDuration seconds that is set - in step 8, TH_CR3 sends command to TH_CE to open a 2nd commissioning - window with a commissioning timeout of PIXIT.CADMIN.CwDuration seconds - using ECM" - PICS: CADMIN.C.C0000 + "TH_CR2 writes and reads the Basic Information Clusters NodeLabel + mandatory attribute of DUT_CE" + PICS: BINFO.S.A0005 verification: | - On the 3rd controller using chip tool, open commissioning window using ECM + Using your 2nd controller, write attribute and read attribute to and from TH_CE + Below is the example while using chip tool on second controller, + ./chip-tool basic write node-label te5new 2 0 - ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 + Received error (protocol code 2) during pairing process. ../../third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:1551: CHIP Error 0x00000054: Invalid CASE parameter + [1651819620.929567][4359:4364] CHIP:CTL: OperationalDeviceProxy[B8070CD13C99D367:0000000000000002]: State change 3 --> 2 + [1651819620.929700][4359:4364] CHIP:-: ../../third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:1551: CHIP Error 0x00000054: Invalid CASE parameter at ../../commands/clusters/ModelCommand.cpp:53 - CHIP:DMG: InvokeResponseMessage = - [1650527622.373450][15824:15829] CHIP:DMG: { - [1650527622.373531][15824:15829] CHIP:DMG: suppressResponse = false, - [1650527622.373628][15824:15829] CHIP:DMG: InvokeResponseIBs = - [1650527622.373734][15824:15829] CHIP:DMG: [ - [1650527622.373817][15824:15829] CHIP:DMG: InvokeResponseIB = - [1650527622.373913][15824:15829] CHIP:DMG: { - [1650527622.374001][15824:15829] CHIP:DMG: CommandStatusIB = - [1650527622.374087][15824:15829] CHIP:DMG: { - [1650527622.374182][15824:15829] CHIP:DMG: CommandPathIB = - [1650527622.374296][15824:15829] CHIP:DMG: { - [1650527622.374382][15824:15829] CHIP:DMG: EndpointId = 0x0, - [1650527622.374490][15824:15829] CHIP:DMG: ClusterId = 0x3c, - [1650527622.374593][15824:15829] CHIP:DMG: CommandId = 0x1, - [1650527622.374682][15824:15829] CHIP:DMG: }, - [1650527622.374799][15824:15829] CHIP:DMG: - [1650527622.374896][15824:15829] CHIP:DMG: StatusIB = - [1650527622.374979][15824:15829] CHIP:DMG: { - [1650527622.375086][15824:15829] CHIP:DMG: status = 0x01 (FAILURE), - [1650527622.375236][15824:15829] CHIP:DMG: cluster-status = 0x1, - [1650527622.375320][15824:15829] CHIP:DMG: }, - [1650527622.375426][15824:15829] CHIP:DMG: - [1650527622.375527][15824:15829] CHIP:DMG: }, - [1650527622.375616][15824:15829] CHIP:DMG: - [1650527622.375704][15824:15829] CHIP:DMG: }, - [1650527622.375786][15824:15829] CHIP:DMG: - [1650527622.375864][15824:15829] CHIP:DMG: ], - [1650527622.375940][15824:15829] CHIP:DMG: - [1650527622.376000][15824:15829] CHIP:DMG: InteractionModelRevision = 1 - [1650527622.376058][15824:15829] CHIP:DMG: }, - [1650527622.376202][15824:15829] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x1 - [1650527622.376278][15824:15829] CHIP:TOO: Error: IM Error 0x00000601: Cluster-specific error: 0x01 + ./chip-tool basic read node-label 2 0 + + Received error (protocol code 2) during pairing process. ../../third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:1551: CHIP Error 0x00000054: Invalid CASE parameter + [1651819620.929567][4359:4364] CHIP:CTL: OperationalDeviceProxy[B8070CD13C99D367:0000000000000002]: State change 3 --> 2 + [1651819620.929700][4359:4364] CHIP:-: ../../third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:1551: CHIP Error 0x00000054: Invalid CASE parameter at ../../commands/clusters/ModelCommand.cpp:53 disabled: true - - label: "DUT_CR1 sends command to TH_CE to read the list of Fabrics" - PICS: OPCREDS.C.A0001 + - label: "TH_CR1 reads the list of Fabrics on DUT_CE" + PICS: OPCREDS.S.A0001 verification: | On 1st controller using chip tool, read fabrics list - ./chip-tool operationalcredentials read fabrics 1234 0 --fabric-filtered 0 - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 268962768 - [1650527361.425870][15792:15797] CHIP:TOO: Fabrics: 3 entries - [1650527361.426777][15792:15797] CHIP:TOO: [1]: { - [1650527361.426859][15792:15797] CHIP:TOO: RootPublicKey: 0429A71383F336D80918C9EC655112513E428C073AF7FB44820EC793535302C6E3825C56EE6DD1A683EAA7B59E3F261B46FFA24A6D911E8D88839F4C1B3C84BA01 - [1650527361.426923][15792:15797] CHIP:TOO: VendorId: 65521 - [1650527361.426979][15792:15797] CHIP:TOO: FabricId: 1 - [1650527361.427033][15792:15797] CHIP:TOO: NodeId: 1 - [1650527361.427088][15792:15797] CHIP:TOO: Label: - [1650527361.427166][15792:15797] CHIP:TOO: FabricIndex: 1 - [1650527361.427376][15792:15797] CHIP:TOO: } - [1650527361.427464][15792:15797] CHIP:TOO: [2]: { - [1650527361.427532][15792:15797] CHIP:TOO: RootPublicKey: 04781BCEE70118049ED61DD5B4E401CF1A09D2F78AE7F5770BE5506AD24238E5E0777277DABAFD062659651C95CC2CA7DEAACE40DB579A946CC07CADB141BE05D7 - [1650527361.427595][15792:15797] CHIP:TOO: VendorId: 65521 - [1650527361.427649][15792:15797] CHIP:TOO: FabricId: 1 - [1650527361.427703][15792:15797] CHIP:TOO: NodeId: 3 - [1650527361.427756][15792:15797] CHIP:TOO: Label: - [1650527361.427811][15792:15797] CHIP:TOO: FabricIndex: 2 - [1650527361.427868][15792:15797] CHIP:TOO: } - [1650527361.427943][15792:15797] CHIP:TOO: [3]: { - [1650527361.428008][15792:15797] CHIP:TOO: RootPublicKey: 0403EDB5B461030A34EF7EA2F9DB0D46A36185E4755C365AF9344C4959F049EF21D55EAB903A2C7FBFC305EEFA42989250D7517A73E6156062390A60C0D4C41EBD - [1650527361.428067][15792:15797] CHIP:TOO: VendorId: 65521 - [1650527361.428122][15792:15797] CHIP:TOO: FabricId: 1 - [1650527361.428176][15792:15797] CHIP:TOO: NodeId: 2 - [1650527361.428229][15792:15797] CHIP:TOO: Label: - [1650527361.428282][15792:15797] CHIP:TOO: FabricIndex: 3 - [1650527361.428335][15792:15797] CHIP:TOO: } + Below is the command using chip tool controller + + ./chip-tool operationalcredentials read fabrics 1 0 --fabric-filtered 0 + + CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 2455995219 + [1647863260.286772][9294:9299] CHIP:TOO: Fabrics: 2 entries + [1647863260.286908][9294:9299] CHIP:TOO: [1]: { + [1647863260.286947][9294:9299] CHIP:TOO: RootPublicKey: 04656F56DBDB677DC957028DFC0ED76709C72753C9194B117A483BDC07386BFD9529B68EB4448FBBA3964EFF37A56A8F461D348B0DAF3B56A75F3B94BF8209D36F + [1647863260.286995][9294:9299] CHIP:TOO: VendorId: 65521 + [1647863260.287026][9294:9299] CHIP:TOO: FabricId: 1 + [1647863260.287055][9294:9299] CHIP:TOO: NodeId: 1 + [1647863260.287084][9294:9299] CHIP:TOO: Label: + [1647863260.287113][9294:9299] CHIP:TOO: FabricIndex: 1 + [1647863260.287144][9294:9299] CHIP:TOO: } + [1647863260.287185][9294:9299] CHIP:TOO: [2]: { + [1647863260.287221][9294:9299] CHIP:TOO: RootPublicKey: 04F8F28D5D70A4510E0F72FBBA31369796C4206FF95D97B77C1BDFD0438A3BE43510631A1B915BE189323F4CC0E015480192654D8170F8F230C7713898962958B7 + [1647863260.287253][9294:9299] CHIP:TOO: VendorId: 65521 + [1647863260.287282][9294:9299] CHIP:TOO: FabricId: 1 + [1647863260.287310][9294:9299] CHIP:TOO: NodeId: 3 + [1647863260.287339][9294:9299] CHIP:TOO: Label: + [1647863260.287368][9294:9299] CHIP:TOO: FabricIndex: 3 + [1647863260.287396][9294:9299] CHIP:TOO: } + [1647863260.287515][9294:9299] CHIP:EM: Sending Standalone Ack for MessageCounter:11301761 on exchange 13180i" disabled: true - label: - "Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that is - set in step 9" + "TH_CR1 opens a commissioning window on DUT_CE using a commissioning + timeout of PIXIT.CADMIN.CwDuration seconds using BCM" + PICS: CADMIN.S.C01.Rsp verification: | - Wait for the expiration of PIXIT_COMM_WIN seconds + On 1st controller chip tool, open commissioning window + + ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 + + + CHIP:DMG: InvokeResponseMessage = + [1650278416.248379][11064:11069] CHIP:DMG: { + [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, + [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = + [1650278416.248570][11064:11069] CHIP:DMG: [ + [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = + [1650278416.248718][11064:11069] CHIP:DMG: { + [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = + [1650278416.248860][11064:11069] CHIP:DMG: { + [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = + [1650278416.249011][11064:11069] CHIP:DMG: { + [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, + [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, + [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, + [1650278416.249347][11064:11069] CHIP:DMG: }, + [1650278416.249430][11064:11069] CHIP:DMG: + [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = + [1650278416.249581][11064:11069] CHIP:DMG: { + [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), + [1650278416.249738][11064:11069] CHIP:DMG: }, + [1650278416.249823][11064:11069] CHIP:DMG: + [1650278416.249889][11064:11069] CHIP:DMG: }, + [1650278416.249969][11064:11069] CHIP:DMG: + [1650278416.250035][11064:11069] CHIP:DMG: }, + [1650278416.250113][11064:11069] CHIP:DMG: + [1650278416.250169][11064:11069] CHIP:DMG: ], + [1650278416.250241][11064:11069] CHIP:DMG: + [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 + [1650278416.250355][11064:11069] CHIP:DMG: }, + [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 + [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] disabled: true - - label: - "DUT_CR1 sends command to TH_CE to open a commissioning window with a - commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" + - label: "TH_CR2 starts a commissioning process with DUT_CE" + PICS: CADMIN.S verification: | - On your DUT controller, open commissioning window using ECM - - Below is the example while using chip tool as controller - - ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 - - [1635926434.941379][10165:10170] CHIP:SC: Success status report received. Session was established - [1635926434.941428][10165:10170] CHIP:IN: New secure session created for device 0x0000000000000001, key 44!! - [1635926434.941515][10165:10170] CHIP:CTL: OpenCommissioningWindow for device ID 1 - [1635926434.949324][10165:10170] CHIP:DMG: ICR moving to [AddingComm] - [1635926434.949381][10165:10170] CHIP:DMG: ICR moving to [AddedComma] - [1635926434.949532][10165:10170] CHIP:IN: Prepared encrypted message 0xaaaad95dbd10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 19421i with MessageCounter:0. - [1635926434.949592][10165:10170] CHIP:IN: Sending encrypted msg 0xaaaad95dbd10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 14170436 msec - [1635926434.949727][10165:10170] CHIP:DMG: ICR moving to [CommandSen] - [1635926434.949788][10165:10170] CHIP:CTL: Manual pairing code: [35484132896] - [1635926434.949865][10165:10170] CHIP:CTL: SetupQRCode: [MT:00000CQM00OAX.7RA00] + On 2nd controller using chip tool connect to the accessory + + + ./chip-tool pairing onnetwork 1 20202021 + + Verify you got below message + Device commissioning completed with success disabled: true - - label: - "Before the expiration of PIXIT.CADMIN.CwDuration seconds that is set - in step 12, TH_CR2 sends command to TH_CE to open a second - commissioning window with a commissioning timeout of - PIXIT.CADMIN.CwDuration seconds using ECM" - PICS: CADMIN.C.C0000 + - label: "TH_CR1 reads the list of Fabrics on DUT_CE" + PICS: OPCREDS.S.A0001 verification: | - On the 2nd controller using chip tool, open commissioning window using ECM + On 1st controller, read fabrics list - ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 + Below is the command using chip tool controller - CHIP:DMG: InvokeResponseMessage = - [1650527622.373450][15824:15829] CHIP:DMG: { - [1650527622.373531][15824:15829] CHIP:DMG: suppressResponse = false, - [1650527622.373628][15824:15829] CHIP:DMG: InvokeResponseIBs = - [1650527622.373734][15824:15829] CHIP:DMG: [ - [1650527622.373817][15824:15829] CHIP:DMG: InvokeResponseIB = - [1650527622.373913][15824:15829] CHIP:DMG: { - [1650527622.374001][15824:15829] CHIP:DMG: CommandStatusIB = - [1650527622.374087][15824:15829] CHIP:DMG: { - [1650527622.374182][15824:15829] CHIP:DMG: CommandPathIB = - [1650527622.374296][15824:15829] CHIP:DMG: { - [1650527622.374382][15824:15829] CHIP:DMG: EndpointId = 0x0, - [1650527622.374490][15824:15829] CHIP:DMG: ClusterId = 0x3c, - [1650527622.374593][15824:15829] CHIP:DMG: CommandId = 0x1, - [1650527622.374682][15824:15829] CHIP:DMG: }, - [1650527622.374799][15824:15829] CHIP:DMG: - [1650527622.374896][15824:15829] CHIP:DMG: StatusIB = - [1650527622.374979][15824:15829] CHIP:DMG: { - [1650527622.375086][15824:15829] CHIP:DMG: status = 0x01 (FAILURE), - [1650527622.375236][15824:15829] CHIP:DMG: cluster-status = 0x1, - [1650527622.375320][15824:15829] CHIP:DMG: }, - [1650527622.375426][15824:15829] CHIP:DMG: - [1650527622.375527][15824:15829] CHIP:DMG: }, - [1650527622.375616][15824:15829] CHIP:DMG: - [1650527622.375704][15824:15829] CHIP:DMG: }, - [1650527622.375786][15824:15829] CHIP:DMG: - [1650527622.375864][15824:15829] CHIP:DMG: ], - [1650527622.375940][15824:15829] CHIP:DMG: - [1650527622.376000][15824:15829] CHIP:DMG: InteractionModelRevision = 1 - [1650527622.376058][15824:15829] CHIP:DMG: }, - [1650527622.376202][15824:15829] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x1 - [1650527622.376278][15824:15829] CHIP:TOO: Error: IM Error 0x00000601: Cluster-specific error: 0x01 + ./chip-tool operationalcredentials read fabrics 1234 0 --fabric-filtered 0 + + CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 2455995246 + [1647863342.980899][9309:9314] CHIP:TOO: Fabrics: 3 entries + [1647863342.981158][9309:9314] CHIP:TOO: [1]: { + [1647863342.981231][9309:9314] CHIP:TOO: RootPublicKey: 04656F56DBDB677DC957028DFC0ED76709C72753C9194B117A483BDC07386BFD9529B68EB4448FBBA3964EFF37A56A8F461D348B0DAF3B56A75F3B94BF8209D36F + [1647863342.981322][9309:9314] CHIP:TOO: VendorId: 65521 + [1647863342.981380][9309:9314] CHIP:TOO: FabricId: 1 + [1647863342.981434][9309:9314] CHIP:TOO: NodeId: 1 + [1647863342.981486][9309:9314] CHIP:TOO: Label: + [1647863342.981539][9309:9314] CHIP:TOO: FabricIndex: 1 + [1647863342.981594][9309:9314] CHIP:TOO: } + [1647863342.981671][9309:9314] CHIP:TOO: [2]: { + [1647863342.981737][9309:9314] CHIP:TOO: RootPublicKey: 04F8F28D5D70A4510E0F72FBBA31369796C4206FF95D97B77C1BDFD0438A3BE43510631A1B915BE189323F4CC0E015480192654D8170F8F230C7713898962958B7 + [1647863342.981796][9309:9314] CHIP:TOO: VendorId: 65521 + [1647863342.981849][9309:9314] CHIP:TOO: FabricId: 1 + [1647863342.981901][9309:9314] CHIP:TOO: NodeId: 3 + [1647863342.981952][9309:9314] CHIP:TOO: Label: + [1647863342.982005][9309:9314] CHIP:TOO: FabricIndex: 3 + [1647863342.982057][9309:9314] CHIP:TOO: } + [1647863342.982131][9309:9314] CHIP:TOO: [3]: { + [1647863342.982195][9309:9314] CHIP:TOO: RootPublicKey: 04F8F28D5D70A4510E0F72FBBA31369796C4206FF95D97B77C1BDFD0438A3BE43510631A1B915BE189323F4CC0E015480192654D8170F8F230C7713898962958B7 + [1647863342.982252][9309:9314] CHIP:TOO: VendorId: 65521 + [1647863342.982305][9309:9314] CHIP:TOO: FabricId: 1 + [1647863342.982357][9309:9314] CHIP:TOO: NodeId: 2 + [1647863342.982409][9309:9314] CHIP:TOO: Label: + [1647863342.982460][9309:9314] CHIP:TOO: FabricIndex: 4 + [1647863342.982512][9309:9314] CHIP:TOO: } + [1647863342.982738][9309:9314] CHIP:EM: Sending Standalone Ack for MessageCounter:5772016 on exchange 3310i disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_17.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_17.yaml index 7066f59e26d452..c7cb40b8009db0 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_17.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_17.yaml @@ -14,7 +14,7 @@ # Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default name: - 24.1.17. [TC-CADMIN-1.17] Removing Fabrics from DUT and Fabric index + 3.1.17. [TC-CADMIN-1.17] Removing Fabrics from DUT and Fabric index enumeration using ECM [DUT - Commissioner] config: @@ -23,25 +23,29 @@ config: endpoint: 0 tests: - - label: "Reset DUT_CE to factory defaults" + - label: "Reset DUT_CR1 to factory defaults" verification: | disabled: true - - label: "TH_CR1 starts a commissioning process with DUT_CE" + - label: "DUT_CR1 starts a commissioning process with TH_CE" + PICS: CADMIN.C verification: | - "1. Provision the device using 1st controller chip tool(use above instructions) , + "1. Provision the device using DUT controller chip tool(use above instructions) , " disabled: true - label: - "TH_CR1 opens a commissioning window on DUT_CE using a commissioning - timeout of PIXIT.CADMIN.CwDuration seconds using ECM" - PICS: CADMIN.S.C0000 + "DUT_CR1 sends command to TH_CE to open a commissioning window with a + commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" + PICS: CADMIN.C.C00.Tx verification: | - On 1st controller chip tool, open commissioning window + On your DUT controller chip tool, open commissioning window - ./chip-tool pairing open-commissioning-window 1 1 180 1000 3840 + Below is the example when using chip tool as controller + + + ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 [1635925713.966786][9695:9700] CHIP:SC: Success status report received. Session was established [1635925713.966839][9695:9700] CHIP:IN: New secure session created for device 0x0000000000000001, key 33!! @@ -51,28 +55,46 @@ tests: [1635925713.972815][9695:9700] CHIP:IN: Prepared encrypted message 0xaaaad9b57d10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 31056i with MessageCounter:0. [1635925713.972876][9695:9700] CHIP:IN: Sending encrypted msg 0xaaaad9b57d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 13449459 msec [1635925713.973006][9695:9700] CHIP:DMG: ICR moving to [CommandSen] - [1635925713.973061][9695:9700] CHIP:CTL: Manual pairing code: [36217551633] + [1635925713.973061][9695:9700] CHIP:CTL: Manual pairing code: [35484132896] [1635925713.973120][9695:9700] CHIP:CTL: SetupQRCode: [MT:00000CQM00A7F87ZT10] [1635925713.973178][9695:9700] CHIP:EM: Sending Standalone Ack for MessageCounter:1964916542 on exchange 31055i + + + + + ./chip-tool payload parse-setup-payload 35484132896 + + CHIP:SPL: Parsing decimalRepresentation: 35484132896 + [1635692029.655951][3830:3830] CHIP:SPL: CommissioningFlow: 0 + [1635692029.655974][3830:3830] CHIP:SPL: VendorID: 0 + [1635692029.655994][3830:3830] CHIP:SPL: Version: 0 + [1635692029.656013][3830:3830] CHIP:SPL: ProductID: 0 + [1635692029.656032][3830:3830] CHIP:SPL: Discriminator: 3840 + [1635692029.656051][3830:3830] CHIP:SPL: SetUpPINCode: 68539195 + [1635692029.656070][3830:3830] CHIP:SPL: RendezvousInformation: 0 disabled: true - - label: "TH_CR2 starts a commissioning process with DUT_CE" + - label: "TH_CR2 starts a commissioning process with TH_CE" + PICS: CADMIN.C verification: | On 2nd controller using chip tool connect to the accessory - ./chip-tool pairing code 1 36217551633 + ./chip-tool pairing code 1 35484132896 Verify you got below message Device commissioning completed with success disabled: true - label: - "TH_CR1 opens a commissioning window on DUT_CE using a commissioning - timeout of PIXIT.CADMIN.CwDuration seconds using ECM" - PICS: CADMIN.S.C0000 + "DUT_CR1 sends command to TH_CE to open a commissioning window with a + commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" + PICS: CADMIN.C.C00.Tx verification: | - On 1st controller chip tool, open commissioning window + On your DUT controller chip tool, open commissioning window + + Below is the example when using chip tool as controller + ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 @@ -84,29 +106,43 @@ tests: [1635925713.972815][9695:9700] CHIP:IN: Prepared encrypted message 0xaaaad9b57d10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 31056i with MessageCounter:0. [1635925713.972876][9695:9700] CHIP:IN: Sending encrypted msg 0xaaaad9b57d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 13449459 msec [1635925713.973006][9695:9700] CHIP:DMG: ICR moving to [CommandSen] - [1635925713.973061][9695:9700] CHIP:CTL: Manual pairing code: [36217551633] + [1635925713.973061][9695:9700] CHIP:CTL: Manual pairing code: [35484132896] [1635925713.973120][9695:9700] CHIP:CTL: SetupQRCode: [MT:00000CQM00A7F87ZT10] [1635925713.973178][9695:9700] CHIP:EM: Sending Standalone Ack for MessageCounter:1964916542 on exchange 31055i + + + + + ./chip-tool payload parse-setup-payload 35484132896 + + CHIP:SPL: Parsing decimalRepresentation: 35484132896 + [1635692029.655951][3830:3830] CHIP:SPL: CommissioningFlow: 0 + [1635692029.655974][3830:3830] CHIP:SPL: VendorID: 0 + [1635692029.655994][3830:3830] CHIP:SPL: Version: 0 + [1635692029.656013][3830:3830] CHIP:SPL: ProductID: 0 + [1635692029.656032][3830:3830] CHIP:SPL: Discriminator: 3840 + [1635692029.656051][3830:3830] CHIP:SPL: SetUpPINCode: 68539195 + [1635692029.656070][3830:3830] CHIP:SPL: RendezvousInformation: 0 disabled: true - - label: "TH_CR3 starts a commissioning process with DUT_CE" + - label: "TH_CR3 starts a commissioning process with TH_CE" + PICS: CADMIN.C verification: | On 3rd controller using chip tool connect to the accessory - - ./chip-tool pairing code 1 36217551633 + ./chip-tool pairing code 1 35484132896 Verify you got below message Device commissioning completed with success disabled: true - - label: "TH_CR2 reads the list of Fabrics on DUT_CE" - PICS: OPCREDS.S.A0001 + - label: "TH_CR2 sends command to TH_CE to read the list of Fabrics" + PICS: OPCREDS.C.A0001 verification: | On 2nd controller using chip tool, read fabrics list - ./chip-tool operationalcredentials read fabrics 2 0 --fabric-filtered 0 + ./chip-tool operationalcredentials read fabrics 1234 0 --fabric-filtered 0 CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 2455995193 CHIP:TOO: Fabrics: 3 entries @@ -137,12 +173,12 @@ tests: CHIP:EM: Sending Standalone Ack for MessageCounter:9143157 on exchange 1147i disabled: true - - label: "TH_CR2 sends RemoveFabric with FabricIndex = 2command to DUT_CE" - PICS: OPCREDS.S.C0a.Rsp + - label: "TH_CR2 sends RemoveFabric with FabricIndex = 2command to TH_CE" + PICS: OPCREDS.C.C0a.Tx verification: | on 2nd controller using chip tool, remove fabric with FabricIndex=2 - ./chip-tool operationalcredentials remove-fabric 2 2 0 + ./chip-tool operationalcredentials remove-fabric 2 1 0 CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0008 CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Command 0x0000_0008 @@ -154,9 +190,9 @@ tests: disabled: true - label: - "TH_CR2 writes and reads the Basic Information Clusters NodeLabel - mandatory attribute of DUT_CE" - PICS: BINFO.S.A0005 + "TH_CR2 sends command to TH_CE to write and read the Basic Information + Clusters NodeLabel mandatory attribute" + PICS: BINFO.C.A0005 verification: | Using your 2nd controller, write attribute and read attribute to and from TH_CE @@ -174,14 +210,15 @@ tests: [1651819620.929700][4359:4364] CHIP:-: ../../third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:1551: CHIP Error 0x00000054: Invalid CASE parameter at ../../commands/clusters/ModelCommand.cpp:53 disabled: true - - label: "TH_CR1 reads the list of Fabrics on DUT_CE" - PICS: OPCREDS.S.A0001 + - label: + "DUT_CR1 sends command to TH_CE to read the list of Fabrics on TH_CE" + PICS: OPCREDS.C.A0001 verification: | - On 1st controller using chip tool, read fabrics list + On DUT controller, read fabrics list Below is the command using chip tool controller - ./chip-tool operationalcredentials read fabrics 1 0 --fabric-filtered 0 + ./chip-tool operationalcredentials read fabrics 1234 0 --fabric-filtered 0 CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 2455995219 [1647863260.286772][9294:9299] CHIP:TOO: Fabrics: 2 entries @@ -201,17 +238,39 @@ tests: [1647863260.287339][9294:9299] CHIP:TOO: Label: [1647863260.287368][9294:9299] CHIP:TOO: FabricIndex: 3 [1647863260.287396][9294:9299] CHIP:TOO: } - [1647863260.287515][9294:9299] CHIP:EM: Sending Standalone Ack for MessageCounter:11301761 on exchange 13180i" + [1647863260.287515][9294:9299] CHIP:EM: Sending Standalone Ack for MessageCounter:11301761 on exchange 13180i disabled: true - label: - "TH_CR1 opens a commissioning window on DUT_CE using a commissioning - timeout of PIXIT.CADMIN.CwDuration seconds using ECM" - PICS: CADMIN.S.C0000 + "DUT_CR1 sends command to TH_CE to read the list of Fabrics on TH_CE" + PICS: OPCREDS.C.A0001 verification: | - On 1st controller chip tool, open commissioning window + grl@grl-ThinkPad-L480:~/may16_cntrl03/connectedhomeip/examples/chip-tool/out/debug$ avahi-browse -rt _matter._tcp + + wlp5s0 IPv6 8E50A59FAF52A809-0000000000000001 _matter._tcp local + + wlp5s0 IPv6 03E707466A904C7E-0000000000000003 _matter._tcp local + = wlp5s0 IPv6 8E50A59FAF52A809-0000000000000001 _matter._tcp local + hostname = [E45F010F27530000.local] + address = [fe80::e65f:1ff:fe0f:2753] + port = [5540] + txt = ["T=1" "SAI=300" "SII=5000"] + = wlp5s0 IPv6 03E707466A904C7E-0000000000000003 _matter._tcp local + hostname = [E45F010F27530000.local] + address = [fe80::e65f:1ff:fe0f:2753] + port = [5540] + txt = ["T=1" "SAI=300" "SII=5000"] + grl@grl-ThinkPad-L480:~/may16_cntrl03/connectedhomeip/examples/chip-tool/out/debug$ + disabled: true + + - label: + "DUT_CR1 sends command to TH_CE to open a commissioning window with a + commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" + PICS: CADMIN.C.C00.Tx + verification: | + On DUT controller chip tool, open commissioning window - ./chip-tool pairing open-commissioning-window 1 1 180 1000 3840 + Below is the example when using chip tool as controller + + ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 [1635925713.966786][9695:9700] CHIP:SC: Success status report received. Session was established [1635925713.966839][9695:9700] CHIP:IN: New secure session created for device 0x0000000000000001, key 33!! @@ -226,7 +285,8 @@ tests: [1635925713.973178][9695:9700] CHIP:EM: Sending Standalone Ack for MessageCounter:1964916542 on exchange 31055i disabled: true - - label: "TH_CR2 starts a commissioning process with DUT_CE" + - label: "TH_CR2 starts a commissioning process with TH_CE" + PICS: CADMIN.C verification: | On 2nd controller using chip tool connect to the accessory @@ -237,14 +297,15 @@ tests: Device commissioning completed with success disabled: true - - label: "TH_CR1 reads the list of Fabrics on DUT_CE" - PICS: OPCREDS.S.A0001 + - label: + "DUT_CR1 sends command to TH_CE to read the list of Fabrics on TH_CE" + PICS: OPCREDS.C.A0001 verification: | - On 1st controller, read fabrics list + On DUT controller, read fabrics list Below is the command using chip tool controller - ./chip-tool operationalcredentials read fabrics 1 0 --fabric-filtered 0 + ./chip-tool operationalcredentials read fabrics 1234 0 --fabric-filtered 0 CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 2455995246 [1647863342.980899][9309:9314] CHIP:TOO: Fabrics: 3 entries diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_18.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_18.yaml index bcbff956bb6429..ede13bb1619e5b 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_18.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_18.yaml @@ -37,7 +37,7 @@ tests: - label: "TH_CR1 opens a commissioning window on DUT_CE using a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" - PICS: CADMIN.S.C0001 + PICS: CADMIN.C.C01.Tx verification: | On 1st controller chip tool, open commissioning window ./chip-tool administratorcommissioning open-basic-commissioning-window 500 1 0 --timedInteractionTimeoutMs 1000 @@ -89,7 +89,7 @@ tests: - label: "TH_CR1 opens a commissioning window on DUT_CE using a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" - PICS: CADMIN.S.C0001 + PICS: CADMIN.C.C01.Tx verification: | On 1st controller chip tool, open commissioning window ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 @@ -246,7 +246,7 @@ tests: - label: "TH_CR1 opens a commissioning window on DUT_CE using a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" - PICS: CADMIN.S.C0001 + PICS: CADMIN.C.C01.Tx verification: | On 1st controller chip tool, open commissioning window diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_19.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_19.yaml index 3bc1ab0c05bc1c..14a76861d4c60e 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_19.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_19.yaml @@ -37,7 +37,7 @@ tests: - label: "DUT_CR1 sends command to TH_CE to open a commissioning window with a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" - PICS: CADMIN.C.C0000 + PICS: CADMIN.S.C00.Rsp verification: | On your DUT controller chip tool, open commissioning window @@ -87,7 +87,7 @@ tests: - label: "DUT_CR1 sends command to TH_CE to open a commissioning window with a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" - PICS: CADMIN.C.C0000 + PICS: CADMIN.S.C00.Rsp verification: | On your DUT controller chip tool, open commissioning window @@ -241,7 +241,7 @@ tests: - label: "DUT_CR1 sends command to TH_CE to open a commissioning window with a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" - PICS: CADMIN.C.C0000 + PICS: CADMIN.S.C00.Rsp verification: | On DUT controller chip tool, open commissioning window diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_2.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_2.yaml index c774dc887224b1..56731fc238451f 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_2.yaml @@ -14,7 +14,7 @@ # Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default name: - 24.1.2. [TC-CADMIN-1.2] Administrator Behavior using BCM [DUT - + 25.1.2. [TC-CADMIN-1.2] Administrator Behavior using BCM [DUT - Commissioner] config: @@ -24,6 +24,7 @@ config: tests: - label: "TH_CR1 starts a commissioning process with TH_CE" + PICS: CADMIN.C verification: | Provision the device using chip tool on first controller disabled: true @@ -32,12 +33,14 @@ tests: "TH_CR1 sends command to TH_CE to open a commissioning window with a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM (Basic Commissioning Method)" - PICS: CADMIN.C.C0001 + PICS: CADMIN.C.C01.Tx verification: | On first controller, usinadministratorcommissioningg chip tool open commissioning window. ./chip-tool administratorcommissioning open-basic-commissioning-window 500 1 0 --timedInteractionTimeoutMs 1000 + + CHIP:DMG: InvokeResponseMessage = [1650278416.248379][11064:11069] CHIP:DMG: { [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, @@ -93,6 +96,7 @@ tests: disabled: true - label: "DUT_CR2 starts a commissioning process with TH_CE" + PICS: CADMIN.C verification: | Using your DUT Controller connect to the accessory. @@ -290,7 +294,7 @@ tests: "DUT_CR2 sends command to TH_CE to open a commissioning window with a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM (Basic Commissioning Method)" - PICS: CADMIN.C.C0001 + PICS: CADMIN.C.C01.Tx verification: | On your DUT controller using chip-tool open commissioning widow using BCM. @@ -334,7 +338,7 @@ tests: - label: "DUT_CR2 sends command to TH_CE to revoke the commissioning window using the Revoke Commissioning command" - PICS: CADMIN.C.C0002 + PICS: CADMIN.C.C02.Tx verification: | On your DUT controller using chip-tool run revoke command @@ -378,6 +382,7 @@ tests: - label: "TH_CR3 attempts to execute a PASE to starts a commissioning process with TH_CE" + PICS: CADMIN.C verification: | 1. On third controller, using chip-tool connect to the accessory. Connect attempt should fail, i.e ./chip-tool pairing onnetwork 3 20202021 @@ -433,7 +438,7 @@ tests: - label: "DUT_CR2 sends command to TH_CE to open a commissioning window using BCM" - PICS: CADMIN.C.C0001 + PICS: CADMIN.C.C01.Tx verification: | On your DUT controller using chip-tool open commissioning widow using BCM. @@ -483,7 +488,7 @@ tests: - label: "DUT_CR2 sends command to TH_CE to open a commissioning window using BCM" - PICS: CADMIN.C.C0001 + PICS: CADMIN.C.C01.Tx verification: | On your DUT controller using chip-tool open commissioning widow using BCM. @@ -527,6 +532,7 @@ tests: - label: "TH_CR1 starts a commissioning process with TH_CE before the timeout from step 15" + PICS: CADMIN.C verification: | Using your 1st Controller connect to the accessory. diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_20.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_20.yaml index 282d17dc5e8989..2893f6230f0f8f 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_20.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_20.yaml @@ -37,7 +37,7 @@ tests: - label: "DUT_CR1 sends command to TH_CE to open a commissioning window with a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" - PICS: CADMIN.C.C0001 + PICS: CADMIN.C.C01.Tx verification: | On your DUT controller chip tool, open commissioning window @@ -91,7 +91,7 @@ tests: - label: "DUT_CR1 sends command to TH_CE to open a commissioning window with a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" - PICS: CADMIN.C.C0001 + PICS: CADMIN.C.C01.Tx verification: | On your DUT controller chip tool, open commissioning window @@ -252,7 +252,7 @@ tests: - label: "DUT_CR1 sends command to TH_CE to open a commissioning window with a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" - PICS: CADMIN.C.C0001 + PICS: CADMIN.C.C01.Tx verification: | On DUT controller chip tool, open commissioning window diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_21.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_21.yaml index c8a91d79722cd0..7d141f30b62397 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_21.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_21.yaml @@ -37,7 +37,7 @@ tests: - label: "TH_CR1 opens a commissioning window on DUT_CE using a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" - PICS: CADMIN.S.C0000 + PICS: CADMIN.S.C00.Rsp verification: | On 1st controller chip tool, open commissioning window @@ -72,7 +72,7 @@ tests: - label: "Repeat Step 3 and Step 4 an additional (SupportedFabrics - 2) times to reach an index value of SupportedFabrics on DUT_CE" - PICS: CADMIN.S.C0000 + PICS: CADMIN.S.C00.Rsp verification: | Repeat step 3 until CommissionedFabrics=SupportedFabrics disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_22.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_22.yaml index eb66242c6c7aa6..de4341f4c19b2b 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_22.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_22.yaml @@ -37,7 +37,7 @@ tests: - label: "TH_CR1 opens a commissioning window on DUT_CE using a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" - PICS: CADMIN.S.C0001 + PICS: CADMIN.S.C00.Rsp verification: | On 1st controller chip tool, open commissioning window @@ -92,7 +92,7 @@ tests: - label: "Repeat Step 3 and Step 4 an additional (SupportedFabrics - 2) times to reach an index value of SupportedFabrics on DUT_CE" - PICS: CADMIN.S.C0001 + PICS: CADMIN.S.C00.Rsp verification: | Repeat step 3 until CommissionedFabrics=SupportedFabrics disabled: true @@ -100,7 +100,7 @@ tests: - label: "THn starts a commissioning process and opens a commissioning window with DUT_CE" - PICS: CADMIN.S.C0001 + PICS: CADMIN.S.C00.Rsp verification: | On nth controller using chip tool connect to the accessory diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_23.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_23.yaml index 93f5589d992d66..0d6adaf3bcddcd 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_23.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_23.yaml @@ -37,7 +37,7 @@ tests: - label: "DUT_CR1 sends command to TH_CE to open a commissioning window with a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" - PICS: CADMIN.C.C0000 + PICS: CADMIN.S.C00.Rsp verification: | On your DUT controller chip tool, open commissioning window @@ -72,7 +72,7 @@ tests: - label: "Repeat Step 3 an additional (SupportedFabrics - 2) times to reach an index value of SupportedFabrics on TH_CE" - PICS: CADMIN.C.C0000 + PICS: CADMIN.S.C00.Rsp verification: | Repeat Step 3 an additional (SupportedFabrics - 2) times to reach an index value of SupportedFabrics on TH_CE disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_24.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_24.yaml index 1d2290ba31dd9c..2e6441ace1f572 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_24.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_24.yaml @@ -37,7 +37,7 @@ tests: - label: "DUT_CR1 sends command to TH_CE to open a commissioning window with a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" - PICS: CADMIN.C.C0001 + PICS: CADMIN.S.C01.Rsp verification: | On your DUT controller chip tool, open commissioning window @@ -93,7 +93,7 @@ tests: - label: "Repeat Step 3 an additional (SupportedFabrics - 2) times to reach an index value of SupportedFabrics on TH_CE" - PICS: CADMIN.C.C0001 + PICS: CADMIN.S.C01.Rsp verification: | Repeat Step 3 an additional (SupportedFabrics - 2) times to reach an index value of SupportedFabrics on TH_CE disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_3.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_3.yaml index 25ab1b5377abb6..3e78a8f7712981 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_3.yaml @@ -32,6 +32,7 @@ tests: - label: "TH_CR1 starts a commissioning process with DUT_CE" cluster: "DelayCommands" command: "WaitForCommissionee" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -40,7 +41,7 @@ tests: - label: "TH_CR1 opens a commissioning window on DUT_CE" cluster: "AdministratorCommissioning" command: "OpenCommissioningWindow" - PICS: CADMIN.S.C0000 + PICS: CADMIN.S.C00.Rsp timedInteractionTimeoutMs: 10000 arguments: values: @@ -90,6 +91,7 @@ tests: value: payload - label: "TH_CR2 starts a commissioning process with DUT_CE" + PICS: CADMIN.S identity: "beta" cluster: "DelayCommands" command: "WaitForCommissionee" @@ -171,7 +173,7 @@ tests: - label: "TH_CR2 opens a commissioning window on DUT_CE" cluster: "AdministratorCommissioning" command: "OpenCommissioningWindow" - PICS: CADMIN.S.C0000 + PICS: CADMIN.S.C00.Rsp identity: "beta" timedInteractionTimeoutMs: 10000 arguments: @@ -207,7 +209,7 @@ tests: - label: "TH_CR2 opens a commissioning window on DUT_CE" cluster: "AdministratorCommissioning" command: "OpenCommissioningWindow" - PICS: CADMIN.S.C0000 + PICS: CADMIN.S.C00.Rsp identity: "beta" timedInteractionTimeoutMs: 10000 arguments: @@ -228,6 +230,7 @@ tests: from step 12" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_4.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_4.yaml index 6e164ea50b9bd4..89dc674ccd3343 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_4.yaml @@ -32,6 +32,7 @@ tests: - label: "TH_CR1 starts a commissioning process with DUT_CE" cluster: "DelayCommands" command: "WaitForCommissionee" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -40,7 +41,7 @@ tests: - label: "TH_CR1 opens a commissioning window on DUT_CE" cluster: "AdministratorCommissioning" command: "OpenBasicCommissioningWindow" - PICS: CADMIN.S.C0001 + PICS: CADMIN.S.C01.Rsp timedInteractionTimeoutMs: 10000 arguments: values: @@ -84,6 +85,7 @@ tests: identity: "beta" cluster: "DelayCommands" command: "WaitForCommissionee" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -160,7 +162,7 @@ tests: cluster: "AdministratorCommissioning" command: "OpenBasicCommissioningWindow" identity: "beta" - PICS: CADMIN.S.C0001 + PICS: CADMIN.S.C01.Rsp timedInteractionTimeoutMs: 10000 arguments: values: @@ -188,7 +190,7 @@ tests: cluster: "AdministratorCommissioning" command: "OpenBasicCommissioningWindow" identity: "beta" - PICS: CADMIN.S.C0001 + PICS: CADMIN.S.C01.Rsp timedInteractionTimeoutMs: 10000 arguments: values: @@ -200,6 +202,7 @@ tests: from step 12" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_5.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_5.yaml index b069605158e986..9cc106fcfd1952 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_5.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_5.yaml @@ -40,6 +40,7 @@ tests: - label: "TH_CR1 starts a commissioning process with DUT_CE" cluster: "DelayCommands" command: "WaitForCommissionee" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -48,7 +49,7 @@ tests: - label: "TH_CR1 opens a new commissioning window on DUT_CE" cluster: "AdministratorCommissioning" command: "OpenCommissioningWindow" - PICS: CADMIN.S.C0000 + PICS: CADMIN.S.C00.Rsp timedInteractionTimeoutMs: 10000 arguments: values: @@ -74,7 +75,7 @@ tests: - label: "TH_CR2 starts a commissioning process with DUT_CE" identity: "beta" cluster: "CommissionerCommands" - PICS: CADMIN.S.C0000 + PICS: CADMIN.S.C00.Rsp command: "PairWithCode" arguments: values: @@ -88,7 +89,7 @@ tests: - label: "TH_CR1 opens a new commissioning window on DUT_CE" cluster: "AdministratorCommissioning" command: "OpenCommissioningWindow" - PICS: CADMIN.S.C0000 + PICS: CADMIN.S.C00.Rsp timedInteractionTimeoutMs: 10000 arguments: values: @@ -106,13 +107,14 @@ tests: - label: "TH_CR1 revokes the commissioning window on DUT_CE" cluster: "AdministratorCommissioning" command: "RevokeCommissioning" - PICS: CADMIN.S.C0002 + PICS: CADMIN.S.C02.Rsp timedInteractionTimeoutMs: 10000 - label: "TH_CR2 starts a commissioning process with DUT_CE" identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -125,7 +127,7 @@ tests: - label: "TH_CR1 revokes the commissioning window on DUT_CE" cluster: "AdministratorCommissioning" command: "RevokeCommissioning" - PICS: CADMIN.S.C0002 + PICS: CADMIN.S.C02.Rsp timedInteractionTimeoutMs: 10000 response: error: FAILURE @@ -146,10 +148,12 @@ tests: response: value: "chiptest" - - label: "TH_CR1 opens a new commissioning window on DUT_CE" + - label: + "TH_CR1 opens a new commissioning window on DUT_CE using wrong + PakeVerifier value" cluster: "AdministratorCommissioning" command: "OpenCommissioningWindow" - PICS: CADMIN.S.C0000 + PICS: CADMIN.S.C00.Rsp timedInteractionTimeoutMs: 10000 arguments: values: @@ -169,7 +173,7 @@ tests: - label: "TH_CR1 opens a new commissioning window on DUT_CE" cluster: "AdministratorCommissioning" command: "OpenCommissioningWindow" - PICS: CADMIN.S.C0000 + PICS: CADMIN.S.C00.Rsp timedInteractionTimeoutMs: 10000 arguments: values: @@ -187,7 +191,7 @@ tests: - label: "TH_CR1 opens a new commissioning window on DUT_CE" cluster: "AdministratorCommissioning" command: "OpenCommissioningWindow" - PICS: CADMIN.S.C0000 + PICS: CADMIN.S.C00.Rsp timedInteractionTimeoutMs: 10000 arguments: values: @@ -202,11 +206,11 @@ tests: - name: "salt" value: "SPAKE2P Key Salt" response: - error: 1 + error: FAILURE #Disabled due to issue 17666 - label: "TH_CR2 starts a commissioning process with DUT_CE" - PICS: PICS_SKIP_SAMPLE_APP + PICS: PICS_SKIP_SAMPLE_APP && CADMIN.S identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" @@ -222,7 +226,7 @@ tests: RevokeCommissioning command" cluster: "AdministratorCommissioning" command: "RevokeCommissioning" - PICS: CADMIN.S.C0002 && PICS_SKIP_SAMPLE_APP + PICS: CADMIN.S.C02.Rsp && PICS_SKIP_SAMPLE_APP timedInteractionTimeoutMs: 10000 response: error: FAILURE @@ -231,6 +235,7 @@ tests: identity: "gamma" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_6.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_6.yaml index 4d6cd686b22390..78a7488f54dc62 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_6.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_6.yaml @@ -40,6 +40,7 @@ tests: - label: "TH_CR1 starts a commissioning process with DUT_CE" cluster: "DelayCommands" command: "WaitForCommissionee" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -50,13 +51,13 @@ tests: cluster: "AdministratorCommissioning" command: "OpenBasicCommissioningWindow" timedInteractionTimeoutMs: 10000 - PICS: CADMIN.S.C0001 + PICS: CADMIN.S.C01.Rsp arguments: values: - name: "CommissioningTimeout" value: 180 - - label: "Wait for PIXIT_COMM_WIN(180) + 10" + - label: "Wait for PIXIT.CADMIN.CwDuration + 10" cluster: "DelayCommands" command: "WaitForMs" arguments: @@ -68,7 +69,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" - PICS: CADMIN.S.C0001 + PICS: CADMIN.S.C01.Rsp arguments: values: - name: "nodeId" @@ -82,7 +83,7 @@ tests: cluster: "AdministratorCommissioning" command: "OpenBasicCommissioningWindow" timedInteractionTimeoutMs: 10000 - PICS: CADMIN.S.C0001 + PICS: CADMIN.S.C01.Rsp arguments: values: - name: "CommissioningTimeout" @@ -91,10 +92,10 @@ tests: - label: "TH_CR1 revokes the commissioning window on DUT_CE" cluster: "AdministratorCommissioning" command: "RevokeCommissioning" - PICS: CADMIN.S.C0002 + PICS: CADMIN.S.C02.Rsp timedInteractionTimeoutMs: 10000 - - label: "Commission from beta" + - label: "TH_CR2 starts a commissioning process with DUT_CE" identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" @@ -111,7 +112,7 @@ tests: cluster: "AdministratorCommissioning" command: "RevokeCommissioning" timedInteractionTimeoutMs: 10000 - PICS: CADMIN.S.C0002 + PICS: CADMIN.S.C02.Rsp response: error: FAILURE @@ -138,24 +139,24 @@ tests: cluster: "AdministratorCommissioning" command: "OpenBasicCommissioningWindow" timedInteractionTimeoutMs: 10000 - PICS: CADMIN.S.C0001 + PICS: CADMIN.S.C01.Rsp arguments: values: - name: "CommissioningTimeout" value: 180 - - label: "TH_CR1 opens a commissioning window on DUT_CE" + - label: "TH_CR1 opens another commissioning window on DUT_CE" identity: "alpha" cluster: "AdministratorCommissioning" command: "OpenBasicCommissioningWindow" timedInteractionTimeoutMs: 10000 - PICS: CADMIN.S.C0001 + PICS: CADMIN.S.C01.Rsp arguments: values: - name: "CommissioningTimeout" value: 180 response: - error: 1 + error: FAILURE - label: "Commission from beta" identity: "beta" @@ -172,6 +173,7 @@ tests: identity: "beta" cluster: "DelayCommands" command: "WaitForCommissionee" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -182,7 +184,7 @@ tests: RevokeCommissioning command" cluster: "AdministratorCommissioning" command: "RevokeCommissioning" - PICS: CADMIN.S.C0002 + PICS: CADMIN.S.C02.Rsp timedInteractionTimeoutMs: 10000 response: error: FAILURE @@ -191,6 +193,7 @@ tests: identity: "gamma" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_7.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_7.yaml index b58d39cea641e1..9f2b4a023afec4 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_7.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_7.yaml @@ -14,7 +14,7 @@ # Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default name: - 24.1.7. [TC-CADMIN-1.7] Commissioning window handling timeout and revocation + 3.1.7. [TC-CADMIN-1.7] Commissioning window handling timeout and revocation using ECM [DUT - Commissioner] config: @@ -24,6 +24,7 @@ config: tests: - label: "DUT_CR1 starts a commissioning process with TH_CE" + PICS: CADMIN.C verification: | 1. Provision the device using DUT_CR1 controller on the raspi. disabled: true @@ -31,7 +32,7 @@ tests: - label: "DUT_CR1 sends command to TH_CE to open a commissioning window with a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" - PICS: CADMIN.C.C0000 + PICS: CADMIN.C.C00.Tx verification: | On your DUT controller open commissioning widow using ECM. @@ -77,6 +78,7 @@ tests: - label: "TH_CR2 starts a commissioning process with TH_CE after PIXIT.CADMIN.CwDuration (that was given in step 2) + 10 seconds" + PICS: CADMIN.C verification: | On the 2nd controller using chip-tool , connect using manual code generated by DUT Controller @@ -94,13 +96,29 @@ tests: "DUT_CR1 sends command to TH_CE to open a new commissioning window with a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" - PICS: CADMIN.C.C0000 + PICS: CADMIN.C.C00.Tx verification: | + On your DUT controller open commissioning widow using ECM. + + Below is the example while using chip tool as controller, + + ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 + [1635871058.908790][4273:4278] CHIP:SC: Success status report received. Session was established + [1635871058.908827][4273:4278] CHIP:IN: New secure session created for device 0x0000000000000001, key 47!! + [1635871058.908924][4273:4278] CHIP:CTL: OpenCommissioningWindow for device ID 1 + [1635871058.916166][4273:4278] CHIP:DMG: ICR moving to [AddingComm] + [1635871058.916223][4273:4278] CHIP:DMG: ICR moving to [AddedComma] + [1635871058.916362][4273:4278] CHIP:IN: Prepared encrypted message 0xaaaac41dfd10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 21937i with MessageCounter:0. + [1635871058.916421][4273:4278] CHIP:IN: Sending encrypted msg 0xaaaac41dfd10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 12630575 msec + [1635871058.916549][4273:4278] CHIP:DMG: ICR moving to [CommandSen] + [1635871058.916607][4273:4278] CHIP:CTL: Manual pairing code: [36366524220] + [1635871058.916679][4273:4278] CHIP:CTL: SetupQRCode: [MT:00000CQM0088GL3XV00] + [1635871058.916745][4273:4278] CHIP:EM: Sending Standalone Ack for MessageCounter:2599714279 on exchange 21936i disabled: true - label: "DUT_CR1 sends command to TH_CE to revoke the commissioning window" - PICS: CADMIN.C.C0002 + PICS: CADMIN.C.C02.Tx verification: | On First controller revoke commissioning @@ -142,6 +160,7 @@ tests: disabled: true - label: "TH_CR2 starts a commissioning process with TH_CE" + PICS: CADMIN.C verification: | On the 2nd controller using chip-tool , connect using manual code generated by DUT Controller @@ -156,7 +175,7 @@ tests: disabled: true - label: "DUT_CR1 sends command to TH_CE to revoke the commissioning window" - PICS: CADMIN.C.C0002 + PICS: CADMIN.C.C02.Tx verification: | On your DUT controller revoke commissioning @@ -243,7 +262,7 @@ tests: - label: "DUT_CR1 sends command to TH_CE to open a commissioning window with a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" - PICS: CADMIN.C.C0000 + PICS: CADMIN.C.C00.Tx verification: | On your DUT controller open commissioning widow using ECM. @@ -265,6 +284,7 @@ tests: disabled: true - label: "TH_CR2 starts a commissioning process with TH_CE" + PICS: CADMIN.C verification: | On the 2nd controller using chip-tool , connect using manual code generated by DUT Controller @@ -277,6 +297,7 @@ tests: disabled: true - label: "TH_CR3 starts a commissioning process with TH_CE" + PICS: CADMIN.C verification: | On the 3rd controller using chip-tool , connect using manual code generated by DUT Controller diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_8.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_8.yaml index 05f839461ccb6f..0746cffb7e07a7 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_8.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_8.yaml @@ -14,7 +14,7 @@ # Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default name: - 24.1.8. [TC-CADMIN-1.8] Commissioning window handling timeout and revocation + 3.1.8. [TC-CADMIN-1.8] Commissioning window handling timeout and revocation using BCM [DUT - Commissioner] config: @@ -24,6 +24,7 @@ config: tests: - label: "DUT_CR1 starts a commissioning process with TH_CE" + PICS: CADMIN.C verification: | 1. Provision the device using DUT_CR1 controller on the raspi. disabled: true @@ -31,7 +32,7 @@ tests: - label: "DUT_CR1 sends command to TH_CE to open a commissioning window with a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" - PICS: CADMIN.C.C0001 + PICS: CADMIN.C.C01.Tx verification: | On your DUT controller open commissioning widow using BCM. @@ -97,6 +98,7 @@ tests: - label: "TH_CR2 starts a commissioning process with TH_CE after PIXIT.CADMIN.CwDuration (that was given in step 2) + 10 seconds" + PICS: CADMIN.C verification: | On the 2nd controller using chip-tool , connect to the accessory @@ -112,7 +114,7 @@ tests: "DUT_CR1 sends command to TH_CE to open a new commissioning window with a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" - PICS: CADMIN.C.C0001 + PICS: CADMIN.C.C01.Tx verification: | On your DUT controller open commissioning widow using BCM. @@ -155,7 +157,7 @@ tests: disabled: true - label: "DUT_CR1 sends command to TH_CE to revoke the commissioning window" - PICS: CADMIN.C.C0002 + PICS: CADMIN.C.C02.Tx verification: | On your DUT controller revoke commissioning @@ -196,6 +198,7 @@ tests: disabled: true - label: "TH_CR2 starts a commissioning process with TH_CE" + PICS: CADMIN.C verification: | On the 2nd controller using chip-tool , connect to the accessory @@ -208,7 +211,7 @@ tests: disabled: true - label: "DUT_CR1 sends command to TH_CE to revoke the commissioning window" - PICS: CADMIN.C.C0002 + PICS: CADMIN.C.C02.Tx verification: | On your DUT controller revoke commissioning @@ -296,7 +299,7 @@ tests: "DUT_CR1 sends command to TH_CE to open a new commissioning window with a commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" - PICS: CADMIN.C.C0001 + PICS: CADMIN.C.C01.Tx verification: | On your DUT controller open commissioning widow using BCM. @@ -340,6 +343,7 @@ tests: disabled: true - label: "TH_CR2 starts a commissioning process with TH_CE" + PICS: CADMIN.C verification: | On the 2nd controller using chip-tool , connect to the accessory @@ -350,6 +354,7 @@ tests: disabled: true - label: "TH_CR3 starts a commissioning process with TH_CE" + PICS: CADMIN.C verification: | On the 3rd controller using chip-tool , connect to the accessory diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_9.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_9.yaml index 4c87005f5a9aed..ed094eb77d4399 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_9.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_9.yaml @@ -43,6 +43,7 @@ tests: - label: "TH_CR1 starts a commissioning process with DUT_CE" cluster: "DelayCommands" command: "WaitForCommissionee" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -52,7 +53,7 @@ tests: cluster: "AdministratorCommissioning" command: "OpenCommissioningWindow" timedInteractionTimeoutMs: 10000 - PICS: CADMIN.S.C0000 + PICS: CADMIN.S.C00.Rsp arguments: values: - name: "CommissioningTimeout" @@ -72,6 +73,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -87,6 +89,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -102,6 +105,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -117,6 +121,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -132,6 +137,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -147,6 +153,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -162,6 +169,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -177,6 +185,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -192,6 +201,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -207,6 +217,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -222,6 +233,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -237,6 +249,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -252,6 +265,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -267,6 +281,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -282,6 +297,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -297,6 +313,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -312,6 +329,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -327,6 +345,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -342,6 +361,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -357,6 +377,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -372,6 +393,7 @@ tests: identity: "beta" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" @@ -385,6 +407,7 @@ tests: identity: "gamma" cluster: "CommissionerCommands" command: "PairWithCode" + PICS: CADMIN.S arguments: values: - name: "nodeId" diff --git a/src/app/tests/suites/certification/Test_TC_CC_1_1.yaml b/src/app/tests/suites/certification/Test_TC_CC_1_1.yaml index 13105d1ff02910..9385a746cd65ce 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_1_1.yaml @@ -54,86 +54,13 @@ tests: type: list contains: [8, 15, 16385, 16394, 65528, 65529, 65531, 65532, 65533] - - label: "Read the feature dependent attribute(CC.S.F00) in AttributeList" - PICS: CC.S.F00 - command: "readAttribute" - attribute: "AttributeList" - response: - constraints: - type: list - contains: [0, 1] - - - label: "Read the feature dependent attribute(CC.S.F03) in AttributeList" - PICS: CC.S.F03 - command: "readAttribute" - attribute: "AttributeList" - response: - constraints: - type: list - contains: [3, 4] - - - label: "Read the feature dependent attribute(CC.S.F04) in AttributeList" - PICS: CC.S.F04 - command: "readAttribute" - attribute: "AttributeList" - response: - constraints: - type: list - contains: [7, 16395, 16396] - - - label: - "Read the feature dependent attribute(CC.S.F04) or - ColorTemperatureMireds in AttributeList" - PICS: CC.S.F04 && CC.S.A4010 - command: "readAttribute" - attribute: "AttributeList" - response: - constraints: - type: list - contains: [16397, 16400] - - - label: "Read the feature dependent attribute(CC.S.F01) in AttributeList" - PICS: CC.S.F01 - command: "readAttribute" - attribute: "AttributeList" - response: - constraints: - type: list - contains: [16384] - - - label: "Read the feature dependent attribute(CC.S.F02) in AttributeList" - PICS: CC.S.F02 - command: "readAttribute" - attribute: "AttributeList" - response: - constraints: - type: list - contains: [16386, 16387, 16388, 16389, 16390] - - - label: "Read the feature dependent attribute(CC.S.F00) in AttributeList" - PICS: CC.S.F00 - command: "readAttribute" - attribute: "AttributeList" - response: - constraints: - type: list - contains: [] - - - label: "Read the feature dependent attribute(CC.S.F00) in AttributeList" - PICS: CC.S.F00 - command: "readAttribute" - attribute: "AttributeList" - response: - constraints: - type: list - contains: [] - - label: "Read the global attribute: AcceptedCommandList" command: "readAttribute" attribute: "AcceptedCommandList" response: constraints: type: list + contains: [] - label: "Read the global attribute: GeneratedCommandList" command: "readAttribute" diff --git a/src/app/tests/suites/certification/Test_TC_CC_2_1.yaml b/src/app/tests/suites/certification/Test_TC_CC_2_1.yaml index 88db602018f901..8f5debd61f9b73 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_2_1.yaml @@ -29,7 +29,7 @@ tests: value: nodeId - label: "TH reads CurrentHue attribute from DUT" - PICS: CC.S.A0000 && CC.S.F00 + PICS: CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: @@ -39,7 +39,7 @@ tests: maxValue: 255 - label: "TH reads CurrentSaturation attribute from DUT" - PICS: CC.S.A0001 && CC.S.F00 + PICS: CC.S.A0001 command: "readAttribute" attribute: "CurrentSaturation" response: @@ -59,7 +59,7 @@ tests: maxValue: 65535 - label: "TH reads CurrentX attribute from DUT" - PICS: CC.S.A0003 && CC.S.F03 + PICS: CC.S.A0003 command: "readAttribute" attribute: "CurrentX" response: @@ -69,7 +69,7 @@ tests: maxValue: 65279 - label: "TH reads CurrentY attribute from DUT" - PICS: CC.S.A0004 && CC.S.F04 + PICS: CC.S.A0004 command: "readAttribute" attribute: "CurrentY" response: @@ -98,7 +98,7 @@ tests: maxLength: 254 - label: "TH reads ColorTemperatureMireds attribute from DUT" - PICS: CC.S.A0007 && CC.S.F04 + PICS: CC.S.A0007 command: "readAttribute" attribute: "ColorTemperature" response: @@ -128,7 +128,7 @@ tests: maxValue: 4 - label: "TH reads EnhancedCurrentHue attribute from DUT" - PICS: CC.S.A4000 && CC.S.F01 + PICS: CC.S.A4000 command: "readAttribute" attribute: "EnhancedCurrentHue" response: @@ -138,7 +138,7 @@ tests: maxValue: 65535 - label: "TH reads EnhancedColorMode attribute from DUT" - PICS: CC.S.F02 && CC.S.A4001 + PICS: CC.S.F02 command: "readAttribute" attribute: "EnhancedColorMode" response: @@ -148,7 +148,7 @@ tests: maxValue: 3 - label: "TH reads ColorLoopActive attribute from DUT" - PICS: CC.S.A4002 && CC.S.F02 + PICS: CC.S.A4002 command: "readAttribute" attribute: "ColorLoopActive" response: @@ -158,7 +158,7 @@ tests: maxValue: 255 - label: "TH reads ColorLoopDirection attribute from DUT" - PICS: CC.S.A4003 && CC.S.F02 + PICS: CC.S.A4003 command: "readAttribute" attribute: "ColorLoopDirection" response: @@ -168,7 +168,7 @@ tests: maxValue: 255 - label: "TH reads ColorLoopTime attribute from DUT" - PICS: CC.S.A4004 && CC.S.F02 + PICS: CC.S.A4004 command: "readAttribute" attribute: "ColorLoopTime" response: @@ -178,7 +178,7 @@ tests: maxValue: 65535 - label: "TH reads ColorLoopStartEnhancedHue attribute from DUT" - PICS: CC.S.A4005 && CC.S.F02 + PICS: CC.S.A4005 command: "readAttribute" attribute: "ColorLoopStartEnhancedHue" response: @@ -188,7 +188,7 @@ tests: maxValue: 65535 - label: "TH reads ColorLoopStoredEnhancedHue attribute from DUT" - PICS: CC.S.A4006 && CC.S.F02 + PICS: CC.S.A4006 command: "readAttribute" attribute: "ColorLoopStoredEnhancedHue" response: @@ -215,7 +215,7 @@ tests: maxValue: 31 - label: "TH reads ColorTempPhysicalMinMireds attribute from DUT" - PICS: CC.S.A400b && CC.S.F04 + PICS: CC.S.A400b command: "readAttribute" attribute: "ColorTempPhysicalMinMireds" response: @@ -225,7 +225,7 @@ tests: maxValue: 65279 - label: "TH reads ColorTempPhysicalMaxMireds attribute from DUT" - PICS: CC.S.A400c && CC.S.F04 + PICS: CC.S.A400c command: "readAttribute" attribute: "ColorTempPhysicalMaxMireds" response: @@ -235,7 +235,7 @@ tests: maxValue: 65279 - label: "TH reads CoupleColorTempToLevelMinMireds attribute from DUT" - PICS: CC.S.A400d && CC.S.F04 + PICS: CC.S.A400d command: "readAttribute" attribute: "CoupleColorTempToLevelMinMireds" response: @@ -245,7 +245,7 @@ tests: maxValue: 65279 - label: "TH reads StartUpColorTemperatureMireds attribute from DUT" - PICS: CC.S.A4010 && CC.S.F04 + PICS: CC.S.A4010 command: "readAttribute" attribute: "StartUpColorTemperatureMireds" response: @@ -265,186 +265,378 @@ tests: minValue: 0 maxValue: 6 - - label: "TH reads Primary1X attribute from DUT" - PICS: CC.S.A0011 - command: "readAttribute" - attribute: "Primary1X" - response: - constraints: - type: uint16 - minValue: 0 - maxValue: 65279 - - - label: "TH reads Primary1Y attribute from DUT" - PICS: CC.S.A0012 - command: "readAttribute" - attribute: "Primary1Y" - response: - constraints: - type: uint16 - minValue: 0 - maxValue: 65279 - - - label: "TH reads Primary1Intensity attribute from DUT" - PICS: CC.S.A0013 - command: "readAttribute" - attribute: "Primary1Intensity" - response: - constraints: - type: uint8 - minValue: 0 - maxValue: 255 - - - label: "TH reads Primary2X attribute from DUT" - PICS: CC.S.A0015 - command: "readAttribute" - attribute: "Primary2X" - response: - constraints: - type: uint16 - minValue: 0 - maxValue: 65279 - - - label: "TH reads Primary2Y attribute from DUT" - PICS: CC.S.A0016 - command: "readAttribute" - attribute: "Primary2Y" - response: - constraints: - type: uint16 - minValue: 0 - maxValue: 65279 - - - label: "TH reads Primary2Intensity attribute from DUT" - PICS: CC.S.A0017 - command: "readAttribute" - attribute: "Primary2Intensity" - response: - constraints: - type: uint8 - minValue: 0 - maxValue: 255 - - - label: "TH reads Primary3X attribute from DUT" - PICS: CC.S.A0019 - command: "readAttribute" - attribute: "Primary3X" - response: - constraints: - type: uint16 - minValue: 0 - maxValue: 65279 - - - label: "TH reads Primary3Y attribute from DUT" - PICS: CC.S.A001a - command: "readAttribute" - attribute: "Primary3Y" - response: - constraints: - type: uint16 - minValue: 0 - maxValue: 65279 - - - label: "TH reads Primary3Intensity attribute from DUT" - PICS: CC.S.A001b - command: "readAttribute" - attribute: "Primary3Intensity" - response: - constraints: - type: uint8 - minValue: 0 - maxValue: 255 + - label: + "TH reads Primary1X attribute from DUT and Verify that the DUT + response contains an uint16 [Min:0 Max:0xfeff] if NumberOfPrimaries is + 1 or more" + verification: | + ./chip-tool colorcontrol read primary1x 1 1 + + Verify in TH Logs: + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0011 DataVersion: 540305990 + [1651483665.109697][3245:3250] CHIP:TOO: primary 1 x: 0 + [1651483665.109797][3245:3250] CHIP:EM: Sending Standalone Ack for MessageCounter:12731123 on exchange 55053i + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_USER_PROMPT && CC.S.A0011 + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" + + - label: + "TH reads Primary1Y attribute from DUT and Verify that the DUT + response contains an uint16 [Min:0 Max:0xfeff] if NumberOfPrimaries is + 1 or more" + verification: | + ./chip-tool colorcontrol read primary1y 1 1 + + Verify in TH Logs: + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0012 DataVersion: 540305990 + [1651483698.733322][3253:3259] CHIP:TOO: primary 1 y: 0 + [1651483698.733420][3253:3259] CHIP:EM: Sending Standalone Ack for MessageCounter:7863787 on exchange 13103i + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_USER_PROMPT && CC.S.A0012 + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" + + - label: + "TH reads Primary1Intensity attribute from DUT and Verify that the DUT + response contains an uint8 if NumberOfPrimaries is 1 or more" + verification: | + ./chip-tool colorcontrol read primary1intensity 1 1 + + Verify in TH Logs: + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0013 DataVersion: 540305990 + [1651483742.297459][3263:3268] CHIP:TOO: primary 1 intensity: 0 + [1651483742.297558][3263:3268] CHIP:EM: Sending Standalone Ack for MessageCounter:10210809 on exchange 7007i + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_USER_PROMPT && CC.S.A0013 + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" + + - label: + "TH reads Primary2X attribute from DUT and Verify that the DUT + response contains an uint16 [Min:0 Max:0xfeff] if NumberOfPrimaries is + 2 or more" + verification: | + ./chip-tool colorcontrol read primary2x 1 1 + + Verify in TH Logs: + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0015 DataVersion: 540305990 + [1651483777.233498][3270:3275] CHIP:TOO: primary 2 x: 0 + [1651483777.233614][3270:3275] CHIP:EM: Sending Standalone Ack for MessageCounter:1684573 on exchange 21377i + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_USER_PROMPT && CC.S.A0015 + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" + + - label: + "TH reads Primary2Y attribute from DUT and Verify that the DUT + response contains an uint16 [Min:0 Max:0xfeff] if NumberOfPrimaries is + 2 or more" + verification: | + ./chip-tool colorcontrol read primary2y 1 1 + + Verify in TH Logs: + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0016 DataVersion: 540305990 + [1651483805.650796][3279:3284] CHIP:TOO: primary 2 y: 0 + [1651483805.650942][3279:3284] CHIP:EM: Sending Standalone Ack for MessageCounter:16277541 on exchange 10435i + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_USER_PROMPT && CC.S.A0016 + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" + + - label: + "TH reads Primary2Intensity attribute from DUT and Verify that the DUT + response contains an uint8 if NumberOfPrimaries is 2 or more" + verification: | + ./chip-tool colorcontrol read primary2intensity 1 1 + + Verify in TH Logs: + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0017 DataVersion: 540305990 + [1651483834.596380][3285:3290] CHIP:TOO: primary 2 intensity: 0 + [1651483834.596470][3285:3290] CHIP:EM: Sending Standalone Ack for MessageCounter:5986355 on exchange 855i + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_USER_PROMPT && CC.S.A0017 + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" + + - label: + "TH reads Primary3X attribute from DUT and Verify that the DUT + response contains an uint16 [Min:0 Max:0xfeff] if NumberOfPrimaries is + 3 or more" + verification: | + ./chip-tool colorcontrol read primary3x 1 1 + + Verify in TH Logs: + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0019 DataVersion: 540305990 + [1651483937.072323][3298:3303] CHIP:TOO: primary 3 x: 0 + [1651483937.072405][3298:3303] CHIP:EM: Sending Standalone Ack for MessageCounter:6092298 on exchange 12519i + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_USER_PROMPT && CC.S.A0019 + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" + + - label: + "TH reads Primary3Y attribute from DUT and Verify that the DUT + response contains an uint16 [Min:0 Max:0xfeff] if NumberOfPrimaries is + 3 or more" + verification: | + ./chip-tool colorcontrol read primary3y 1 1 + + Verify in TH Logs: + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_001A DataVersion: 540305990 + [1651483967.386334][3305:3310] CHIP:TOO: primary 3 y: 0 + [1651483967.386427][3305:3310] CHIP:EM: Sending Standalone Ack for MessageCounter:3329418 on exchange 11657i + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_USER_PROMPT && CC.S.A001a + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" + + - label: + "TH reads Primary3Intensity attribute from DUT and Verify that the DUT + response contains an uint8 if NumberOfPrimaries is 3 or more" + verification: | + ./chip-tool colorcontrol read primary3intensity 1 1 + + Verify in TH Logs: + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_001B DataVersion: 540305990 + [1651484113.812178][3316:3321] CHIP:TOO: primary 3 intensity: 0 + [1651484113.812270][3316:3321] CHIP:EM: Sending Standalone Ack for MessageCounter:41658 on exchange 9618i + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_USER_PROMPT && CC.S.A001b + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" #Additional Defined Primaries Information Attribute Set - - label: "TH reads Primary4X attribute from DUT" - PICS: CC.S.A0020 - command: "readAttribute" - attribute: "Primary4X" - response: - constraints: - type: uint16 - minValue: 0 - maxValue: 65279 - - - label: "TH reads Primary4Y attribute from DUT" - PICS: CC.S.A0021 - command: "readAttribute" - attribute: "Primary4Y" - response: - constraints: - type: uint16 - minValue: 0 - maxValue: 65279 - - - label: "TH reads Primary4Intensity attribute from DUT" - PICS: CC.S.A0022 - command: "readAttribute" - attribute: "Primary4Intensity" - response: - constraints: - type: uint8 - minValue: 0 - maxValue: 255 - - - label: "TH reads Primary5X attribute from DUT" - PICS: CC.S.A0024 - command: "readAttribute" - attribute: "Primary5X" - response: - constraints: - type: uint16 - minValue: 0 - maxValue: 65279 - - - label: "TH reads Primary5Y attribute from DUT" - PICS: CC.S.A0025 - command: "readAttribute" - attribute: "Primary5Y" - response: - constraints: - type: uint16 - minValue: 0 - maxValue: 65279 - - - label: "TH reads Primary5Intensity attribute from DUT" - PICS: CC.S.A0026 - command: "readAttribute" - attribute: "Primary5Intensity" - response: - constraints: - type: uint8 - minValue: 0 - maxValue: 255 - - - label: "TH reads Primary6X attribute from DUT" - PICS: CC.S.A0028 - command: "readAttribute" - attribute: "Primary6X" - response: - constraints: - type: uint16 - minValue: 0 - maxValue: 65279 - - - label: "TH reads Primary6Y attribute from DUT" - PICS: CC.S.A0029 - command: "readAttribute" - attribute: "Primary6Y" - response: - constraints: - type: uint16 - minValue: 0 - maxValue: 65279 - - - label: "TH reads Primary6Intensity attribute from DUT" - PICS: CC.S.A002a - command: "readAttribute" - attribute: "Primary6Intensity" - response: - constraints: - type: uint8 - minValue: 0 - maxValue: 255 + - label: + "TH reads Primary4X attribute from DUT Verify that the DUT response + contains an uint16 [Min:0 Max:0xfeff] if NumberOfPrimaries is 4 or + more" + verification: | + ./chip-tool colorcontrol read primary4x 1 1 + + Verify in TH Logs: + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0020 DataVersion: 540305990 + [1651484143.778301][3324:3329] CHIP:TOO: primary 4 x: 0 + [1651484143.778392][3324:3329] CHIP:EM: Sending Standalone Ack for MessageCounter:2094184 on exchange 50270i + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_USER_PROMPT && CC.S.A0020 + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" + + - label: + "TH reads Primary4Y attribute from DUT and Verify that the DUT + response contains an uint16 [Min:0 Max:0xfeff] if NumberOfPrimaries is + 4 or more" + verification: | + ./chip-tool colorcontrol read primary4y 1 1 + + Verify in TH Logs: + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0021 DataVersion: 540305990 + [1651484171.921901][3334:3339] CHIP:TOO: primary 4 y: 0 + [1651484171.921984][3334:3339] CHIP:EM: Sending Standalone Ack for MessageCounter:3701827 on exchange 16726i + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_USER_PROMPT && CC.S.A0021 + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" + + - label: + "TH reads Primary4Intensity attribute from DUT and Verify that the DUT + response contains an uint8 if NumberOfPrimaries is 4 or more" + verification: | + ./chip-tool colorcontrol read primary4intensity 1 1 + + Verify in TH Logs: + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0022 DataVersion: 540305990 + [1651484198.443415][3341:3346] CHIP:TOO: primary 4 intensity: 0 + [1651484198.443528][3341:3346] CHIP:EM: Sending Standalone Ack for MessageCounter:1740063 on exchange 36245i + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_USER_PROMPT && CC.S.A0022 + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" + + - label: + "TH reads Primary5X attribute from DUT and Verify that the DUT + response contains an uint16 [Min:0 Max:0xfeff] if NumberOfPrimaries is + 5 or more" + verification: | + ./chip-tool colorcontrol read primary5x 1 1 + + Verify in TH Logs: + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0024 DataVersion: 540305990 + [1651484241.467661][3350:3355] CHIP:TOO: primary 5 x: 0 + [1651484241.467788][3350:3355] CHIP:EM: Sending Standalone Ack for MessageCounter:5350139 on exchange 63040i + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_USER_PROMPT && CC.S.A0024 + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" + + - label: + "TH reads Primary5Y attribute from DUT and Verify that the DUT + response contains an uint16 [Min:0 Max:0xfeff] if NumberOfPrimaries is + 5 or more" + verification: | + ./chip-tool colorcontrol read primary5y 1 1 + + Verify in TH Logs: + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0025 DataVersion: 540305990 + [1651484286.709863][3358:3363] CHIP:TOO: primary 5 y: 0 + [1651484286.709964][3358:3363] CHIP:EM: Sending Standalone Ack for MessageCounter:7199124 on exchange 47604i + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_USER_PROMPT && CC.S.A0025 + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" + + - label: + "TH reads Primary5Intensity attribute from DUT and Verify that the DUT + response contains an uint8 if NumberOfPrimaries is 5 or more" + verification: | + ./chip-tool colorcontrol read primary5intensity 1 1 + + Verify in TH Logs: + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0026 DataVersion: 540305990 + [1651484304.715731][3365:3370] CHIP:TOO: primary 5 intensity: 0 + [1651484304.715829][3365:3370] CHIP:EM: Sending Standalone Ack for MessageCounter:8654922 on exchange 29272i + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_USER_PROMPT && CC.S.A0026 + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" + + - label: + "TH reads Primary6X attribute from DUT and Verify that the DUT + response contains an uint16 [Min:0 Max:0xfeff] if NumberOfPrimaries is + 6 or more" + verification: | + ./chip-tool colorcontrol read primary6x 1 1 + + Verify in TH Logs: + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0028 DataVersion: 540305990 + [1651484349.601181][3372:3377] CHIP:TOO: primary 6 x: 0 + [1651484349.601269][3372:3377] CHIP:EM: Sending Standalone Ack for MessageCounter:13704291 on exchange 30507i + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_USER_PROMPT && CC.S.A0028 + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" + + - label: + "TH reads Primary6Y attribute from DUT and Verify that the DUT + response contains an uint16 [Min:0 Max:0xfeff] if NumberOfPrimaries is + 6 or more" + verification: | + ./chip-tool colorcontrol read primary6y 1 1 + + Verify in TH Logs: + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0028 DataVersion: 540305990 + [1651484349.601181][3372:3377] CHIP:TOO: primary 6 x: 0 + [1651484349.601269][3372:3377] CHIP:EM: Sending Standalone Ack for MessageCounter:13704291 on exchange 30507i + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_USER_PROMPT && CC.S.A0029 + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" + + - label: + "TH reads Primary6Intensity attribute from DUT and Verify that the DUT + response contains an uint8 if NumberOfPrimaries is 6 or more" + verification: | + ./chip-tool colorcontrol read primary6intensity 1 1 + + Verify in TH Logs: + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_002A DataVersion: 540305990 + [1651484392.490974][3378:3383] CHIP:TOO: primary 6 intensity: 0 + [1651484392.491074][3378:3383] CHIP:EM: Sending Standalone Ack for MessageCounter:2427165 on exchange 17769i + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_USER_PROMPT && CC.S.A002a + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" #Defined Color Points Settings Attribute Set - label: "TH reads WhitePointX attribute from DUT" diff --git a/src/app/tests/suites/certification/Test_TC_CC_2_2.yaml b/src/app/tests/suites/certification/Test_TC_CC_2_2.yaml index 6f5d019ae66bf1..802e6486d5a0e9 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_2_2.yaml @@ -32,9 +32,33 @@ tests: PICS: CC.C.A0000 verification: | ./chip-tool colorcontrol read current-hue 1 1 - [1649661322.115302][7976:7981] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0000 DataVersion: 4087274515 - [1649661322.115376][7976:7981] CHIP:TOO: current hue: 0 - [1649661322.115473][7976:7981] CHIP:EM: Sending Standalone Ack for MessageCounter:14511861 on exchange 26516i + + Verify in DUT as client side log: + + [1657908705.581609][2861:2861] CHIP:IM: Received Read request + [1657908705.581752][2861:2861] CHIP:DMG: ReadRequestMessage = + [1657908705.581807][2861:2861] CHIP:DMG: { + [1657908705.581874][2861:2861] CHIP:DMG: AttributePathIBs = + [1657908705.581941][2861:2861] CHIP:DMG: [ + [1657908705.581993][2861:2861] CHIP:DMG: AttributePathIB = + [1657908705.582069][2861:2861] CHIP:DMG: { + [1657908705.582128][2861:2861] CHIP:DMG: Endpoint = 0x1, + [1657908705.582193][2861:2861] CHIP:DMG: Cluster = 0x300, + [1657908705.582279][2861:2861] CHIP:DMG: Attribute = 0x0000_0000, + [1657908705.582341][2861:2861] CHIP:DMG: } + [1657908705.582399][2861:2861] CHIP:DMG: + [1657908705.582456][2861:2861] CHIP:DMG: ], + [1657908705.582513][2861:2861] CHIP:DMG: + [1657908705.582569][2861:2861] CHIP:DMG: isFabricFiltered = true, + [1657908705.582622][2861:2861] CHIP:DMG: InteractionModelRevision = 1 + [1657908705.582671][2861:2861] CHIP:DMG: }, + [1657908705.582814][2861:2861] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657908705.582973][2861:2861] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657908705.583034][2861:2861] CHIP:DMG: Cluster 300, Attribute 0 is dirty + [1657908705.583079][2861:2861] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0000 (expanded=0) + [1657908705.583133][2861:2861] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657908705.583195][2861:2861] CHIP:DMG: AccessControl: allowed + [1657908705.583290][2861:2861] CHIP:DMG: Sending report (payload has 37 bytes)... disabled: true - label: @@ -43,9 +67,29 @@ tests: PICS: CC.C.A0001 verification: | ./chip-tool colorcontrol read current-saturation 1 1 - [1649661322.558054][7982:7987] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0001 DataVersion: 4087274515 - [1649661322.558128][7982:7987] CHIP:TOO: current saturation: 0 - [1649661322.558225][7982:7987] CHIP:EM: Sending Standalone Ack for MessageCounter:13666860 on exchange 22550i + + Verify in DUT as client side log: + [1657908593.710273][2861:2861] CHIP:IM: Received Read request + [1657908593.710359][2861:2861] CHIP:DMG: ReadRequestMessage = + [1657908593.710389][2861:2861] CHIP:DMG: { + [1657908593.710438][2861:2861] CHIP:DMG: AttributePathIBs = + [1657908593.710469][2861:2861] CHIP:DMG: [ + [1657908593.710496][2861:2861] CHIP:DMG: AttributePathIB = + [1657908593.710540][2861:2861] CHIP:DMG: { + [1657908593.710572][2861:2861] CHIP:DMG: Endpoint = 0x1, + [1657908593.710607][2861:2861] CHIP:DMG: Cluster = 0x300, + [1657908593.710653][2861:2861] CHIP:DMG: Attribute = 0x0000_0001, + [1657908593.710686][2861:2861] CHIP:DMG: } + [1657908593.710718][2861:2861] CHIP:DMG: + [1657908593.710757][2861:2861] CHIP:DMG: ], + [1657908593.710790][2861:2861] CHIP:DMG: + [1657908593.710820][2861:2861] CHIP:DMG: isFabricFiltered = true, + [1657908593.710861][2861:2861] CHIP:DMG: InteractionModelRevision = 1 + [1657908593.710888][2861:2861] CHIP:DMG: }, + [1657908593.710983][2861:2861] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657908593.711095][2861:2861] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657908593.711129][2861:2861] CHIP:DMG: Cluster 300, Attribute 1 is dirty + [1657908593.711154][2861:2861] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 disabled: true - label: @@ -54,9 +98,31 @@ tests: verification: | ./chip-tool colorcontrol read remaining-time 1 1 - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0002 DataVersion: 540305990 - [1651485342.420726][3496:3501] CHIP:TOO: remaining time: 0 - [1651485342.420816][3496:3501] CHIP:EM: Sending Standalone Ack for MessageCounter:6536290 on exchange 31520i + Verify in DUT as client side log: + [1657908803.102070][2933:2933] CHIP:IM: Received Read request + [1657908803.102154][2933:2933] CHIP:DMG: ReadRequestMessage = + [1657908803.102182][2933:2933] CHIP:DMG: { + [1657908803.102204][2933:2933] CHIP:DMG: AttributePathIBs = + [1657908803.102230][2933:2933] CHIP:DMG: [ + [1657908803.102254][2933:2933] CHIP:DMG: AttributePathIB = + [1657908803.102282][2933:2933] CHIP:DMG: { + [1657908803.102310][2933:2933] CHIP:DMG: Endpoint = 0x1, + [1657908803.102344][2933:2933] CHIP:DMG: Cluster = 0x300, + [1657908803.102376][2933:2933] CHIP:DMG: Attribute = 0x0000_0002, + [1657908803.102405][2933:2933] CHIP:DMG: } + [1657908803.102433][2933:2933] CHIP:DMG: + [1657908803.102459][2933:2933] CHIP:DMG: ], + [1657908803.102493][2933:2933] CHIP:DMG: + [1657908803.102521][2933:2933] CHIP:DMG: isFabricFiltered = true, + [1657908803.102546][2933:2933] CHIP:DMG: InteractionModelRevision = 1 + [1657908803.102568][2933:2933] CHIP:DMG: }, + [1657908803.102647][2933:2933] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657908803.102755][2933:2933] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657908803.102790][2933:2933] CHIP:DMG: Cluster 300, Attribute 2 is dirty + [1657908803.102812][2933:2933] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0002 (expanded=0) + [1657908803.102841][2933:2933] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657908803.102875][2933:2933] CHIP:DMG: AccessControl: allowed + [1657908803.102936][2933:2933] CHIP:DMG: Sending report (payload has 37 bytes)... disabled: true - label: @@ -65,9 +131,32 @@ tests: PICS: CC.C.A0003 verification: | ./chip-tool colorcontrol read current-x 1 1 - [1649661322.994696][7988:7993] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0003 DataVersion: 4087274515 - [1649661322.994764][7988:7993] CHIP:TOO: current x: 24939 - [1649661322.994850][7988:7993] CHIP:EM: Sending Standalone Ack for MessageCounter:15274073 on exchange 48270i + + Verify in DUT as client side log: + [1657908856.780574][2933:2933] CHIP:IM: Received Read request + [1657908856.780702][2933:2933] CHIP:DMG: ReadRequestMessage = + [1657908856.780750][2933:2933] CHIP:DMG: { + [1657908856.780790][2933:2933] CHIP:DMG: AttributePathIBs = + [1657908856.780837][2933:2933] CHIP:DMG: [ + [1657908856.780881][2933:2933] CHIP:DMG: AttributePathIB = + [1657908856.780930][2933:2933] CHIP:DMG: { + [1657908856.780981][2933:2933] CHIP:DMG: Endpoint = 0x1, + [1657908856.781112][2933:2933] CHIP:DMG: Cluster = 0x300, + [1657908856.781177][2933:2933] CHIP:DMG: Attribute = 0x0000_0003, + [1657908856.781230][2933:2933] CHIP:DMG: } + [1657908856.781283][2933:2933] CHIP:DMG: + [1657908856.781330][2933:2933] CHIP:DMG: ], + [1657908856.781441][2933:2933] CHIP:DMG: + [1657908856.781492][2933:2933] CHIP:DMG: isFabricFiltered = true, + [1657908856.781539][2933:2933] CHIP:DMG: InteractionModelRevision = 1 + [1657908856.781581][2933:2933] CHIP:DMG: }, + [1657908856.781710][2933:2933] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657908856.781911][2933:2933] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657908856.781965][2933:2933] CHIP:DMG: Cluster 300, Attribute 3 is dirty + [1657908856.782004][2933:2933] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0003 (expanded=0) + [1657908856.782053][2933:2933] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657908856.782108][2933:2933] CHIP:DMG: AccessControl: allowed + [1657908856.782247][2933:2933] CHIP:DMG: Sending report (payload has 38 bytes)... disabled: true - label: @@ -76,9 +165,32 @@ tests: PICS: CC.C.A0004 verification: | ./chip-tool colorcontrol read current-y 1 1 - [1649661323.433317][7994:7999] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0004 DataVersion: 4087274515 - [1649661323.433391][7994:7999] CHIP:TOO: current y: 24701 - [1649661323.433490][7994:7999] CHIP:EM: Sending Standalone Ack for MessageCounter:12384629 on exchange 18947i + + Verify in DUT as client side log: + [1657909305.413625][2933:2933] CHIP:IM: Received Read request + [1657909305.413743][2933:2933] CHIP:DMG: ReadRequestMessage = + [1657909305.413786][2933:2933] CHIP:DMG: { + [1657909305.413822][2933:2933] CHIP:DMG: AttributePathIBs = + [1657909305.413864][2933:2933] CHIP:DMG: [ + [1657909305.413903][2933:2933] CHIP:DMG: AttributePathIB = + [1657909305.413946][2933:2933] CHIP:DMG: { + [1657909305.413991][2933:2933] CHIP:DMG: Endpoint = 0x1, + [1657909305.414039][2933:2933] CHIP:DMG: Cluster = 0x300, + [1657909305.414089][2933:2933] CHIP:DMG: Attribute = 0x0000_0004, + [1657909305.414136][2933:2933] CHIP:DMG: } + [1657909305.414181][2933:2933] CHIP:DMG: + [1657909305.414223][2933:2933] CHIP:DMG: ], + [1657909305.414268][2933:2933] CHIP:DMG: + [1657909305.414311][2933:2933] CHIP:DMG: isFabricFiltered = true, + [1657909305.414352][2933:2933] CHIP:DMG: InteractionModelRevision = 1 + [1657909305.414387][2933:2933] CHIP:DMG: }, + [1657909305.414502][2933:2933] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657909305.414634][2933:2933] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657909305.414682][2933:2933] CHIP:DMG: Cluster 300, Attribute 4 is dirty + [1657909305.414717][2933:2933] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0004 (expanded=0) + [1657909305.414761][2933:2933] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657909305.414812][2933:2933] CHIP:DMG: AccessControl: allowed + [1657909305.414892][2933:2933] CHIP:DMG: Sending report (payload has 38 bytes)... disabled: true - label: @@ -88,9 +200,31 @@ tests: verification: | ./chip-tool colorcontrol read drift-compensation 1 1 - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0005 DataVersion: 540305990 - [1651485386.691700][3506:3511] CHIP:TOO: drift compensation: 0 - [1651485386.691805][3506:3511] CHIP:EM: Sending Standalone Ack for MessageCounter:12144117 on exchange 57338i + Verify in DUT as client side log: + [1657909433.948649][2933:2933] CHIP:IM: Received Read request + [1657909433.948766][2933:2933] CHIP:DMG: ReadRequestMessage = + [1657909433.948809][2933:2933] CHIP:DMG: { + [1657909433.948844][2933:2933] CHIP:DMG: AttributePathIBs = + [1657909433.948885][2933:2933] CHIP:DMG: [ + [1657909433.948923][2933:2933] CHIP:DMG: AttributePathIB = + [1657909433.948966][2933:2933] CHIP:DMG: { + [1657909433.949010][2933:2933] CHIP:DMG: Endpoint = 0x1, + [1657909433.949063][2933:2933] CHIP:DMG: Cluster = 0x300, + [1657909433.949113][2933:2933] CHIP:DMG: Attribute = 0x0000_0005, + [1657909433.949158][2933:2933] CHIP:DMG: } + [1657909433.949207][2933:2933] CHIP:DMG: + [1657909433.949248][2933:2933] CHIP:DMG: ], + [1657909433.949292][2933:2933] CHIP:DMG: + [1657909433.949334][2933:2933] CHIP:DMG: isFabricFiltered = true, + [1657909433.949375][2933:2933] CHIP:DMG: InteractionModelRevision = 1 + [1657909433.949413][2933:2933] CHIP:DMG: }, + [1657909433.949528][2933:2933] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657909433.949656][2933:2933] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657909433.949702][2933:2933] CHIP:DMG: Cluster 300, Attribute 5 is dirty + [1657909433.949738][2933:2933] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0005 (expanded=0) + [1657909433.949786][2933:2933] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657909433.949836][2933:2933] CHIP:DMG: AccessControl: allowed + [1657909433.949917][2933:2933] CHIP:DMG: Sending report (payload has 37 bytes)... disabled: true - label: @@ -100,9 +234,31 @@ tests: verification: | ./chip-tool colorcontrol read compensation-text 1 1 - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0006 DataVersion: 540305990 - [1651485417.552058][3512:3517] CHIP:TOO: compensation text: - [1651485417.552171][3512:3517] CHIP:EM: Sending Standalone Ack for MessageCounter:354764 on exchange 31359i + Verify in DUT as client side log: + [1657909470.827379][2933:2933] CHIP:IM: Received Read request + [1657909470.827505][2933:2933] CHIP:DMG: ReadRequestMessage = + [1657909470.827553][2933:2933] CHIP:DMG: { + [1657909470.827593][2933:2933] CHIP:DMG: AttributePathIBs = + [1657909470.827639][2933:2933] CHIP:DMG: [ + [1657909470.827683][2933:2933] CHIP:DMG: AttributePathIB = + [1657909470.827732][2933:2933] CHIP:DMG: { + [1657909470.827782][2933:2933] CHIP:DMG: Endpoint = 0x1, + [1657909470.827834][2933:2933] CHIP:DMG: Cluster = 0x300, + [1657909470.827904][2933:2933] CHIP:DMG: Attribute = 0x0000_0006, + [1657909470.827956][2933:2933] CHIP:DMG: } + [1657909470.828008][2933:2933] CHIP:DMG: + [1657909470.828088][2933:2933] CHIP:DMG: ], + [1657909470.828145][2933:2933] CHIP:DMG: + [1657909470.828192][2933:2933] CHIP:DMG: isFabricFiltered = true, + [1657909470.828238][2933:2933] CHIP:DMG: InteractionModelRevision = 1 + [1657909470.828280][2933:2933] CHIP:DMG: }, + [1657909470.828411][2933:2933] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657909470.828560][2933:2933] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657909470.828614][2933:2933] CHIP:DMG: Cluster 300, Attribute 6 is dirty + [1657909470.828654][2933:2933] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0006 (expanded=0) + [1657909470.828703][2933:2933] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657909470.828757][2933:2933] CHIP:DMG: AccessControl: allowed + [1657909470.828845][2933:2933] CHIP:DMG: Sending report (payload has 37 bytes)... disabled: true - label: @@ -111,27 +267,97 @@ tests: PICS: CC.C.A0007 verification: | ./chip-tool colorcontrol read color-temperature 1 1 - [1649661323.873246][8000:8005] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0007 DataVersion: 4087274515 - [1649661323.873316][8000:8005] CHIP:TOO: color temperature: 0 - [1649661323.873405][8000:8005] CHIP:EM: Sending Standalone Ack for MessageCounter:16436117 on exchange 33080i + + Verify in DUT as client side log: + + [1657909522.420348][2977:2977] CHIP:IM: Received Read request + [1657909522.420471][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657909522.420518][2977:2977] CHIP:DMG: { + [1657909522.420579][2977:2977] CHIP:DMG: AttributePathIBs = + [1657909522.420627][2977:2977] CHIP:DMG: [ + [1657909522.420670][2977:2977] CHIP:DMG: AttributePathIB = + [1657909522.420726][2977:2977] CHIP:DMG: { + [1657909522.420806][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657909522.420872][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657909522.420931][2977:2977] CHIP:DMG: Attribute = 0x0000_0007, + [1657909522.420984][2977:2977] CHIP:DMG: } + [1657909522.421051][2977:2977] CHIP:DMG: + [1657909522.421104][2977:2977] CHIP:DMG: ], + [1657909522.421156][2977:2977] CHIP:DMG: + [1657909522.421204][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657909522.421266][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657909522.421310][2977:2977] CHIP:DMG: }, + [1657909522.421455][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657909522.421605][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657909522.421674][2977:2977] CHIP:DMG: Cluster 300, Attribute 7 is dirty + [1657909522.421714][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0007 (expanded=0) + [1657909522.421762][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657909522.421816][2977:2977] CHIP:DMG: AccessControl: allowed + [1657909522.421923][2977:2977] CHIP:DMG: Sending report (payload has 37 bytes)... disabled: true - label: "DUT reads from the TH the (0x0008) ColorMode attribute" PICS: CC.C.A0008 verification: | ./chip-tool colorcontrol read color-mode 1 1 - [1649661324.315688][8006:8011] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0008 DataVersion: 4087274515 - [1649661324.315767][8006:8011] CHIP:TOO: color mode: 2 - [1649661324.315877][8006:8011] CHIP:EM: Sending Standalone Ack for MessageCounter:15003063 on exchange 8273i + + Verify in DUT as client side log: + [1657909555.028998][2977:2977] CHIP:IM: Received Read request + [1657909555.029124][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657909555.029171][2977:2977] CHIP:DMG: { + [1657909555.029227][2977:2977] CHIP:DMG: AttributePathIBs = + [1657909555.029278][2977:2977] CHIP:DMG: [ + [1657909555.029322][2977:2977] CHIP:DMG: AttributePathIB = + [1657909555.029392][2977:2977] CHIP:DMG: { + [1657909555.029445][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657909555.029502][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657909555.029575][2977:2977] CHIP:DMG: Attribute = 0x0000_0008, + [1657909555.029631][2977:2977] CHIP:DMG: } + [1657909555.029682][2977:2977] CHIP:DMG: + [1657909555.029744][2977:2977] CHIP:DMG: ], + [1657909555.029797][2977:2977] CHIP:DMG: + [1657909555.029844][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657909555.029890][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657909555.029949][2977:2977] CHIP:DMG: }, + [1657909555.030093][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657909555.030253][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657909555.030306][2977:2977] CHIP:DMG: Cluster 300, Attribute 8 is dirty + [1657909555.030346][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0008 (expanded=0) + [1657909555.030394][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657909555.030465][2977:2977] CHIP:DMG: AccessControl: allowed + [1657909555.030553][2977:2977] CHIP:DMG: Sending report (payload has 37 bytes)... disabled: true - label: "DUT reads from the TH the (0x000f) Options attribute" PICS: CC.C.A000f verification: | ./chip-tool colorcontrol read options 1 1 - [1649661324.748577][8012:8017] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_000F DataVersion: 4087274515 - [1649661324.748641][8012:8017] CHIP:TOO: Options: 0 - [1649661324.748719][8012:8017] CHIP:EM: Sending Standalone Ack for MessageCounter:4617498 on exchange 9590i + + Verify in DUT as client side log: + [1657909576.774655][2977:2977] CHIP:IM: Received Read request + [1657909576.774796][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657909576.774850][2977:2977] CHIP:DMG: { + [1657909576.774915][2977:2977] CHIP:DMG: AttributePathIBs = + [1657909576.774968][2977:2977] CHIP:DMG: [ + [1657909576.775017][2977:2977] CHIP:DMG: AttributePathIB = + [1657909576.775094][2977:2977] CHIP:DMG: { + [1657909576.775151][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657909576.775237][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657909576.775303][2977:2977] CHIP:DMG: Attribute = 0x0000_000F, + [1657909576.775362][2977:2977] CHIP:DMG: } + [1657909576.775443][2977:2977] CHIP:DMG: + [1657909576.775502][2977:2977] CHIP:DMG: ], + [1657909576.775560][2977:2977] CHIP:DMG: + [1657909576.775615][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657909576.775687][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657909576.775735][2977:2977] CHIP:DMG: }, + [1657909576.775896][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657909576.776099][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657909576.776178][2977:2977] CHIP:DMG: Cluster 300, Attribute f is dirty + [1657909576.776223][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_000F (expanded=0) + [1657909576.776273][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657909576.776352][2977:2977] CHIP:DMG: AccessControl: allowed + [1657909576.776452][2977:2977] CHIP:DMG: Sending report (payload has 37 bytes)... disabled: true - label: @@ -140,9 +366,32 @@ tests: PICS: CC.C.A4000 verification: | ./chip-tool colorcontrol read enhanced-current-hue 1 1 - [1649661325.207404][8018:8023] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_4000 DataVersion: 4087274515 - [1649661325.207486][8018:8023] CHIP:TOO: enhanced current hue: 0 - [1649661325.207590][8018:8023] CHIP:EM: Sending Standalone Ack for MessageCounter:2630939 on exchange 50255i + + Verify in DUT as client side log: + [1657909627.086489][2977:2977] CHIP:IM: Received Read request + [1657909627.086602][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657909627.086641][2977:2977] CHIP:DMG: { + [1657909627.086671][2977:2977] CHIP:DMG: AttributePathIBs = + [1657909627.086706][2977:2977] CHIP:DMG: [ + [1657909627.086753][2977:2977] CHIP:DMG: AttributePathIB = + [1657909627.086800][2977:2977] CHIP:DMG: { + [1657909627.086842][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657909627.086898][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657909627.086948][2977:2977] CHIP:DMG: Attribute = 0x0000_4000, + [1657909627.086994][2977:2977] CHIP:DMG: } + [1657909627.087049][2977:2977] CHIP:DMG: + [1657909627.087085][2977:2977] CHIP:DMG: ], + [1657909627.087118][2977:2977] CHIP:DMG: + [1657909627.087181][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657909627.087217][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657909627.087248][2977:2977] CHIP:DMG: }, + [1657909627.087363][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657909627.087508][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657909627.087569][2977:2977] CHIP:DMG: Cluster 300, Attribute 4000 is dirty + [1657909627.087601][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_4000 (expanded=0) + [1657909627.087639][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657909627.087694][2977:2977] CHIP:DMG: AccessControl: allowed + [1657909627.087768][2977:2977] CHIP:DMG: Sending report (payload has 38 bytes)... disabled: true - label: @@ -151,9 +400,32 @@ tests: PICS: CC.C.A4001 verification: | ./chip-tool colorcontrol read enhanced-color-mode 1 1 - [1649661325.650176][8024:8029] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_4001 DataVersion: 4087274515 - [1649661325.650248][8024:8029] CHIP:TOO: enhanced color mode: 2 - [1649661325.650343][8024:8029] CHIP:EM: Sending Standalone Ack for MessageCounter:11538460 on exchange 62879i + + Verify in DUT as client side log: + [1657909652.217887][2977:2977] CHIP:IM: Received Read request + [1657909652.218015][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657909652.218064][2977:2977] CHIP:DMG: { + [1657909652.218104][2977:2977] CHIP:DMG: AttributePathIBs = + [1657909652.218173][2977:2977] CHIP:DMG: [ + [1657909652.218219][2977:2977] CHIP:DMG: AttributePathIB = + [1657909652.218269][2977:2977] CHIP:DMG: { + [1657909652.218320][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657909652.218399][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657909652.218456][2977:2977] CHIP:DMG: Attribute = 0x0000_4001, + [1657909652.218509][2977:2977] CHIP:DMG: } + [1657909652.218578][2977:2977] CHIP:DMG: + [1657909652.218629][2977:2977] CHIP:DMG: ], + [1657909652.218680][2977:2977] CHIP:DMG: + [1657909652.218744][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657909652.218791][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657909652.218832][2977:2977] CHIP:DMG: }, + [1657909652.218978][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657909652.219145][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657909652.219198][2977:2977] CHIP:DMG: Cluster 300, Attribute 4001 is dirty + [1657909652.219254][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_4001 (expanded=0) + [1657909652.219305][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657909652.219360][2977:2977] CHIP:DMG: AccessControl: allowed + [1657909652.219467][2977:2977] CHIP:DMG: Sending report (payload has 38 bytes)... disabled: true - label: @@ -162,9 +434,32 @@ tests: PICS: CC.C.A4002 verification: | ./chip-tool colorcontrol read color-loop-active 1 1 - [1649661326.093373][8030:8035] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_4002 DataVersion: 4087274515 - [1649661326.093437][8030:8035] CHIP:TOO: color loop active: 0 - [1649661326.093510][8030:8035] CHIP:EM: Sending Standalone Ack for MessageCounter:16553834 on exchange 42935i + + Verify in DUT as client side log: + [1657909711.352753][2977:2977] CHIP:IM: Received Read request + [1657909711.352915][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657909711.352973][2977:2977] CHIP:DMG: { + [1657909711.353019][2977:2977] CHIP:DMG: AttributePathIBs = + [1657909711.353095][2977:2977] CHIP:DMG: [ + [1657909711.353146][2977:2977] CHIP:DMG: AttributePathIB = + [1657909711.353209][2977:2977] CHIP:DMG: { + [1657909711.353285][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657909711.353354][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657909711.353419][2977:2977] CHIP:DMG: Attribute = 0x0000_4002, + [1657909711.353497][2977:2977] CHIP:DMG: } + [1657909711.353558][2977:2977] CHIP:DMG: + [1657909711.353616][2977:2977] CHIP:DMG: ], + [1657909711.353692][2977:2977] CHIP:DMG: + [1657909711.353749][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657909711.353801][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657909711.353849][2977:2977] CHIP:DMG: }, + [1657909711.354014][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657909711.354197][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657909711.354275][2977:2977] CHIP:DMG: Cluster 300, Attribute 4002 is dirty + [1657909711.354321][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_4002 (expanded=0) + [1657909711.354371][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657909711.354448][2977:2977] CHIP:DMG: AccessControl: allowed + [1657909711.354550][2977:2977] CHIP:DMG: Sending report (payload has 38 bytes)... disabled: true - label: @@ -173,9 +468,32 @@ tests: PICS: CC.C.A4003 verification: | ./chip-tool colorcontrol read color-loop-direction 1 1 - [1649661326.532413][8036:8041] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_4003 DataVersion: 4087274515 - [1649661326.532493][8036:8041] CHIP:TOO: color loop direction: 0 - [1649661326.532584][8036:8041] CHIP:EM: Sending Standalone Ack for MessageCounter:11662576 on exchange 8707i + + Verify in DUT as client side log: + [1657909741.232136][2977:2977] CHIP:IM: Received Read request + [1657909741.232261][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657909741.232310][2977:2977] CHIP:DMG: { + [1657909741.232367][2977:2977] CHIP:DMG: AttributePathIBs = + [1657909741.232416][2977:2977] CHIP:DMG: [ + [1657909741.232460][2977:2977] CHIP:DMG: AttributePathIB = + [1657909741.232509][2977:2977] CHIP:DMG: { + [1657909741.232578][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657909741.232632][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657909741.232705][2977:2977] CHIP:DMG: Attribute = 0x0000_4003, + [1657909741.232775][2977:2977] CHIP:DMG: } + [1657909741.232827][2977:2977] CHIP:DMG: + [1657909741.232878][2977:2977] CHIP:DMG: ], + [1657909741.232947][2977:2977] CHIP:DMG: + [1657909741.232995][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657909741.233041][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657909741.233105][2977:2977] CHIP:DMG: }, + [1657909741.233240][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657909741.233409][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657909741.233463][2977:2977] CHIP:DMG: Cluster 300, Attribute 4003 is dirty + [1657909741.233502][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_4003 (expanded=0) + [1657909741.233552][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657909741.233623][2977:2977] CHIP:DMG: AccessControl: allowed + [1657909741.233711][2977:2977] CHIP:DMG: Sending report (payload has 38 bytes)... disabled: true - label: @@ -184,9 +502,32 @@ tests: PICS: CC.C.A4004 verification: | ./chip-tool colorcontrol read color-loop-time 1 1 - [1649661326.969567][8042:8047] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_4004 DataVersion: 4087274515 - [1649661326.969644][8042:8047] CHIP:TOO: color loop time: 25 - [1649661326.969727][8042:8047] CHIP:EM: Sending Standalone Ack for MessageCounter:4589470 on exchange 61174i + + Verify in DUT as client side log: + [1657909771.649273][2977:2977] CHIP:IM: Received Read request + [1657909771.649413][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657909771.649468][2977:2977] CHIP:DMG: { + [1657909771.649542][2977:2977] CHIP:DMG: AttributePathIBs = + [1657909771.649600][2977:2977] CHIP:DMG: [ + [1657909771.649650][2977:2977] CHIP:DMG: AttributePathIB = + [1657909771.649725][2977:2977] CHIP:DMG: { + [1657909771.649784][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657909771.649853][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657909771.649936][2977:2977] CHIP:DMG: Attribute = 0x0000_4004, + [1657909771.649997][2977:2977] CHIP:DMG: } + [1657909771.650055][2977:2977] CHIP:DMG: + [1657909771.650128][2977:2977] CHIP:DMG: ], + [1657909771.650188][2977:2977] CHIP:DMG: + [1657909771.650243][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657909771.650316][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657909771.650365][2977:2977] CHIP:DMG: }, + [1657909771.650530][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657909771.650710][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657909771.650770][2977:2977] CHIP:DMG: Cluster 300, Attribute 4004 is dirty + [1657909771.650814][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_4004 (expanded=0) + [1657909771.650888][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657909771.650954][2977:2977] CHIP:DMG: AccessControl: allowed + [1657909771.651052][2977:2977] CHIP:DMG: Sending report (payload has 38 bytes)... disabled: true - label: @@ -195,9 +536,32 @@ tests: PICS: CC.C.A4005 verification: | ./chip-tool colorcontrol read color-loop-start-enhanced-hue 1 1 - [1649661327.720397][8049:8054] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_4005 DataVersion: 4087274515 - [1649661327.720479][8049:8054] CHIP:TOO: color loop start enhanced hue: 8960 - [1649661327.720572][8049:8054] CHIP:EM: Sending Standalone Ack for MessageCounter:14858381 on exchange 47470i + + Verify in DUT as client side log: + [1657909997.529812][2977:2977] CHIP:IM: Received Read request + [1657909997.530002][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657909997.530053][2977:2977] CHIP:DMG: { + [1657909997.530093][2977:2977] CHIP:DMG: AttributePathIBs = + [1657909997.530145][2977:2977] CHIP:DMG: [ + [1657909997.530189][2977:2977] CHIP:DMG: AttributePathIB = + [1657909997.530243][2977:2977] CHIP:DMG: { + [1657909997.530298][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657909997.530358][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657909997.530416][2977:2977] CHIP:DMG: Attribute = 0x0000_4005, + [1657909997.530470][2977:2977] CHIP:DMG: } + [1657909997.530521][2977:2977] CHIP:DMG: + [1657909997.530571][2977:2977] CHIP:DMG: ], + [1657909997.530677][2977:2977] CHIP:DMG: + [1657909997.530708][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657909997.530737][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657909997.530821][2977:2977] CHIP:DMG: }, + [1657909997.530943][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657909997.531048][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657909997.531081][2977:2977] CHIP:DMG: Cluster 300, Attribute 4005 is dirty + [1657909997.531105][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_4005 (expanded=0) + [1657909997.531139][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657909997.531175][2977:2977] CHIP:DMG: AccessControl: allowed + [1657909997.531238][2977:2977] CHIP:DMG: Sending report (payload has 39 bytes)... disabled: true - label: @@ -206,18 +570,64 @@ tests: PICS: CC.C.A4006 verification: | ./chip-tool colorcontrol read color-loop-stored-enhanced-hue 1 1 - [1649661328.161450][8055:8060] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_4006 DataVersion: 4087274515 - [1649661328.161530][8055:8060] CHIP:TOO: color loop stored enhanced hue: 0 - [1649661328.161618][8055:8060] CHIP:EM: Sending Standalone Ack for MessageCounter:10650326 on exchange 16955i + + Verify in DUT as client side log: + [1657910020.977065][2977:2977] CHIP:IM: Received Read request + [1657910020.977155][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657910020.977187][2977:2977] CHIP:DMG: { + [1657910020.977213][2977:2977] CHIP:DMG: AttributePathIBs = + [1657910020.977249][2977:2977] CHIP:DMG: [ + [1657910020.977277][2977:2977] CHIP:DMG: AttributePathIB = + [1657910020.977313][2977:2977] CHIP:DMG: { + [1657910020.977349][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657910020.977390][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657910020.977432][2977:2977] CHIP:DMG: Attribute = 0x0000_4006, + [1657910020.977470][2977:2977] CHIP:DMG: } + [1657910020.977499][2977:2977] CHIP:DMG: + [1657910020.977524][2977:2977] CHIP:DMG: ], + [1657910020.977556][2977:2977] CHIP:DMG: + [1657910020.977587][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657910020.977619][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657910020.977646][2977:2977] CHIP:DMG: }, + [1657910020.977738][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657910020.977852][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657910020.977889][2977:2977] CHIP:DMG: Cluster 300, Attribute 4006 is dirty + [1657910020.977913][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_4006 (expanded=0) + [1657910020.977947][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657910020.977985][2977:2977] CHIP:DMG: AccessControl: allowed + [1657910020.978052][2977:2977] CHIP:DMG: Sending report (payload has 38 bytes)... disabled: true - label: "DUT reads from the TH the (0x400a) ColorCapabilities attribute" PICS: CC.C.A400a verification: | ./chip-tool colorcontrol read color-capabilities 1 1 - [1649661328.603843][8061:8066] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_400A DataVersion: 4087274515 - [1649661328.603925][8061:8066] CHIP:TOO: color capabilities: 0 - [1649661328.604011][8061:8066] CHIP:EM: Sending Standalone Ack for MessageCounter:9437585 on exchange 42028i + + Verify in DUT as client side log: + [1657910072.897195][2977:2977] CHIP:IM: Received Read request + [1657910072.897323][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657910072.897371][2977:2977] CHIP:DMG: { + [1657910072.897411][2977:2977] CHIP:DMG: AttributePathIBs = + [1657910072.897459][2977:2977] CHIP:DMG: [ + [1657910072.897502][2977:2977] CHIP:DMG: AttributePathIB = + [1657910072.897552][2977:2977] CHIP:DMG: { + [1657910072.897604][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657910072.897662][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657910072.897718][2977:2977] CHIP:DMG: Attribute = 0x0000_400A, + [1657910072.897766][2977:2977] CHIP:DMG: } + [1657910072.897818][2977:2977] CHIP:DMG: + [1657910072.897865][2977:2977] CHIP:DMG: ], + [1657910072.897916][2977:2977] CHIP:DMG: + [1657910072.897963][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657910072.898010][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657910072.898053][2977:2977] CHIP:DMG: }, + [1657910072.898187][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657910072.898330][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657910072.898381][2977:2977] CHIP:DMG: Cluster 300, Attribute 400a is dirty + [1657910072.898420][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_400A (expanded=0) + [1657910072.898470][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657910072.898525][2977:2977] CHIP:DMG: AccessControl: allowed + [1657910072.898615][2977:2977] CHIP:DMG: Sending report (payload has 38 bytes)... disabled: true - label: @@ -226,10 +636,32 @@ tests: PICS: CC.C.A400b verification: | ./chip-tool colorcontrol read color-temp-physical-min-mireds 1 1 - [1649661329.039107][8067:8072] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_400B DataVersion: 4087274515 - [1649661329.039188][8067:8072] CHIP:TOO: ColorTempPhysicalMinMireds: 0 - [1649661329.039388][8067:8072] CHIP:EM: Sending Standalone Ack for MessageCounter:511360 on exchange 35476i + Verify in DUT as client side log: + [1657910109.902989][2977:2977] CHIP:IM: Received Read request + [1657910109.903095][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657910109.903134][2977:2977] CHIP:DMG: { + [1657910109.903161][2977:2977] CHIP:DMG: AttributePathIBs = + [1657910109.903199][2977:2977] CHIP:DMG: [ + [1657910109.903234][2977:2977] CHIP:DMG: AttributePathIB = + [1657910109.903274][2977:2977] CHIP:DMG: { + [1657910109.903315][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657910109.903367][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657910109.903413][2977:2977] CHIP:DMG: Attribute = 0x0000_400B, + [1657910109.903455][2977:2977] CHIP:DMG: } + [1657910109.903496][2977:2977] CHIP:DMG: + [1657910109.903533][2977:2977] CHIP:DMG: ], + [1657910109.903574][2977:2977] CHIP:DMG: + [1657910109.903612][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657910109.903649][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657910109.903683][2977:2977] CHIP:DMG: }, + [1657910109.903792][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657910109.903912][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657910109.903956][2977:2977] CHIP:DMG: Cluster 300, Attribute 400b is dirty + [1657910109.903989][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_400B (expanded=0) + [1657910109.904030][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657910109.904110][2977:2977] CHIP:DMG: AccessControl: allowed + [1657910109.904190][2977:2977] CHIP:DMG: Sending report (payload has 38 bytes)... disabled: true - label: @@ -239,11 +671,31 @@ tests: verification: | ./chip-tool colorcontrol read color-temp-physical-max-mireds 1 1 - - [1649661329.475308][8073:8078] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_400C DataVersion: 4087274515 - [1649661329.475388][8073:8078] CHIP:TOO: ColorTempPhysicalMaxMireds: 65279 - - [1649661329.475476][8073:8078] CHIP:EM: Sending Standalone Ack for MessageCounter:14879622 on exchange 59016i + Verify in DUT as client side log: + [1657910176.514563][2977:2977] CHIP:IM: Received Read request + [1657910176.514690][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657910176.514738][2977:2977] CHIP:DMG: { + [1657910176.514779][2977:2977] CHIP:DMG: AttributePathIBs = + [1657910176.514826][2977:2977] CHIP:DMG: [ + [1657910176.514869][2977:2977] CHIP:DMG: AttributePathIB = + [1657910176.514919][2977:2977] CHIP:DMG: { + [1657910176.514970][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657910176.515028][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657910176.515084][2977:2977] CHIP:DMG: Attribute = 0x0000_400C, + [1657910176.515137][2977:2977] CHIP:DMG: } + [1657910176.515188][2977:2977] CHIP:DMG: + [1657910176.515238][2977:2977] CHIP:DMG: ], + [1657910176.515289][2977:2977] CHIP:DMG: + [1657910176.515336][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657910176.515382][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657910176.515418][2977:2977] CHIP:DMG: }, + [1657910176.515548][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657910176.515692][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657910176.515743][2977:2977] CHIP:DMG: Cluster 300, Attribute 400c is dirty + [1657910176.515782][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_400C (expanded=0) + [1657910176.515828][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657910176.515881][2977:2977] CHIP:DMG: AccessControl: allowed + [1657910176.515971][2977:2977] CHIP:DMG: Sending report (payload has 39 bytes)... disabled: true - label: @@ -252,9 +704,32 @@ tests: PICS: CC.C.A400d verification: | ./chip-tool colorcontrol read couple-color-temp-to-level-min-mireds 1 1 - [1649661329.915861][8079:8084] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_400D DataVersion: 4087274515 - [1649661329.915947][8079:8084] CHIP:TOO: couple color temp to level min-mireds: 0 - [1649661329.916065][8079:8084] CHIP:EM: Sending Standalone Ack for MessageCounter:1722601 on exchange 3570i + + Verify in DUT as client side log: + [1657910205.278279][2977:2977] CHIP:IM: Received Read request + [1657910205.278421][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657910205.278474][2977:2977] CHIP:DMG: { + [1657910205.278520][2977:2977] CHIP:DMG: AttributePathIBs = + [1657910205.278578][2977:2977] CHIP:DMG: [ + [1657910205.278628][2977:2977] CHIP:DMG: AttributePathIB = + [1657910205.278684][2977:2977] CHIP:DMG: { + [1657910205.278743][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657910205.278809][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657910205.278874][2977:2977] CHIP:DMG: Attribute = 0x0000_400D, + [1657910205.279008][2977:2977] CHIP:DMG: } + [1657910205.279068][2977:2977] CHIP:DMG: + [1657910205.279122][2977:2977] CHIP:DMG: ], + [1657910205.279180][2977:2977] CHIP:DMG: + [1657910205.279234][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657910205.279328][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657910205.279380][2977:2977] CHIP:DMG: }, + [1657910205.279527][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657910205.279685][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657910205.279920][2977:2977] CHIP:DMG: Cluster 300, Attribute 400d is dirty + [1657910205.279968][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_400D (expanded=0) + [1657910205.280139][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657910205.280211][2977:2977] CHIP:DMG: AccessControl: allowed + [1657910205.280314][2977:2977] CHIP:DMG: Sending report (payload has 38 bytes)... disabled: true - label: @@ -263,18 +738,64 @@ tests: PICS: CC.C.A4010 verification: | ./chip-tool colorcontrol read start-up-color-temperature-mireds 1 1 - [1649661330.348224][8085:8090] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_4010 DataVersion: 4087274515 - [1649661330.348301][8085:8090] CHIP:TOO: start up color temperature mireds: 0 - [1649661330.348390][8085:8090] CHIP:EM: Sending Standalone Ack for MessageCounter:15367381 on exchange 8592i + + Verify in DUT as client side log: + [1657910246.097315][2977:2977] CHIP:IM: Received Read request + [1657910246.097460][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657910246.097516][2977:2977] CHIP:DMG: { + [1657910246.097562][2977:2977] CHIP:DMG: AttributePathIBs = + [1657910246.097616][2977:2977] CHIP:DMG: [ + [1657910246.097666][2977:2977] CHIP:DMG: AttributePathIB = + [1657910246.097728][2977:2977] CHIP:DMG: { + [1657910246.097790][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657910246.097852][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657910246.097916][2977:2977] CHIP:DMG: Attribute = 0x0000_4010, + [1657910246.097982][2977:2977] CHIP:DMG: } + [1657910246.098045][2977:2977] CHIP:DMG: + [1657910246.098099][2977:2977] CHIP:DMG: ], + [1657910246.098158][2977:2977] CHIP:DMG: + [1657910246.098213][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657910246.098266][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657910246.098315][2977:2977] CHIP:DMG: }, + [1657910246.098461][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657910246.098624][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657910246.098684][2977:2977] CHIP:DMG: Cluster 300, Attribute 4010 is dirty + [1657910246.098728][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_4010 (expanded=0) + [1657910246.098785][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657910246.098846][2977:2977] CHIP:DMG: AccessControl: allowed + [1657910246.098946][2977:2977] CHIP:DMG: Sending report (payload has 38 bytes)... disabled: true - label: "DUT reads from the TH the (0x0010) NumberOfPrimaries attribute" PICS: CC.C.A0010 verification: | ./chip-tool colorcontrol read number-of-primaries 1 1 - [1649661330.790716][8091:8096] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0010 DataVersion: 4087274515 - [1649661330.790792][8091:8096] CHIP:TOO: number of primaries: 0 - [1649661330.790894][8091:8096] CHIP:EM: Sending Standalone Ack for MessageCounter:4700740 on exchange 8440i + + Verify in DUT as client side log: + [1657910445.890552][2977:2977] CHIP:IM: Received Read request + [1657910445.890635][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657910445.890664][2977:2977] CHIP:DMG: { + [1657910445.890686][2977:2977] CHIP:DMG: AttributePathIBs = + [1657910445.890713][2977:2977] CHIP:DMG: [ + [1657910445.890737][2977:2977] CHIP:DMG: AttributePathIB = + [1657910445.890764][2977:2977] CHIP:DMG: { + [1657910445.890792][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657910445.890830][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657910445.890867][2977:2977] CHIP:DMG: Attribute = 0x0000_0010, + [1657910445.890896][2977:2977] CHIP:DMG: } + [1657910445.890924][2977:2977] CHIP:DMG: + [1657910445.890950][2977:2977] CHIP:DMG: ], + [1657910445.890978][2977:2977] CHIP:DMG: + [1657910445.891006][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657910445.891031][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657910445.891054][2977:2977] CHIP:DMG: }, + [1657910445.891135][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657910445.891242][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657910445.891275][2977:2977] CHIP:DMG: Cluster 300, Attribute 10 is dirty + [1657910445.891297][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0010 (expanded=0) + [1657910445.891327][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657910445.891361][2977:2977] CHIP:DMG: AccessControl: allowed + [1657910445.891422][2977:2977] CHIP:DMG: Sending report (payload has 37 bytes)... disabled: true - label: "DUT reads from the TH the (0x0011) Primary1X attribute" @@ -282,10 +803,31 @@ tests: verification: | ./chip-tool colorcontrol read primary1x 1 1 - - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0011 DataVersion: 540305990 - [1651483665.109697][3245:3250] CHIP:TOO: primary 1 x: 0 - [1651483665.109797][3245:3250] CHIP:EM: Sending Standalone Ack for MessageCounter:12731123 on exchange 55053i + Verify in DUT as client side log: + [1657910568.808716][2977:2977] CHIP:IM: Received Read request + [1657910568.808876][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657910568.809073][2977:2977] CHIP:DMG: { + [1657910568.809131][2977:2977] CHIP:DMG: AttributePathIBs = + [1657910568.809193][2977:2977] CHIP:DMG: [ + [1657910568.809243][2977:2977] CHIP:DMG: AttributePathIB = + [1657910568.809308][2977:2977] CHIP:DMG: { + [1657910568.809375][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657910568.809461][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657910568.809539][2977:2977] CHIP:DMG: Attribute = 0x0000_0011, + [1657910568.809621][2977:2977] CHIP:DMG: } + [1657910568.809691][2977:2977] CHIP:DMG: + [1657910568.809754][2977:2977] CHIP:DMG: ], + [1657910568.809823][2977:2977] CHIP:DMG: + [1657910568.809886][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657910568.809950][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657910568.810007][2977:2977] CHIP:DMG: }, + [1657910568.810175][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657910568.810365][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657910568.810433][2977:2977] CHIP:DMG: Cluster 300, Attribute 11 is dirty + [1657910568.810484][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0011 (expanded=0) + [1657910568.810548][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657910568.810618][2977:2977] CHIP:DMG: AccessControl: allowed + [1657910568.810719][2977:2977] CHIP:DMG: Sending report (payload has 37 bytes)... disabled: true - label: "DUT reads from the TH the (0x0012) Primary1Y attribute" @@ -293,9 +835,31 @@ tests: verification: | ./chip-tool colorcontrol read primary1y 1 1 - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0012 DataVersion: 540305990 - [1651483698.733322][3253:3259] CHIP:TOO: primary 1 y: 0 - [1651483698.733420][3253:3259] CHIP:EM: Sending Standalone Ack for MessageCounter:7863787 on exchange 13103i + Verify in DUT as client side log: + [1657910588.961223][2977:2977] CHIP:IM: Received Read request + [1657910588.961366][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657910588.961422][2977:2977] CHIP:DMG: { + [1657910588.961468][2977:2977] CHIP:DMG: AttributePathIBs = + [1657910588.961522][2977:2977] CHIP:DMG: [ + [1657910588.961572][2977:2977] CHIP:DMG: AttributePathIB = + [1657910588.961633][2977:2977] CHIP:DMG: { + [1657910588.961692][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657910588.961757][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657910588.961828][2977:2977] CHIP:DMG: Attribute = 0x0000_0012, + [1657910588.961895][2977:2977] CHIP:DMG: } + [1657910588.961955][2977:2977] CHIP:DMG: + [1657910588.962012][2977:2977] CHIP:DMG: ], + [1657910588.962070][2977:2977] CHIP:DMG: + [1657910588.962125][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657910588.962177][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657910588.962226][2977:2977] CHIP:DMG: }, + [1657910588.962370][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657910588.962529][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657910588.962715][2977:2977] CHIP:DMG: Cluster 300, Attribute 12 is dirty + [1657910588.962764][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0012 (expanded=0) + [1657910588.962822][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657910588.962885][2977:2977] CHIP:DMG: AccessControl: allowed + [1657910588.962985][2977:2977] CHIP:DMG: Sending report (payload has 37 bytes)... disabled: true - label: "DUT reads from the TH the (0x0013) Primary1Intensity attribute" @@ -303,10 +867,31 @@ tests: verification: | ./chip-tool colorcontrol read primary1intensity 1 1 - - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0013 DataVersion: 540305990 - [1651483742.297459][3263:3268] CHIP:TOO: primary 1 intensity: 0 - [1651483742.297558][3263:3268] CHIP:EM: Sending Standalone Ack for MessageCounter:10210809 on exchange 7007i + Verify in DUT as client side log: + [1657910622.925613][2977:2977] CHIP:IM: Received Read request + [1657910622.925739][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657910622.925788][2977:2977] CHIP:DMG: { + [1657910622.925827][2977:2977] CHIP:DMG: AttributePathIBs = + [1657910622.925874][2977:2977] CHIP:DMG: [ + [1657910622.925918][2977:2977] CHIP:DMG: AttributePathIB = + [1657910622.925973][2977:2977] CHIP:DMG: { + [1657910622.926028][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657910622.926088][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657910622.926144][2977:2977] CHIP:DMG: Attribute = 0x0000_0013, + [1657910622.926197][2977:2977] CHIP:DMG: } + [1657910622.926249][2977:2977] CHIP:DMG: + [1657910622.926359][2977:2977] CHIP:DMG: ], + [1657910622.926413][2977:2977] CHIP:DMG: + [1657910622.926572][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657910622.926623][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657910622.926718][2977:2977] CHIP:DMG: }, + [1657910622.926850][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657910622.926998][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657910622.927049][2977:2977] CHIP:DMG: Cluster 300, Attribute 13 is dirty + [1657910622.927137][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0013 (expanded=0) + [1657910622.927192][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657910622.927246][2977:2977] CHIP:DMG: AccessControl: allowed + [1657910622.927384][2977:2977] CHIP:DMG: Sending report (payload has 37 bytes)... disabled: true - label: "DUT reads from the TH the (0x0015) Primary2X attribute" @@ -314,9 +899,31 @@ tests: verification: | ./chip-tool colorcontrol read primary2x 1 1 - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0015 DataVersion: 540305990 - [1651483777.233498][3270:3275] CHIP:TOO: primary 2 x: 0 - [1651483777.233614][3270:3275] CHIP:EM: Sending Standalone Ack for MessageCounter:1684573 on exchange 21377i + Verify in DUT as client side log: + [1657910659.885682][2977:2977] CHIP:IM: Received Read request + [1657910659.885821][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657910659.885876][2977:2977] CHIP:DMG: { + [1657910659.885922][2977:2977] CHIP:DMG: AttributePathIBs = + [1657910659.885976][2977:2977] CHIP:DMG: [ + [1657910659.886027][2977:2977] CHIP:DMG: AttributePathIB = + [1657910659.886089][2977:2977] CHIP:DMG: { + [1657910659.886151][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657910659.886215][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657910659.886287][2977:2977] CHIP:DMG: Attribute = 0x0000_0015, + [1657910659.886354][2977:2977] CHIP:DMG: } + [1657910659.886414][2977:2977] CHIP:DMG: + [1657910659.886467][2977:2977] CHIP:DMG: ], + [1657910659.886526][2977:2977] CHIP:DMG: + [1657910659.886581][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657910659.886633][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657910659.886803][2977:2977] CHIP:DMG: }, + [1657910659.886955][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657910659.887119][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657910659.887178][2977:2977] CHIP:DMG: Cluster 300, Attribute 15 is dirty + [1657910659.887222][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0015 (expanded=0) + [1657910659.887278][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657910659.887339][2977:2977] CHIP:DMG: AccessControl: allowed + [1657910659.887439][2977:2977] CHIP:DMG: Sending report (payload has 37 bytes)... disabled: true - label: "DUT reads from the TH the (0x0016) Primary2Y attribute" @@ -324,10 +931,31 @@ tests: verification: | ./chip-tool colorcontrol read primary2y 1 1 - - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0016 DataVersion: 540305990 - [1651483805.650796][3279:3284] CHIP:TOO: primary 2 y: 0 - [1651483805.650942][3279:3284] CHIP:EM: Sending Standalone Ack for MessageCounter:16277541 on exchange 10435i + Verify in DUT as client side log: + [1657910687.168648][2977:2977] CHIP:IM: Received Read request + [1657910687.168754][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657910687.168793][2977:2977] CHIP:DMG: { + [1657910687.168825][2977:2977] CHIP:DMG: AttributePathIBs = + [1657910687.168863][2977:2977] CHIP:DMG: [ + [1657910687.168898][2977:2977] CHIP:DMG: AttributePathIB = + [1657910687.168937][2977:2977] CHIP:DMG: { + [1657910687.168979][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657910687.169032][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657910687.169078][2977:2977] CHIP:DMG: Attribute = 0x0000_0016, + [1657910687.169114][2977:2977] CHIP:DMG: } + [1657910687.169157][2977:2977] CHIP:DMG: + [1657910687.169196][2977:2977] CHIP:DMG: ], + [1657910687.169237][2977:2977] CHIP:DMG: + [1657910687.169275][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657910687.169312][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657910687.169346][2977:2977] CHIP:DMG: }, + [1657910687.169453][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657910687.169572][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657910687.169613][2977:2977] CHIP:DMG: Cluster 300, Attribute 16 is dirty + [1657910687.169645][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0016 (expanded=0) + [1657910687.169685][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657910687.169731][2977:2977] CHIP:DMG: AccessControl: allowed + [1657910687.169804][2977:2977] CHIP:DMG: Sending report (payload has 37 bytes)... disabled: true - label: "DUT reads from the TH the (0x0017) Primary2Intensity attribute" @@ -335,10 +963,31 @@ tests: verification: | ./chip-tool colorcontrol read primary2intensity 1 1 - - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0017 DataVersion: 540305990 - [1651483834.596380][3285:3290] CHIP:TOO: primary 2 intensity: 0 - [1651483834.596470][3285:3290] CHIP:EM: Sending Standalone Ack for MessageCounter:5986355 on exchange 855i + Verify in DUT as client side log: + [1657910837.125032][2977:2977] CHIP:IM: Received Read request + [1657910837.125157][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657910837.125206][2977:2977] CHIP:DMG: { + [1657910837.125246][2977:2977] CHIP:DMG: AttributePathIBs = + [1657910837.125293][2977:2977] CHIP:DMG: [ + [1657910837.125337][2977:2977] CHIP:DMG: AttributePathIB = + [1657910837.125387][2977:2977] CHIP:DMG: { + [1657910837.125438][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657910837.125502][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657910837.125559][2977:2977] CHIP:DMG: Attribute = 0x0000_0017, + [1657910837.125613][2977:2977] CHIP:DMG: } + [1657910837.125664][2977:2977] CHIP:DMG: + [1657910837.125711][2977:2977] CHIP:DMG: ], + [1657910837.125762][2977:2977] CHIP:DMG: + [1657910837.125810][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657910837.125856][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657910837.125898][2977:2977] CHIP:DMG: }, + [1657910837.126026][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657910837.126169][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657910837.126221][2977:2977] CHIP:DMG: Cluster 300, Attribute 17 is dirty + [1657910837.126259][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0017 (expanded=0) + [1657910837.126309][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657910837.126365][2977:2977] CHIP:DMG: AccessControl: allowed + [1657910837.126452][2977:2977] CHIP:DMG: Sending report (payload has 37 bytes)... disabled: true - label: "DUT reads from the TH the (0x0019) Primary3X attribute" @@ -346,10 +995,24 @@ tests: verification: | ./chip-tool colorcontrol read primary3x 1 1 - - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0019 DataVersion: 540305990 - [1651483937.072323][3298:3303] CHIP:TOO: primary 3 x: 0 - [1651483937.072405][3298:3303] CHIP:EM: Sending Standalone Ack for MessageCounter:6092298 on exchange 12519i + Verify in DUT as client side log: + CHIP:IM: Received Read request + CHIP:DMG: ReadRequestMessage = + CHIP:DMG: { + CHIP:DMG: AttributePathIBs = + CHIP:DMG: [ + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x300, + CHIP:DMG: Attribute = 0x0000_0019, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: isFabricFiltered = true, + CHIP:DMG: InteractionModelRevision = 1 + CHIP:DMG: }, disabled: true - label: "DUT reads from the TH the (0x001a) Primary3Y attribute" @@ -357,9 +1020,24 @@ tests: verification: | ./chip-tool colorcontrol read primary3y 1 1 - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_001A DataVersion: 540305990 - [1651483967.386334][3305:3310] CHIP:TOO: primary 3 y: 0 - [1651483967.386427][3305:3310] CHIP:EM: Sending Standalone Ack for MessageCounter:3329418 on exchange 11657i + Verify in DUT as client side log: + CHIP:IM: Received Read request + CHIP:DMG: ReadRequestMessage = + CHIP:DMG: { + CHIP:DMG: AttributePathIBs = + CHIP:DMG: [ + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x300 + CHIP:DMG: Attribute = 0x0000_001A, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: isFabricFiltered = true, + CHIP:DMG: InteractionModelRevision = 1 + CHIP:DMG: }, disabled: true - label: "DUT reads from the TH the (0x001b) Primary3Intensity attribute" @@ -367,9 +1045,24 @@ tests: verification: | ./chip-tool colorcontrol read primary3intensity 1 1 - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_001B DataVersion: 540305990 - [1651484113.812178][3316:3321] CHIP:TOO: primary 3 intensity: 0 - [1651484113.812270][3316:3321] CHIP:EM: Sending Standalone Ack for MessageCounter:41658 on exchange 9618i + Verify in DUT as client side log: + CHIP:IM: Received Read request + CHIP:DMG: ReadRequestMessage = + CHIP:DMG: { + CHIP:DMG: AttributePathIBs = + CHIP:DMG: [ + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x300, + CHIP:DMG: Attribute = 0x0000_001B, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: isFabricFiltered = true, + CHIP:DMG: InteractionModelRevision = 1 + CHIP:DMG: }, disabled: true - label: "DUT reads from the TH the (0x0020) Primary4X attribute" @@ -377,9 +1070,24 @@ tests: verification: | ./chip-tool colorcontrol read primary4x 1 1 - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0020 DataVersion: 540305990 - [1651484143.778301][3324:3329] CHIP:TOO: primary 4 x: 0 - [1651484143.778392][3324:3329] CHIP:EM: Sending Standalone Ack for MessageCounter:2094184 on exchange 50270i + Verify in DUT as client side log: + CHIP:IM: Received Read request + CHIP:DMG: ReadRequestMessage = + CHIP:DMG: { + CHIP:DMG: AttributePathIBs = + CHIP:DMG: [ + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x300, + CHIP:DMG: Attribute = 0x0000_0020, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: isFabricFiltered = true, + CHIP:DMG: InteractionModelRevision = 1 + CHIP:DMG: }, disabled: true - label: "DUT reads from the TH the (0x0021) Primary4Y attribute" @@ -387,9 +1095,24 @@ tests: verification: | ./chip-tool colorcontrol read primary4y 1 1 - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0021 DataVersion: 540305990 - [1651484171.921901][3334:3339] CHIP:TOO: primary 4 y: 0 - [1651484171.921984][3334:3339] CHIP:EM: Sending Standalone Ack for MessageCounter:3701827 on exchange 16726i + Verify in DUT as client side log: + CHIP:IM: Received Read request + CHIP:DMG: ReadRequestMessage = + CHIP:DMG: { + CHIP:DMG: AttributePathIBs = + CHIP:DMG: [ + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x300, + CHIP:DMG: Attribute = 0x0000_0021, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: isFabricFiltered = true, + CHIP:DMG: InteractionModelRevision = 1 + CHIP:DMG: }, disabled: true - label: "DUT reads from the TH the (0x0022) Primary4Intensity attribute" @@ -397,9 +1120,24 @@ tests: verification: | ./chip-tool colorcontrol read primary4intensity 1 1 - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0022 DataVersion: 540305990 - [1651484198.443415][3341:3346] CHIP:TOO: primary 4 intensity: 0 - [1651484198.443528][3341:3346] CHIP:EM: Sending Standalone Ack for MessageCounter:1740063 on exchange 36245i + Verify in DUT as client side log: + CHIP:IM: Received Read request + CHIP:DMG: ReadRequestMessage = + CHIP:DMG: { + CHIP:DMG: AttributePathIBs = + CHIP:DMG: [ + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x300, + CHIP:DMG: Attribute = 0x0000_0022, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: isFabricFiltered = true, + CHIP:DMG: InteractionModelRevision = 1 + CHIP:DMG: }, disabled: true - label: "DUT reads from the TH the (0x0024) Primary5X attribute" @@ -407,9 +1145,24 @@ tests: verification: | ./chip-tool colorcontrol read primary5x 1 1 - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0024 DataVersion: 540305990 - [1651484241.467661][3350:3355] CHIP:TOO: primary 5 x: 0 - [1651484241.467788][3350:3355] CHIP:EM: Sending Standalone Ack for MessageCounter:5350139 on exchange 63040i + Verify in DUT as client side log: + CHIP:IM: Received Read request + CHIP:DMG: ReadRequestMessage = + CHIP:DMG: { + CHIP:DMG: AttributePathIBs = + CHIP:DMG: [ + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x300, + CHIP:DMG: Attribute = 0x0000_0024, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: isFabricFiltered = true, + CHIP:DMG: InteractionModelRevision = 1 + CHIP:DMG: }, disabled: true - label: "DUT reads from the TH the (0x0025) Primary5Y attribute" @@ -417,10 +1170,24 @@ tests: verification: | ./chip-tool colorcontrol read primary5y 1 1 - - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0025 DataVersion: 540305990 - [1651484286.709863][3358:3363] CHIP:TOO: primary 5 y: 0 - [1651484286.709964][3358:3363] CHIP:EM: Sending Standalone Ack for MessageCounter:7199124 on exchange 47604i + Verify in DUT as client side log: + CHIP:IM: Received Read request + CHIP:DMG: ReadRequestMessage = + CHIP:DMG: { + CHIP:DMG: AttributePathIBs = + CHIP:DMG: [ + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x300, + CHIP:DMG: Attribute = 0x0000_0025, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: isFabricFiltered = true, + CHIP:DMG: InteractionModelRevision = 1 + CHIP:DMG: }, disabled: true - label: "DUT reads from the TH the (0x0026) Primary5Intensity attribute" @@ -428,10 +1195,24 @@ tests: verification: | ./chip-tool colorcontrol read primary5intensity 1 1 - - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0026 DataVersion: 540305990 - [1651484304.715731][3365:3370] CHIP:TOO: primary 5 intensity: 0 - [1651484304.715829][3365:3370] CHIP:EM: Sending Standalone Ack for MessageCounter:8654922 on exchange 29272i + Verify in DUT as client side log: + CHIP:IM: Received Read request + CHIP:DMG: ReadRequestMessage = + CHIP:DMG: { + CHIP:DMG: AttributePathIBs = + CHIP:DMG: [ + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x300, + CHIP:DMG: Attribute = 0x0000_0026, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: isFabricFiltered = true, + CHIP:DMG: InteractionModelRevision = 1 + CHIP:DMG: }, disabled: true - label: "DUT reads from the TH the (0x0028) Primary6X attribute" @@ -439,10 +1220,24 @@ tests: verification: | ./chip-tool colorcontrol read primary6x 1 1 - - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0028 DataVersion: 540305990 - [1651484349.601181][3372:3377] CHIP:TOO: primary 6 x: 0 - [1651484349.601269][3372:3377] CHIP:EM: Sending Standalone Ack for MessageCounter:13704291 on exchange 30507i + Verify in DUT as client side log: + CHIP:IM: Received Read request + CHIP:DMG: ReadRequestMessage = + CHIP:DMG: { + CHIP:DMG: AttributePathIBs = + CHIP:DMG: [ + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x300, + CHIP:DMG: Attribute = 0x0000_0028, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: isFabricFiltered = true, + CHIP:DMG: InteractionModelRevision = 1 + CHIP:DMG: }, disabled: true - label: "DUT reads from the TH the (0x0029) Primary6Y attribute" @@ -450,9 +1245,24 @@ tests: verification: | ./chip-tool colorcontrol read primary6y 1 1 - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0028 DataVersion: 540305990 - [1651484349.601181][3372:3377] CHIP:TOO: primary 6 x: 0 - [1651484349.601269][3372:3377] CHIP:EM: Sending Standalone Ack for MessageCounter:13704291 on exchange 30507i + Verify in DUT as client side log: + CHIP:IM: Received Read request + CHIP:DMG: ReadRequestMessage = + CHIP:DMG: { + CHIP:DMG: AttributePathIBs = + CHIP:DMG: [ + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x300, + CHIP:DMG: Attribute = 0x0000_0029, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: isFabricFiltered = true, + CHIP:DMG: InteractionModelRevision = 1 + CHIP:DMG: }, disabled: true - label: "DUT reads from the TH the (0x002a) Primary6Intensity attribute" @@ -460,9 +1270,24 @@ tests: verification: | ./chip-tool colorcontrol read primary6intensity 1 1 - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_002A DataVersion: 540305990 - [1651484392.490974][3378:3383] CHIP:TOO: primary 6 intensity: 0 - [1651484392.491074][3378:3383] CHIP:EM: Sending Standalone Ack for MessageCounter:2427165 on exchange 17769i + Verify in DUT as client side log: + CHIP:IM: Received Read request + CHIP:DMG: ReadRequestMessage = + CHIP:DMG: { + CHIP:DMG: AttributePathIBs = + CHIP:DMG: [ + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x300, + CHIP:DMG: Attribute = 0x0000_002a, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: isFabricFiltered = true, + CHIP:DMG: InteractionModelRevision = 1 + CHIP:DMG: }, disabled: true - label: "DUT reads from the TH the Optional (0x0030) WhitePointX attribute" @@ -470,10 +1295,24 @@ tests: verification: | ./chip-tool colorcontrol read white-point-x 1 1 - - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0030 DataVersion: 540305990 - [1651484447.853097][3389:3394] CHIP:TOO: white point x: 0 - [1651484447.853201][3389:3394] CHIP:EM: Sending Standalone Ack for MessageCounter:2187963 on exchange 39418i + Verify in DUT as client side log: + CHIP:IM: Received Read request + CHIP:DMG: ReadRequestMessage = + CHIP:DMG: { + CHIP:DMG: AttributePathIBs = + CHIP:DMG: [ + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x300, + CHIP:DMG: Attribute = 0x0000_0030, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: isFabricFiltered = true, + CHIP:DMG: InteractionModelRevision = 1 + CHIP:DMG: }, disabled: true - label: "DUT reads from the TH the Optional (0x0031) WhitePointY attribute" @@ -481,9 +1320,24 @@ tests: verification: | ./chip-tool colorcontrol read white-point-y 1 1 - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0031 DataVersion: 540305990 - [1651484493.098722][3397:3402] CHIP:TOO: white point y: 0 - [1651484493.098838][3397:3402] CHIP:EM: Sending Standalone Ack for MessageCounter:13416692 on exchange 58975i + Verify in DUT as client side log: + CHIP:IM: Received Read request + CHIP:DMG: ReadRequestMessage = + CHIP:DMG: { + CHIP:DMG: AttributePathIBs = + CHIP:DMG: [ + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x300, + CHIP:DMG: Attribute = 0x0000_0031, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: isFabricFiltered = true, + CHIP:DMG: InteractionModelRevision = 1 + CHIP:DMG: }, disabled: true - label: @@ -492,10 +1346,24 @@ tests: verification: | ./chip-tool colorcontrol read color-point-rx 1 1 - - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0032 DataVersion: 540305990 - [1651484549.019811][3407:3412] CHIP:TOO: color point r x: 0 - [1651484549.019946][3407:3412] CHIP:EM: Sending Standalone Ack for MessageCounter:3393967 on exchange 29393i + Verify in DUT as client side log: + CHIP:IM: Received Read request + CHIP:DMG: ReadRequestMessage = + CHIP:DMG: { + CHIP:DMG: AttributePathIBs = + CHIP:DMG: [ + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x300, + CHIP:DMG: Attribute = 0x0000_0032, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: isFabricFiltered = true, + CHIP:DMG: InteractionModelRevision = 1 + CHIP:DMG: }, disabled: true - label: @@ -504,10 +1372,24 @@ tests: verification: | ./chip-tool colorcontrol read color-point-ry 1 1 - - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0033 DataVersion: 540305990 - [1651484569.809289][3413:3418] CHIP:TOO: color point r y: 0 - [1651484569.809368][3413:3418] CHIP:EM: Sending Standalone Ack for MessageCounter:5190611 on exchange 55680i + Verify in DUT as client side log: + CHIP:IM: Received Read request + CHIP:DMG: ReadRequestMessage = + CHIP:DMG: { + CHIP:DMG: AttributePathIBs = + CHIP:DMG: [ + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x300, + CHIP:DMG: Attribute = 0x0000_0033, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: isFabricFiltered = true, + CHIP:DMG: InteractionModelRevision = 1 + CHIP:DMG: }, disabled: true - label: @@ -517,10 +1399,24 @@ tests: verification: | ./chip-tool colorcontrol read color-point-rintensity 1 1 - - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0034 DataVersion: 540305990 - [1651484618.450366][3424:3429] CHIP:TOO: color point r intensity: 0 - [1651484618.450496][3424:3429] CHIP:EM: Sending Standalone Ack for MessageCounter:7795217 on exchange 46127i + Verify in DUT as client side log: + CHIP:IM: Received Read request + CHIP:DMG: ReadRequestMessage = + CHIP:DMG: { + CHIP:DMG: AttributePathIBs = + CHIP:DMG: [ + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x300, + CHIP:DMG: Attribute = 0x0000_0034, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: isFabricFiltered = true, + CHIP:DMG: InteractionModelRevision = 1 + CHIP:DMG: }, disabled: true - label: @@ -529,10 +1425,24 @@ tests: verification: | ./chip-tool colorcontrol read color-point-gx 1 1 - - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0036 DataVersion: 540305990 - [1651484661.163449][3438:3443] CHIP:TOO: color point g x: 0 - [1651484661.163534][3438:3443] CHIP:EM: Sending Standalone Ack for MessageCounter:8020365 on exchange 14427i + Verify in DUT as client side log: + CHIP:IM: Received Read request + CHIP:DMG: ReadRequestMessage = + CHIP:DMG: { + CHIP:DMG: AttributePathIBs = + CHIP:DMG: [ + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x300, + CHIP:DMG: Attribute = 0x0000_0036, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: isFabricFiltered = true, + CHIP:DMG: InteractionModelRevision = 1 + CHIP:DMG: }, disabled: true - label: @@ -541,10 +1451,24 @@ tests: verification: | ./chip-tool colorcontrol read color-point-gy 1 1 - - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0037 DataVersion: 540305990 - [1651484675.995507][3444:3449] CHIP:TOO: color point g y: 0 - [1651484675.995585][3444:3449] CHIP:EM: Sending Standalone Ack for MessageCounter:5358119 on exchange 45686i + Verify in DUT as client side log: + CHIP:IM: Received Read request + CHIP:DMG: ReadRequestMessage = + CHIP:DMG: { + CHIP:DMG: AttributePathIBs = + CHIP:DMG: [ + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x300, + CHIP:DMG: Attribute = 0x0000_0037, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: isFabricFiltered = true, + CHIP:DMG: InteractionModelRevision = 1 + CHIP:DMG: }, disabled: true - label: @@ -554,10 +1478,24 @@ tests: verification: | ./chip-tool colorcontrol read color-point-gintensity 1 1 - - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0038 DataVersion: 540305990 - [1651484700.811165][3451:3456] CHIP:TOO: color point g intensity: 0 - [1651484700.811283][3451:3456] CHIP:EM: Sending Standalone Ack for MessageCounter:3831934 on exchange 46053i + Verify in DUT as client side log: + CHIP:IM: Received Read request + CHIP:DMG: ReadRequestMessage = + CHIP:DMG: { + CHIP:DMG: AttributePathIBs = + CHIP:DMG: [ + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x300, + CHIP:DMG: Attribute = 0x0000_0038, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: isFabricFiltered = true, + CHIP:DMG: InteractionModelRevision = 1 + CHIP:DMG: }, disabled: true - label: @@ -566,9 +1504,24 @@ tests: verification: | ./chip-tool colorcontrol read color-point-bx 1 1 - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_003A DataVersion: 540305990 - [1651484728.014850][3459:3464] CHIP:TOO: color point b x: 0 - [1651484728.014978][3459:3464] CHIP:EM: Sending Standalone Ack for MessageCounter:16345213 on exchange 13i + Verify in DUT as client side log: + CHIP:IM: Received Read request + CHIP:DMG: ReadRequestMessage = + CHIP:DMG: { + CHIP:DMG: AttributePathIBs = + CHIP:DMG: [ + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x300, + CHIP:DMG: Attribute = 0x0000_003a, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: isFabricFiltered = true, + CHIP:DMG: InteractionModelRevision = 1 + CHIP:DMG: }, disabled: true - label: @@ -577,9 +1530,24 @@ tests: verification: | ./chip-tool colorcontrol read color-point-by 1 1 - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_003B DataVersion: 540305990 - [1651484766.975812][3469:3474] CHIP:TOO: color point b y: 0 - [1651484766.975908][3469:3474] CHIP:EM: Sending Standalone Ack for MessageCounter:13904476 on exchange 17909i + Verify in DUT as client side log: + CHIP:IM: Received Read request + CHIP:DMG: ReadRequestMessage = + CHIP:DMG: { + CHIP:DMG: AttributePathIBs = + CHIP:DMG: [ + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x300, + CHIP:DMG: Attribute = 0x0000_003b, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: isFabricFiltered = true, + CHIP:DMG: InteractionModelRevision = 1 + CHIP:DMG: }, disabled: true - label: @@ -589,7 +1557,22 @@ tests: verification: | ./chip-tool colorcontrol read color-point-bintensity 1 1 - CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_003B DataVersion: 540305990 - [1651484766.975812][3469:3474] CHIP:TOO: color point b y: 0 - [1651484766.975908][3469:3474] CHIP:EM: Sending Standalone Ack for MessageCounter:13904476 on exchange 17909i + Verify in DUT as client side log: + CHIP:IM: Received Read request + CHIP:DMG: ReadRequestMessage = + CHIP:DMG: { + CHIP:DMG: AttributePathIBs = + CHIP:DMG: [ + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x300, + CHIP:DMG: Attribute = 0x0000_003c, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: isFabricFiltered = true, + CHIP:DMG: InteractionModelRevision = 1 + CHIP:DMG: }, disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CC_3_1.yaml b/src/app/tests/suites/certification/Test_TC_CC_3_1.yaml index 4872048e0a3c34..3884460ec66651 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_3_1.yaml @@ -18,6 +18,7 @@ config: nodeId: 0x12344321 cluster: "Color Control" endpoint: 1 + timeout: 150 tests: - label: "Wait for the commissioned device to be retrieved" @@ -40,7 +41,7 @@ tests: value: 1 - label: "Reads CurrentHue attribute from DUT" - PICS: CC.S.A0000 + PICS: CC.S.F00 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: @@ -50,7 +51,7 @@ tests: maxValue: 254 - label: "Move to hue shortest distance command" - PICS: CC.S.C00.Rsp + PICS: CC.S.F00 && CC.S.C00.Rsp command: "MoveToHue" arguments: values: @@ -65,18 +66,18 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Wait 290ms" + - label: "Wait 5000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 290 + value: 5000 - label: "Check current hue attribute value matched the value sent by the last command" - PICS: CC.S.A0000 + PICS: CC.S.F00 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: @@ -85,18 +86,18 @@ tests: minValue: 0 maxValue: 254 - - label: "Wait 295ms" + - label: "Wait 5000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 295 + value: 5000 - label: "Check current hue attribute value matched the value sent by the last command" - PICS: CC.S.A0000 + PICS: CC.S.F00 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: @@ -105,29 +106,26 @@ tests: minValue: 0 maxValue: 254 - - label: "Wait 300ms" + - label: "Wait 20s" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 300 + value: 20000 - label: "Check current hue attribute value matched the value sent by the last command" - PICS: CC.S.A0000 + PICS: CC.S.F00 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: - constraints: - type: uint8 - minValue: 0 - maxValue: 254 + value: 150 - label: "Move to hue longest distance command" command: "MoveToHue" - PICS: CC.S.C00.Rsp + PICS: CC.S.F00 && CC.S.C00.Rsp arguments: values: - name: "hue" @@ -141,18 +139,18 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Wait 290ms" + - label: "Wait 5000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 290 + value: 5000 - label: "Check current hue attribute value matched the value sent by the last command" - PICS: CC.S.A0000 + PICS: CC.S.F00 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: @@ -161,18 +159,18 @@ tests: minValue: 0 maxValue: 254 - - label: "Wait 295ms" + - label: "Wait 5000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 295 + value: 5000 - label: "Check current hue attribute value matched the value sent by the last command" - PICS: CC.S.A0000 + PICS: CC.S.F00 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: @@ -181,29 +179,26 @@ tests: minValue: 0 maxValue: 254 - - label: "Wait 300ms" + - label: "Wait 20s" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 300 + value: 20000 - label: "Check current hue attribute value matched the value sent by the last command" - PICS: CC.S.A0000 + PICS: CC.S.F00 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: - constraints: - type: uint8 - minValue: 0 - maxValue: 254 + value: 200 - label: "Move to hue up command" command: "MoveToHue" - PICS: CC.S.C00.Rsp + PICS: CC.S.F00 && CC.S.C00.Rsp arguments: values: - name: "hue" @@ -217,18 +212,18 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Wait 290ms" + - label: "Wait 5000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 290 + value: 5000 - label: "Check current hue attribute value matched the value sent by the last command" - PICS: CC.S.A0000 + PICS: CC.S.F00 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: @@ -237,18 +232,18 @@ tests: minValue: 0 maxValue: 254 - - label: "Wait 295ms" + - label: "Wait 5000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 295 + value: 5000 - label: "Check current hue attribute value matched the value sent by the last command" - PICS: CC.S.A0000 + PICS: CC.S.F00 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: @@ -257,33 +252,30 @@ tests: minValue: 0 maxValue: 254 - - label: "Wait 300ms" + - label: "Wait 20s" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 300 + value: 20000 - label: "Check current hue attribute value matched the value sent by the last command" - PICS: CC.S.A0000 + PICS: CC.S.F00 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: - constraints: - type: uint8 - minValue: 0 - maxValue: 254 + value: 250 - label: "Move to hue down command" command: "MoveToHue" - PICS: CC.S.C00.Rsp + PICS: CC.S.F00 && CC.S.C00.Rsp arguments: values: - name: "hue" - value: 225 + value: 200 - name: "Direction" value: 3 - name: "TransitionTime" @@ -293,18 +285,18 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Wait 290ms" + - label: "Wait 5000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 290 + value: 5000 - label: "Check current hue attribute value matched the value sent by the last command" - PICS: CC.S.A0000 + PICS: CC.S.F00 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: @@ -313,18 +305,18 @@ tests: minValue: 0 maxValue: 254 - - label: "Wait 295ms" + - label: "Wait 5000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 295 + value: 5000 - label: "Check current hue attribute value matched the value sent by the last command" - PICS: CC.S.A0000 + PICS: CC.S.F00 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: @@ -333,25 +325,22 @@ tests: minValue: 0 maxValue: 254 - - label: "Wait 300ms" + - label: "Wait 20s" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 300 + value: 20000 - label: "Check current hue attribute value matched the value sent by the last command" - PICS: CC.S.A0000 + PICS: CC.S.F00 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: - constraints: - type: uint8 - minValue: 0 - maxValue: 254 + value: 200 - label: "Turn off light that we turned on" cluster: "On/Off" diff --git a/src/app/tests/suites/certification/Test_TC_CC_3_2.yaml b/src/app/tests/suites/certification/Test_TC_CC_3_2.yaml index 051fdd936354c3..d6b329366d9624 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_3_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_3_2.yaml @@ -41,7 +41,7 @@ tests: - label: "Reads CurrentHue attribute from DUT" command: "readAttribute" - PICS: CC.S.A0000 + PICS: CC.S.F00 && CC.S.A0000 attribute: "CurrentHue" response: constraints: @@ -50,7 +50,7 @@ tests: maxValue: 254 - label: "Move hue up command" - PICS: CC.S.C01.Rsp + PICS: CC.S.F00 && CC.S.C01.Rsp command: "MoveHue" arguments: values: @@ -63,18 +63,18 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Wait 140ms" + - label: "Wait 3000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 140 + value: 3000 - label: "Check current hue attribute value matched the value sent by the last command" - PICS: CC.S.A0000 + PICS: CC.S.F00 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: @@ -83,18 +83,18 @@ tests: minValue: 0 maxValue: 254 - - label: "Wait 145ms" + - label: "Wait 2000" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 145 + value: 2000 - label: "Check current hue attribute value matched the value sent by the last command" - PICS: CC.S.A0000 + PICS: CC.S.F00 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: @@ -103,18 +103,18 @@ tests: minValue: 0 maxValue: 254 - - label: "Wait 150ms" + - label: "Wait 3000" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 150 + value: 3000 - label: "Check current hue attribute value matched the value sent by the last command" - PICS: CC.S.A0000 + PICS: CC.S.F00 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: @@ -124,7 +124,7 @@ tests: maxValue: 254 - label: "Move hue stop command" - PICS: CC.S.C01.Rsp + PICS: CC.S.F00 && CC.S.C01.Rsp command: "MoveHue" arguments: values: @@ -137,68 +137,46 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Wait 140ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 140 + value: 1000 - label: "Check current hue attribute value matched the value sent by the last command" - PICS: CC.S.A0000 + PICS: CC.S.F00 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: + saveAs: CurrentHueValue constraints: type: uint8 minValue: 0 maxValue: 254 - - label: "Wait 145ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 145 + value: 1000 - label: "Check current hue attribute value matched the value sent by the last command" - PICS: CC.S.A0000 + PICS: CC.S.F00 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: - constraints: - type: uint8 - minValue: 0 - maxValue: 254 - - - label: "Wait 150ms" - cluster: "DelayCommands" - command: "WaitForMs" - arguments: - values: - - name: "ms" - value: 150 - - - label: - "Check current hue attribute value matched the value sent by the last - command" - PICS: CC.S.A0000 - command: "readAttribute" - attribute: "CurrentHue" - response: - constraints: - type: uint8 - minValue: 0 - maxValue: 254 + value: CurrentHueValue - label: "Move hue down command" - PICS: CC.S.C01.Rsp + PICS: CC.S.F00 && CC.S.C01.Rsp command: "MoveHue" arguments: values: @@ -211,18 +189,18 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Wait 140ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 140 + value: 1000 - label: "Check current hue attribute value matched the value sent by the last command" - PICS: CC.S.A0000 + PICS: CC.S.F00 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: @@ -231,18 +209,18 @@ tests: minValue: 0 maxValue: 254 - - label: "Wait 145ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 145 + value: 1000 - label: "Check current hue attribute value matched the value sent by the last command" - PICS: CC.S.A0000 + PICS: CC.S.F00 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: @@ -251,18 +229,18 @@ tests: minValue: 0 maxValue: 254 - - label: "Wait 150ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 150 + value: 1000 - label: "Check current hue attribute value matched the value sent by the last command" - PICS: CC.S.A0000 + PICS: CC.S.F00 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: @@ -272,7 +250,7 @@ tests: maxValue: 254 - label: "Move hue stop command" - PICS: CC.S.C01.Rsp + PICS: CC.S.F00 && CC.S.C01.Rsp command: "MoveHue" arguments: values: @@ -285,65 +263,43 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Wait 140ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 140 + value: 1000 - label: "Check current hue attribute value matched the value sent by the last command" - PICS: CC.S.A0000 + PICS: CC.S.F00 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: + saveAs: CurrentHueValueAfterStopmode constraints: type: uint8 minValue: 0 maxValue: 254 - - label: "Wait 145ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 145 + value: 1000 - label: "Check current hue attribute value matched the value sent by the last command" - PICS: CC.S.A0000 + PICS: CC.S.F00 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: - constraints: - type: uint8 - minValue: 0 - maxValue: 254 - - - label: "Wait 150ms" - cluster: "DelayCommands" - command: "WaitForMs" - arguments: - values: - - name: "ms" - value: 150 - - - label: - "Check current hue attribute value matched the value sent by the last - command" - PICS: CC.S.A0000 - command: "readAttribute" - attribute: "CurrentHue" - response: - constraints: - type: uint8 - minValue: 0 - maxValue: 254 + value: CurrentHueValueAfterStopmode - label: "Turn off light that we turned on" cluster: "On/Off" diff --git a/src/app/tests/suites/certification/Test_TC_CC_3_3.yaml b/src/app/tests/suites/certification/Test_TC_CC_3_3.yaml index 482b5bbaf86843..493f75382237ad 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_3_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_3_3.yaml @@ -40,7 +40,7 @@ tests: value: 1 - label: "Reads CurrentHue attribute from DUT" - PICS: CC.S.A0000 + PICS: CC.S.F00 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: @@ -50,7 +50,7 @@ tests: maxValue: 254 - label: "Step hue up command" - PICS: CC.S.C02.Rsp + PICS: CC.S.F00 && CC.S.C02.Rsp command: "StepHue" arguments: values: @@ -65,7 +65,7 @@ tests: - name: "OptionsOverride" value: 0 - #delay step is necessary to let the attribute value change over time + #Delay step is necessary to let the attribute value change over time - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" @@ -75,7 +75,7 @@ tests: value: 1000 - label: "Over TransitionTime,Read CurrentHue attribute from DUT" - PICS: CC.S.A0000 + PICS: CC.S.F00 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: @@ -85,7 +85,7 @@ tests: maxValue: 254 - label: "Step hue down command" - PICS: CC.S.C02.Rsp + PICS: CC.S.F00 && CC.S.C02.Rsp command: "StepHue" arguments: values: @@ -109,7 +109,7 @@ tests: value: 1000 - label: "Over TransitionTime,Read CurrentHue attribute from DUT" - PICS: CC.S.A0000 + PICS: CC.S.F00 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: diff --git a/src/app/tests/suites/certification/Test_TC_CC_3_4.yaml b/src/app/tests/suites/certification/Test_TC_CC_3_4.yaml index 9647c697a195e4..c8f36ee2425085 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_3_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_3_4.yaml @@ -25,35 +25,41 @@ tests: PICS: CC.C.C00.Rsp verification: | ./chip-tool colorcontrol move-to-hue 1 0 300 0 0 1 1 - [1646210342.550556][2190:2190] CHIP:DMG: InvokeRequestMessage = - [1646210342.550627][2190:2190] CHIP:DMG: { - [1646210342.550679][2190:2190] CHIP:DMG: suppressResponse = false, - [1646210342.550714][2190:2190] CHIP:DMG: timedRequest = false, - [1646210342.550744][2190:2190] CHIP:DMG: InvokeRequests = - [1646210342.550784][2190:2190] CHIP:DMG: [ - [1646210342.550813][2190:2190] CHIP:DMG: CommandDataIB = - [1646210342.550852][2190:2190] CHIP:DMG: { - [1646210342.550883][2190:2190] CHIP:DMG: CommandPathIB = - [1646210342.550922][2190:2190] CHIP:DMG: { - [1646210342.550961][2190:2190] CHIP:DMG: EndpointId = 0x1, - [1646210342.551004][2190:2190] CHIP:DMG: ClusterId = 0x300, - [1646210342.551048][2190:2190] CHIP:DMG: CommandId = 0x0, - [1646210342.551085][2190:2190] CHIP:DMG: }, - [1646210342.551124][2190:2190] CHIP:DMG: - [1646210342.551158][2190:2190] CHIP:DMG: CommandData = - [1646210342.551195][2190:2190] CHIP:DMG: { - [1646210342.551234][2190:2190] CHIP:DMG: 0x0 = 1, - [1646210342.551275][2190:2190] CHIP:DMG: 0x1 = 0, - [1646210342.551315][2190:2190] CHIP:DMG: 0x2 = 200, - [1646210342.551356][2190:2190] CHIP:DMG: 0x3 = 0, - [1646210342.551396][2190:2190] CHIP:DMG: 0x4 = 0, - [1646210342.551434][2190:2190] CHIP:DMG: }, - [1646210342.551469][2190:2190] CHIP:DMG: }, - [1646210342.551508][2190:2190] CHIP:DMG: - [1646210342.551537][2190:2190] CHIP:DMG: ], - [1646210342.551575][2190:2190] CHIP:DMG: - [1646210342.551604][2190:2190] CHIP:DMG: InteractionModelRevision = 1 - [1646210342.551632][2190:2190] CHIP:DMG: }, + + Verify in DUT as client side log: + + [1657911287.814194][2977:2977] CHIP:DMG: InvokeRequestMessage = + [1657911287.814246][2977:2977] CHIP:DMG: { + [1657911287.814289][2977:2977] CHIP:DMG: suppressResponse = false, + [1657911287.814340][2977:2977] CHIP:DMG: timedRequest = false, + [1657911287.814385][2977:2977] CHIP:DMG: InvokeRequests = + [1657911287.814445][2977:2977] CHIP:DMG: [ + [1657911287.814491][2977:2977] CHIP:DMG: CommandDataIB = + [1657911287.814543][2977:2977] CHIP:DMG: { + [1657911287.814591][2977:2977] CHIP:DMG: CommandPathIB = + [1657911287.814644][2977:2977] CHIP:DMG: { + [1657911287.814698][2977:2977] CHIP:DMG: EndpointId = 0x1, + [1657911287.814756][2977:2977] CHIP:DMG: ClusterId = 0x300, + [1657911287.814811][2977:2977] CHIP:DMG: CommandId = 0x0, + [1657911287.814863][2977:2977] CHIP:DMG: }, + [1657911287.814918][2977:2977] CHIP:DMG: + [1657911287.814969][2977:2977] CHIP:DMG: CommandFields = + [1657911287.815021][2977:2977] CHIP:DMG: { + [1657911287.815062][2977:2977] CHIP:DMG: 0x0 = 1, + [1657911287.815092][2977:2977] CHIP:DMG: 0x1 = 0, + [1657911287.815123][2977:2977] CHIP:DMG: 0x2 = 300, + [1657911287.815221][2977:2977] CHIP:DMG: 0x3 = 0, + [1657911287.815256][2977:2977] CHIP:DMG: 0x4 = 0, + [1657911287.815285][2977:2977] CHIP:DMG: }, + [1657911287.815311][2977:2977] CHIP:DMG: }, + [1657911287.815342][2977:2977] CHIP:DMG: + [1657911287.815366][2977:2977] CHIP:DMG: ], + [1657911287.815397][2977:2977] CHIP:DMG: + [1657911287.815420][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911287.815443][2977:2977] CHIP:DMG: }, + [1657911287.815520][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=o + [1657911287.815562][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911287.815590][2977:2977] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0000 disabled: true - label: @@ -62,166 +68,212 @@ tests: PICS: CC.C.A0000 verification: | ./chip-tool colorcontrol read current-hue 1 1 - [1646210292.985313][2190:2190] CHIP:DMG: ReadRequestMessage = - [1646210292.985373][2190:2190] CHIP:DMG: { - [1646210292.985402][2190:2190] CHIP:DMG: AttributePathIBs = - [1646210292.985436][2190:2190] CHIP:DMG: [ - [1646210292.985467][2190:2190] CHIP:DMG: AttributePathIB = - [1646210292.985657][2190:2190] CHIP:DMG: { - [1646210292.985849][2190:2190] CHIP:DMG: Endpoint = 0x1, - [1646210292.985935][2190:2190] CHIP:DMG: Cluster = 0x300, - [1646210292.986063][2190:2190] CHIP:DMG: Attribute = 0x0000_0000, - [1646210292.986124][2190:2190] CHIP:DMG: } - [1646210292.986183][2190:2190] CHIP:DMG: - [1646210292.986219][2190:2190] CHIP:DMG: ], - [1646210292.986257][2190:2190] CHIP:DMG: - [1646210292.986291][2190:2190] CHIP:DMG: isFabricFiltered = false, - [1646210292.986324][2190:2190] CHIP:DMG: InteractionModelRevision = 1 - [1646210292.986355][2190:2190] CHIP:DMG: }, + + Verify in DUT as client side log: + + [1657911327.184763][2977:2977] CHIP:IM: Received Read request + [1657911327.184901][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657911327.184952][2977:2977] CHIP:DMG: { + [1657911327.184993][2977:2977] CHIP:DMG: AttributePathIBs = + [1657911327.185041][2977:2977] CHIP:DMG: [ + [1657911327.185084][2977:2977] CHIP:DMG: AttributePathIB = + [1657911327.185133][2977:2977] CHIP:DMG: { + [1657911327.185185][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657911327.185243][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657911327.185301][2977:2977] CHIP:DMG: Attribute = 0x0000_0000, + [1657911327.185355][2977:2977] CHIP:DMG: } + [1657911327.185407][2977:2977] CHIP:DMG: + [1657911327.185455][2977:2977] CHIP:DMG: ], + [1657911327.185506][2977:2977] CHIP:DMG: + [1657911327.185553][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657911327.185599][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911327.185642][2977:2977] CHIP:DMG: }, + [1657911327.185770][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657911327.185916][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657911327.185968][2977:2977] CHIP:DMG: Cluster 300, Attribute 0 is dirty + [1657911327.186007][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0000 (expanded=0) + [1657911327.186056][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657911327.186111][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911327.186199][2977:2977] CHIP:DMG: Sending report (payload has 37 bytes)... disabled: true - label: "DUT sends MoveHue command to TH" PICS: CC.C.C01.Rsp verification: | ./chip-tool colorcontrol move-hue 1 10 0 0 1 1 - [1646210493.976737][2190:2190] CHIP:EM: Handling via exchange: 36870r, Delegate: 0xaaaad04530c8 - [1646210493.976986][2190:2190] CHIP:DMG: InvokeRequestMessage = - [1646210493.977019][2190:2190] CHIP:DMG: { - [1646210493.977047][2190:2190] CHIP:DMG: suppressResponse = false, - [1646210493.977079][2190:2190] CHIP:DMG: timedRequest = false, - [1646210493.977109][2190:2190] CHIP:DMG: InvokeRequests = - [1646210493.977147][2190:2190] CHIP:DMG: [ - [1646210493.977173][2190:2190] CHIP:DMG: CommandDataIB = - [1646210493.977222][2190:2190] CHIP:DMG: { - [1646210493.977267][2190:2190] CHIP:DMG: CommandPathIB = - [1646210493.977320][2190:2190] CHIP:DMG: { - [1646210493.977376][2190:2190] CHIP:DMG: EndpointId = 0x1, - [1646210493.977443][2190:2190] CHIP:DMG: ClusterId = 0x300, - [1646210493.977478][2190:2190] CHIP:DMG: CommandId = 0x1, - [1646210493.977536][2190:2190] CHIP:DMG: }, - [1646210493.977572][2190:2190] CHIP:DMG: - [1646210493.977628][2190:2190] CHIP:DMG: CommandData = - [1646210493.977671][2190:2190] CHIP:DMG: { - [1646210493.977711][2190:2190] CHIP:DMG: 0x0 = 1, - [1646210493.977755][2190:2190] CHIP:DMG: 0x1 = 10, - [1646210493.978098][2190:2190] CHIP:DMG: 0x2 = 0, - [1646210493.978286][2190:2190] CHIP:DMG: 0x3 = 0, - [1646210493.978369][2190:2190] CHIP:DMG: }, - [1646210493.978405][2190:2190] CHIP:DMG: }, - [1646210493.978469][2190:2190] CHIP:DMG: - [1646210493.978499][2190:2190] CHIP:DMG: ], - [1646210493.978536][2190:2190] CHIP:DMG: - [1646210493.978565][2190:2190] CHIP:DMG: InteractionModelRevision = 1 - [1646210493.978595][2190:2190] CHIP:DMG: }, + Verify in DUT as client side log: + + [1657911357.567908][2977:2977] CHIP:DMG: InvokeRequestMessage = + [1657911357.567957][2977:2977] CHIP:DMG: { + [1657911357.567999][2977:2977] CHIP:DMG: suppressResponse = false, + [1657911357.568048][2977:2977] CHIP:DMG: timedRequest = false, + [1657911357.568129][2977:2977] CHIP:DMG: InvokeRequests = + [1657911357.568189][2977:2977] CHIP:DMG: [ + [1657911357.568234][2977:2977] CHIP:DMG: CommandDataIB = + [1657911357.568289][2977:2977] CHIP:DMG: { + [1657911357.568335][2977:2977] CHIP:DMG: CommandPathIB = + [1657911357.568390][2977:2977] CHIP:DMG: { + [1657911357.568454][2977:2977] CHIP:DMG: EndpointId = 0x1, + [1657911357.568520][2977:2977] CHIP:DMG: ClusterId = 0x300, + [1657911357.568580][2977:2977] CHIP:DMG: CommandId = 0x1, + [1657911357.568636][2977:2977] CHIP:DMG: }, + [1657911357.568695][2977:2977] CHIP:DMG: + [1657911357.568746][2977:2977] CHIP:DMG: CommandFields = + [1657911357.568807][2977:2977] CHIP:DMG: { + [1657911357.568868][2977:2977] CHIP:DMG: 0x0 = 1, + [1657911357.568929][2977:2977] CHIP:DMG: 0x1 = 10, + [1657911357.569006][2977:2977] CHIP:DMG: 0x2 = 0, + [1657911357.569071][2977:2977] CHIP:DMG: 0x3 = 0, + [1657911357.569131][2977:2977] CHIP:DMG: }, + [1657911357.569189][2977:2977] CHIP:DMG: }, + [1657911357.569244][2977:2977] CHIP:DMG: + [1657911357.569288][2977:2977] CHIP:DMG: ], + [1657911357.569344][2977:2977] CHIP:DMG: + [1657911357.569387][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911357.569433][2977:2977] CHIP:DMG: }, + [1657911357.569549][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=o + [1657911357.569610][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911357.569659][2977:2977] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0001 disabled: true - label: "DUT reads CurrentHue attribute from TH several Times." PICS: CC.C.A0000 verification: | ./chip-tool colorcontrol read current-hue 1 1 - [1646210292.985313][2190:2190] CHIP:DMG: ReadRequestMessage = - [1646210292.985373][2190:2190] CHIP:DMG: { - [1646210292.985402][2190:2190] CHIP:DMG: AttributePathIBs = - [1646210292.985436][2190:2190] CHIP:DMG: [ - [1646210292.985467][2190:2190] CHIP:DMG: AttributePathIB = - [1646210292.985657][2190:2190] CHIP:DMG: { - [1646210292.985849][2190:2190] CHIP:DMG: Endpoint = 0x1, - [1646210292.985935][2190:2190] CHIP:DMG: Cluster = 0x300, - [1646210292.986063][2190:2190] CHIP:DMG: Attribute = 0x0000_0000, - [1646210292.986124][2190:2190] CHIP:DMG: } - [1646210292.986183][2190:2190] CHIP:DMG: - [1646210292.986219][2190:2190] CHIP:DMG: ], - [1646210292.986257][2190:2190] CHIP:DMG: - [1646210292.986291][2190:2190] CHIP:DMG: isFabricFiltered = false, - [1646210292.986324][2190:2190] CHIP:DMG: InteractionModelRevision = 1 - [1646210292.986355][2190:2190] CHIP:DMG: }, + + Verify in DUT as client side log: + [1657911381.312873][2977:2977] CHIP:IM: Received Read request + [1657911381.312995][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657911381.313043][2977:2977] CHIP:DMG: { + [1657911381.313082][2977:2977] CHIP:DMG: AttributePathIBs = + [1657911381.313172][2977:2977] CHIP:DMG: [ + [1657911381.313224][2977:2977] CHIP:DMG: AttributePathIB = + [1657911381.313274][2977:2977] CHIP:DMG: { + [1657911381.313325][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657911381.313390][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657911381.313449][2977:2977] CHIP:DMG: Attribute = 0x0000_0000, + [1657911381.313549][2977:2977] CHIP:DMG: } + [1657911381.313607][2977:2977] CHIP:DMG: + [1657911381.313657][2977:2977] CHIP:DMG: ], + [1657911381.313703][2977:2977] CHIP:DMG: + [1657911381.313730][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657911381.313756][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911381.313782][2977:2977] CHIP:DMG: }, + [1657911381.313945][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657911381.314046][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657911381.314077][2977:2977] CHIP:DMG: Cluster 300, Attribute 0 is dirty + [1657911381.314100][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0000 (expanded=0) + [1657911381.314129][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657911381.314164][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911381.314224][2977:2977] CHIP:DMG: Sending report (payload has 37 bytes)... disabled: true - label: "DUT sends StepHue command to TH" PICS: CC.C.C02.Rsp verification: | ./chip-tool colorcontrol step-hue 1 10 200 0 0 1 1 - [1646210571.683401][2190:2190] CHIP:DMG: InvokeRequestMessage = - [1646210571.683444][2190:2190] CHIP:DMG: { - [1646210571.683475][2190:2190] CHIP:DMG: suppressResponse = false, - [1646210571.683530][2190:2190] CHIP:DMG: timedRequest = false, - [1646210571.683565][2190:2190] CHIP:DMG: InvokeRequests = - [1646210571.683608][2190:2190] CHIP:DMG: [ - [1646210571.683641][2190:2190] CHIP:DMG: CommandDataIB = - [1646210571.683726][2190:2190] CHIP:DMG: { - [1646210571.683799][2190:2190] CHIP:DMG: CommandPathIB = - [1646210571.683908][2190:2190] CHIP:DMG: { - [1646210571.683953][2190:2190] CHIP:DMG: EndpointId = 0x1, - [1646210571.684011][2190:2190] CHIP:DMG: ClusterId = 0x300, - [1646210571.684058][2190:2190] CHIP:DMG: CommandId = 0x2, - [1646210571.684102][2190:2190] CHIP:DMG: }, - [1646210571.684146][2190:2190] CHIP:DMG: - [1646210571.684183][2190:2190] CHIP:DMG: CommandData = - [1646210571.684228][2190:2190] CHIP:DMG: { - [1646210571.684275][2190:2190] CHIP:DMG: 0x0 = 1, - [1646210571.684323][2190:2190] CHIP:DMG: 0x1 = 10, - [1646210571.684370][2190:2190] CHIP:DMG: 0x2 = 200, - [1646210571.684414][2190:2190] CHIP:DMG: 0x3 = 0, - [1646210571.684458][2190:2190] CHIP:DMG: 0x4 = 0, - [1646210571.684501][2190:2190] CHIP:DMG: }, - [1646210571.684539][2190:2190] CHIP:DMG: }, - [1646210571.684582][2190:2190] CHIP:DMG: - [1646210571.684613][2190:2190] CHIP:DMG: ], - [1646210571.684653][2190:2190] CHIP:DMG: - [1646210571.684684][2190:2190] CHIP:DMG: InteractionModelRevision = 1 - [1646210571.684715][2190:2190] CHIP:DMG: }, + + Verify in DUT as client side log: + + [1657911412.480684][2977:2977] CHIP:DMG: InvokeRequestMessage = + [1657911412.480741][2977:2977] CHIP:DMG: { + [1657911412.480788][2977:2977] CHIP:DMG: suppressResponse = false, + [1657911412.480843][2977:2977] CHIP:DMG: timedRequest = false, + [1657911412.480894][2977:2977] CHIP:DMG: InvokeRequests = + [1657911412.480960][2977:2977] CHIP:DMG: [ + [1657911412.481011][2977:2977] CHIP:DMG: CommandDataIB = + [1657911412.481067][2977:2977] CHIP:DMG: { + [1657911412.481120][2977:2977] CHIP:DMG: CommandPathIB = + [1657911412.481199][2977:2977] CHIP:DMG: { + [1657911412.481329][2977:2977] CHIP:DMG: EndpointId = 0x1, + [1657911412.481400][2977:2977] CHIP:DMG: ClusterId = 0x300, + [1657911412.481468][2977:2977] CHIP:DMG: CommandId = 0x2, + [1657911412.481532][2977:2977] CHIP:DMG: }, + [1657911412.481647][2977:2977] CHIP:DMG: + [1657911412.481707][2977:2977] CHIP:DMG: CommandFields = + [1657911412.481769][2977:2977] CHIP:DMG: { + [1657911412.481958][2977:2977] CHIP:DMG: 0x0 = 1, + [1657911412.482101][2977:2977] CHIP:DMG: 0x1 = 10, + [1657911412.482173][2977:2977] CHIP:DMG: 0x2 = 200, + [1657911412.482243][2977:2977] CHIP:DMG: 0x3 = 0, + [1657911412.482313][2977:2977] CHIP:DMG: 0x4 = 0, + [1657911412.482379][2977:2977] CHIP:DMG: }, + [1657911412.482438][2977:2977] CHIP:DMG: }, + [1657911412.482506][2977:2977] CHIP:DMG: + [1657911412.482556][2977:2977] CHIP:DMG: ], + [1657911412.482621][2977:2977] CHIP:DMG: + [1657911412.482670][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911412.482718][2977:2977] CHIP:DMG: }, + [1657911412.482850][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=o + [1657911412.482919][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911412.482974][2977:2977] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0002 disabled: true - label: "Over TransitionTime, DUT reads CurrentHue attribute from TH." PICS: CC.C.A0000 verification: | ./chip-tool colorcontrol read current-hue 1 1 - [1646210292.985313][2190:2190] CHIP:DMG: ReadRequestMessage = - [1646210292.985373][2190:2190] CHIP:DMG: { - [1646210292.985402][2190:2190] CHIP:DMG: AttributePathIBs = - [1646210292.985436][2190:2190] CHIP:DMG: [ - [1646210292.985467][2190:2190] CHIP:DMG: AttributePathIB = - [1646210292.985657][2190:2190] CHIP:DMG: { - [1646210292.985849][2190:2190] CHIP:DMG: Endpoint = 0x1, - [1646210292.985935][2190:2190] CHIP:DMG: Cluster = 0x300, - [1646210292.986063][2190:2190] CHIP:DMG: Attribute = 0x0000_0000, - [1646210292.986124][2190:2190] CHIP:DMG: } - [1646210292.986183][2190:2190] CHIP:DMG: - [1646210292.986219][2190:2190] CHIP:DMG: ], - [1646210292.986257][2190:2190] CHIP:DMG: - [1646210292.986291][2190:2190] CHIP:DMG: isFabricFiltered = false, - [1646210292.986324][2190:2190] CHIP:DMG: InteractionModelRevision = 1 - [1646210292.986355][2190:2190] CHIP:DMG: }, + Verify in DUT as client side log: + + [1657911437.116353][2977:2977] CHIP:IM: Received Read request + [1657911437.116480][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657911437.116528][2977:2977] CHIP:DMG: { + [1657911437.116568][2977:2977] CHIP:DMG: AttributePathIBs = + [1657911437.116615][2977:2977] CHIP:DMG: [ + [1657911437.116658][2977:2977] CHIP:DMG: AttributePathIB = + [1657911437.116707][2977:2977] CHIP:DMG: { + [1657911437.116758][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657911437.116823][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657911437.116882][2977:2977] CHIP:DMG: Attribute = 0x0000_0000, + [1657911437.116933][2977:2977] CHIP:DMG: } + [1657911437.116988][2977:2977] CHIP:DMG: + [1657911437.117038][2977:2977] CHIP:DMG: ], + [1657911437.117090][2977:2977] CHIP:DMG: + [1657911437.117130][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657911437.117175][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911437.117218][2977:2977] CHIP:DMG: }, + [1657911437.117344][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657911437.117488][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657911437.117541][2977:2977] CHIP:DMG: Cluster 300, Attribute 0 is dirty + [1657911437.117580][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0000 (expanded=0) + [1657911437.117629][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657911437.117684][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911437.117773][2977:2977] CHIP:DMG: Sending report (payload has 37 bytes)... disabled: true - label: "DUT sends StopMoveStep command to TH." PICS: CC.C.C47.Rsp verification: | ./chip-tool colorcontrol stop-move-step 0 0 1 1 - [1646210677.870562][2190:2190] CHIP:DMG: InvokeRequestMessage = - [1646210677.870594][2190:2190] CHIP:DMG: { - [1646210677.870618][2190:2190] CHIP:DMG: suppressResponse = false, - [1646210677.870666][2190:2190] CHIP:DMG: timedRequest = false, - [1646210677.870696][2190:2190] CHIP:DMG: InvokeRequests = - [1646210677.870728][2190:2190] CHIP:DMG: [ - [1646210677.870754][2190:2190] CHIP:DMG: CommandDataIB = - [1646210677.870792][2190:2190] CHIP:DMG: { - [1646210677.870820][2190:2190] CHIP:DMG: CommandPathIB = - [1646210677.870854][2190:2190] CHIP:DMG: { - [1646210677.870889][2190:2190] CHIP:DMG: EndpointId = 0x1, - [1646210677.870926][2190:2190] CHIP:DMG: ClusterId = 0x300, - [1646210677.870960][2190:2190] CHIP:DMG: CommandId = 0x47, - [1646210677.870992][2190:2190] CHIP:DMG: }, - [1646210677.871027][2190:2190] CHIP:DMG: - [1646210677.871056][2190:2190] CHIP:DMG: CommandData = - [1646210677.871088][2190:2190] CHIP:DMG: { - [1646210677.871124][2190:2190] CHIP:DMG: 0x0 = 0, - [1646210677.871159][2190:2190] CHIP:DMG: 0x1 = 0, - [1646210677.871196][2190:2190] CHIP:DMG: }, - [1646210677.871225][2190:2190] CHIP:DMG: }, - [1646210677.871259][2190:2190] CHIP:DMG: - [1646210677.871286][2190:2190] CHIP:DMG: ], - [1646210677.871317][2190:2190] CHIP:DMG: - [1646210677.871342][2190:2190] CHIP:DMG: InteractionModelRevision = 1 - [1646210677.871368][2190:2190] CHIP:DMG: }, + Verify in DUT as client side log: + + [1657911457.334435][2977:2977] CHIP:DMG: InvokeRequestMessage = + [1657911457.334464][2977:2977] CHIP:DMG: { + [1657911457.334487][2977:2977] CHIP:DMG: suppressResponse = false, + [1657911457.334514][2977:2977] CHIP:DMG: timedRequest = false, + [1657911457.334535][2977:2977] CHIP:DMG: InvokeRequests = + [1657911457.334568][2977:2977] CHIP:DMG: [ + [1657911457.334593][2977:2977] CHIP:DMG: CommandDataIB = + [1657911457.334622][2977:2977] CHIP:DMG: { + [1657911457.334648][2977:2977] CHIP:DMG: CommandPathIB = + [1657911457.334674][2977:2977] CHIP:DMG: { + [1657911457.334700][2977:2977] CHIP:DMG: EndpointId = 0x1, + [1657911457.334733][2977:2977] CHIP:DMG: ClusterId = 0x300, + [1657911457.334766][2977:2977] CHIP:DMG: CommandId = 0x47, + [1657911457.334797][2977:2977] CHIP:DMG: }, + [1657911457.334830][2977:2977] CHIP:DMG: + [1657911457.334857][2977:2977] CHIP:DMG: CommandFields = + [1657911457.334887][2977:2977] CHIP:DMG: { + [1657911457.334920][2977:2977] CHIP:DMG: 0x0 = 0, + [1657911457.334954][2977:2977] CHIP:DMG: 0x1 = 0, + [1657911457.334986][2977:2977] CHIP:DMG: }, + [1657911457.335015][2977:2977] CHIP:DMG: }, + [1657911457.335046][2977:2977] CHIP:DMG: + [1657911457.335071][2977:2977] CHIP:DMG: ], + [1657911457.335102][2977:2977] CHIP:DMG: + [1657911457.335125][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911457.335148][2977:2977] CHIP:DMG: }, + [1657911457.335218][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=o + [1657911457.335258][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911457.335287][2977:2977] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0047 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CC_4_1.yaml b/src/app/tests/suites/certification/Test_TC_CC_4_1.yaml index 5f11a375b09f5f..7b820c7e855836 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_4_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_4_1.yaml @@ -40,7 +40,7 @@ tests: value: 1 - label: "Check Saturation attribute value matched before any change" - PICS: CC.S.A0001 + PICS: CC.S.F00 && CC.S.A0001 command: "readAttribute" attribute: "CurrentSaturation" response: @@ -50,31 +50,31 @@ tests: maxValue: 254 - label: "Move to saturation command" - PICS: CC.S.C03.Rsp + PICS: CC.S.F00 && CC.S.C03.Rsp command: "MoveToSaturation" arguments: values: - name: "Saturation" value: 90 - name: "TransitionTime" - value: 10 + value: 15 - name: "OptionsMask" value: 0 - name: "OptionsOverride" value: 0 - - label: "Wait 6ms" + - label: "Wait 500ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 6 + value: 500 - label: "Check current saturation attribute value matched the value sent by the last command" - PICS: CC.S.A0001 + PICS: CC.S.F00 && CC.S.A0001 command: "readAttribute" attribute: "CurrentSaturation" response: @@ -83,18 +83,18 @@ tests: minValue: 0 maxValue: 254 - - label: "Wait 8ms" + - label: "Wait 500ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 8 + value: 500 - label: "Check current saturation attribute value matched the value sent by the last command" - PICS: CC.S.A0001 + PICS: CC.S.F00 && CC.S.A0001 command: "readAttribute" attribute: "CurrentSaturation" response: @@ -103,25 +103,22 @@ tests: minValue: 0 maxValue: 254 - - label: "Wait 10ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 10 + value: 1000 - label: "Check current saturation attribute value matched the value sent by the last command" - PICS: CC.S.A0001 + PICS: CC.S.F00 && CC.S.A0001 command: "readAttribute" attribute: "CurrentSaturation" response: - constraints: - type: uint8 - minValue: 0 - maxValue: 254 + value: 90 - label: "Turn off light that we turned on" cluster: "On/Off" diff --git a/src/app/tests/suites/certification/Test_TC_CC_4_2.yaml b/src/app/tests/suites/certification/Test_TC_CC_4_2.yaml index 2a41688e9785d2..b8317f46f546b1 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_4_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_4_2.yaml @@ -39,10 +39,8 @@ tests: response: value: 1 - - label: - "Check Saturation attribute value matched the value sent by the last - command" - PICS: CC.S.A0001 + - label: "TH reads CurrentSaturation attribute from DUT" + PICS: CC.S.F00 && CC.S.A0001 command: "readAttribute" attribute: "CurrentSaturation" response: @@ -51,32 +49,30 @@ tests: minValue: 0 maxValue: 254 - - label: "Move saturation up command" + - label: "TH sends MoveSaturation command to DUT with MoveMode Up" command: "MoveSaturation" - PICS: CC.S.C04.Rsp + PICS: CC.S.F00 && CC.S.C04.Rsp arguments: values: - name: "MoveMode" value: 1 - name: "Rate" - value: 5 + value: 15 - name: "OptionsMask" value: 0 - name: "OptionsOverride" value: 0 - - label: "Wait 40ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 40 + value: 1000 - - label: - "Check current saturation attribute value matched the value sent by - the last command" - PICS: CC.S.A0001 + - label: "TH reads CurrentSaturation attribute from DUT several times" + PICS: CC.S.F00 && CC.S.A0001 command: "readAttribute" attribute: "CurrentSaturation" response: @@ -85,18 +81,16 @@ tests: minValue: 0 maxValue: 254 - - label: "Wait 45ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 45 + value: 1000 - - label: - "Check current saturation attribute value matched the value sent by - the last command" - PICS: CC.S.A0001 + - label: "TH reads CurrentSaturation attribute from DUT several times" + PICS: CC.S.F00 && CC.S.A0001 command: "readAttribute" attribute: "CurrentSaturation" response: @@ -105,18 +99,16 @@ tests: minValue: 0 maxValue: 254 - - label: "Wait 50ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 50 + value: 1000 - - label: - "Check current saturation attribute value matched the value sent by - the last command" - PICS: CC.S.A0001 + - label: "TH reads CurrentSaturation attribute from DUT several times" + PICS: CC.S.F00 && CC.S.A0001 command: "readAttribute" attribute: "CurrentSaturation" response: @@ -125,32 +117,30 @@ tests: minValue: 0 maxValue: 254 - - label: "Move saturation down command" - PICS: CC.S.C04.Rsp + - label: "TH sends MoveSaturation command to DUT with MoveMode Down" + PICS: CC.S.F00 && CC.S.C04.Rsp command: "MoveSaturation" arguments: values: - name: "MoveMode" value: 3 - name: "Rate" - value: 5 + value: 10 - name: "OptionsMask" value: 0 - name: "OptionsOverride" value: 0 - - label: "Wait 40ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 40 + value: 1000 - - label: - "Check current saturation attribute value matched the value sent by - the last command" - PICS: CC.S.A0001 + - label: "TH reads CurrentSaturation attribute from DUT several times." + PICS: CC.S.F00 && CC.S.A0001 command: "readAttribute" attribute: "CurrentSaturation" response: @@ -159,18 +149,16 @@ tests: minValue: 0 maxValue: 254 - - label: "Wait 45ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 45 + value: 1000 - - label: - "Check current saturation attribute value matched the value sent by - the last command" - PICS: CC.S.A0001 + - label: "TH reads CurrentSaturation attribute from DUT several times." + PICS: CC.S.F00 && CC.S.A0001 command: "readAttribute" attribute: "CurrentSaturation" response: @@ -179,18 +167,16 @@ tests: minValue: 0 maxValue: 254 - - label: "Wait 50ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 50 + value: 1000 - - label: - "Check current saturation attribute value matched the value sent by - the last command" - PICS: CC.S.A0001 + - label: "TH reads CurrentSaturation attribute from DUT several times." + PICS: CC.S.F00 && CC.S.A0001 command: "readAttribute" attribute: "CurrentSaturation" response: @@ -199,52 +185,32 @@ tests: minValue: 0 maxValue: 254 - - label: "Move saturation up command" - PICS: CC.S.C04.Rsp + - label: + "TH sends MoveSaturation command to DUT with MoveMode Up to the + Maximum allowed Saturation" + PICS: CC.S.F00 && CC.S.C04.Rsp command: "MoveSaturation" arguments: values: - name: "MoveMode" value: 1 - name: "Rate" - value: 5 + value: 100 - name: "OptionsMask" value: 0 - name: "OptionsOverride" value: 0 - - label: "Wait 40ms" - cluster: "DelayCommands" - command: "WaitForMs" - arguments: - values: - - name: "ms" - value: 40 - - - label: - "Check current saturation attribute value matched the value sent by - the last command" - PICS: CC.S.A0001 - command: "readAttribute" - attribute: "CurrentSaturation" - response: - constraints: - type: uint8 - minValue: 0 - maxValue: 254 - - - label: "Wait 45ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 45 + value: 1000 - - label: - "Check current saturation attribute value matched the value sent by - the last command" - PICS: CC.S.A0001 + - label: "TH reads CurrentSaturation attribute from DUT" + PICS: CC.S.F00 && CC.S.A0001 command: "readAttribute" attribute: "CurrentSaturation" response: @@ -253,247 +219,158 @@ tests: minValue: 0 maxValue: 254 - - label: "Wait 50ms" - cluster: "DelayCommands" - command: "WaitForMs" - arguments: - values: - - name: "ms" - value: 50 - - label: - "Check current saturation attribute value matched the value sent by - the last command" - PICS: CC.S.A0001 - command: "readAttribute" - attribute: "CurrentSaturation" - response: - constraints: - type: uint8 - minValue: 0 - maxValue: 254 - - - label: "Move saturation stop command" + "TH sends MoveSaturation command to DUT with MoveMode Stop before + Saturation reaches the Maximum allowed." command: "MoveSaturation" - PICS: CC.S.C04.Rsp + PICS: CC.S.F00 && CC.S.C04.Rsp arguments: values: - name: "MoveMode" value: 0 - name: "Rate" - value: 5 + value: 50 - name: "OptionsMask" value: 0 - name: "OptionsOverride" value: 0 - - label: "Wait 40ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 40 + value: 1000 - - label: - "Check current saturation attribute value matched the value sent by - the last command" - PICS: CC.S.A0001 + - label: "TH reads CurrentSaturation attribute from DUT." + PICS: CC.S.F00 && CC.S.A0001 command: "readAttribute" attribute: "CurrentSaturation" response: + saveAs: CurrentSaturationStep4d constraints: type: uint8 minValue: 0 maxValue: 254 - - label: "Wait 45ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 45 + value: 1000 - - label: - "Check current saturation attribute value matched the value sent by - the last command" - PICS: CC.S.A0001 + - label: "CurrentSaturation value Stops incrementing" + PICS: CC.S.F00 && CC.S.A0001 command: "readAttribute" attribute: "CurrentSaturation" response: - constraints: - type: uint8 - minValue: 0 - maxValue: 254 - - - label: "Wait 50ms" - cluster: "DelayCommands" - command: "WaitForMs" - arguments: - values: - - name: "ms" - value: 50 + value: CurrentSaturationStep4d - label: - "Check current saturation attribute value matched the value sent by - the last command" - PICS: CC.S.A0001 - command: "readAttribute" - attribute: "CurrentSaturation" - response: - constraints: - type: uint8 - minValue: 0 - maxValue: 254 - - - label: "Move saturation down command" - PICS: CC.S.C04.Rsp + "TH sends MoveSaturation command to DUT with MoveMode Down to the + Minimum allowed Saturation" + PICS: CC.S.F00 && CC.S.C04.Rsp command: "MoveSaturation" arguments: values: - name: "MoveMode" value: 3 - name: "Rate" - value: 5 + value: 10 - name: "OptionsMask" value: 0 - name: "OptionsOverride" value: 0 - - label: "Wait 40ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 40 + value: 1000 - - label: - "Check current saturation attribute value matched the value sent by - the last command" - PICS: CC.S.A0001 + - label: "TH reads CurrentSaturation attribute from DUT several times." + PICS: CC.S.F00 && CC.S.A0001 command: "readAttribute" attribute: "CurrentSaturation" response: + saveAs: CurrentSaturationStep5b constraints: type: uint8 minValue: 0 maxValue: 254 - - label: "Wait 45ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 45 + value: 1000 - - label: - "Check current saturation attribute value matched the value sent by - the last command" - PICS: CC.S.A0001 + - label: "TH reads CurrentSaturation attribute from DUT several times." + PICS: CC.S.F00 && CC.S.A0001 command: "readAttribute" attribute: "CurrentSaturation" response: constraints: type: uint8 minValue: 0 - maxValue: 254 - - - label: "Wait 50ms" - cluster: "DelayCommands" - command: "WaitForMs" - arguments: - values: - - name: "ms" - value: 50 + maxValue: CurrentSaturationStep5b - label: - "Check current saturation attribute value matched the value sent by - the last command" - PICS: CC.S.A0001 - command: "readAttribute" - attribute: "CurrentSaturation" - response: - constraints: - type: uint8 - minValue: 0 - maxValue: 254 - - - label: "Move saturation stop command" - PICS: CC.S.C04.Rsp + "TH sends MoveSaturation command to DUT with MoveMode Stop before + Saturation reaches the Minimum allowed" + PICS: CC.S.F00 && CC.S.C04.Rsp command: "MoveSaturation" arguments: values: - name: "MoveMode" value: 0 - name: "Rate" - value: 5 + value: 10 - name: "OptionsMask" value: 0 - name: "OptionsOverride" value: 0 - - label: "Wait 40ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 40 + value: 1000 - - label: - "Check current saturation attribute value matched the value sent by - the last command" - PICS: CC.S.A0001 + - label: "TH reads CurrentSaturation attribute from DUT" + PICS: CC.S.F00 && CC.S.A0001 command: "readAttribute" attribute: "CurrentSaturation" response: + saveAs: CurrentSaturationStep5d constraints: type: uint8 minValue: 0 maxValue: 254 - - label: "Wait 45ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 45 + value: 1000 - - label: - "Check current saturation attribute value matched the value sent by - the last command" - PICS: CC.S.A0001 + - label: "CurrentSaturation value Stops decrementing" + PICS: CC.S.F00 && CC.S.A0001 command: "readAttribute" attribute: "CurrentSaturation" response: - constraints: - type: uint8 - minValue: 0 - maxValue: 254 - - - label: "Wait 50ms" - cluster: "DelayCommands" - command: "WaitForMs" - arguments: - values: - - name: "ms" - value: 50 - - - label: - "Check current saturation attribute value matched the value sent by - the last command" - PICS: CC.S.A0001 - command: "readAttribute" - attribute: "CurrentSaturation" - response: - constraints: - type: uint8 - minValue: 0 - maxValue: 254 + value: CurrentSaturationStep5d - label: "Turn off light that we turned on" cluster: "On/Off" diff --git a/src/app/tests/suites/certification/Test_TC_CC_4_3.yaml b/src/app/tests/suites/certification/Test_TC_CC_4_3.yaml index 6f15689de049eb..27aa46fcfabcc8 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_4_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_4_3.yaml @@ -39,8 +39,8 @@ tests: response: value: 1 - - label: "Reads CurrentSaturation attribute from DUT" - PICS: CC.S.A0001 + - label: "TH reads CurrentSaturation attribute from DUT" + PICS: CC.S.F00 && CC.S.A0001 command: "readAttribute" attribute: "CurrentSaturation" response: @@ -49,8 +49,8 @@ tests: minValue: 0 maxValue: 254 - - label: "Step saturation up command" - PICS: CC.S.C05.Rsp + - label: "TH sends StepSaturation command to DUT with StepMode Up" + PICS: CC.S.F00 && CC.S.C05.Rsp command: "StepSaturation" arguments: values: @@ -66,16 +66,16 @@ tests: value: 0 #delay step is necessary to let the attribute value change over time - - label: "Wait 10ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 10 + value: 1000 - - label: "Over TransitionTime,Read CurrentSaturation attribute from DUT" - PICS: CC.S.A0001 + - label: "Over TransitionTime,TH read CurrentSaturation attribute from DUT" + PICS: CC.S.F00 && CC.S.A0001 command: "readAttribute" attribute: "CurrentSaturation" response: @@ -84,8 +84,8 @@ tests: minValue: 0 maxValue: 254 - - label: "Step saturation down command" - PICS: CC.S.C05.Rsp + - label: "TH sends StepSaturation command to DUT with StepMode Down" + PICS: CC.S.F00 && CC.S.C05.Rsp command: "StepSaturation" arguments: values: @@ -100,16 +100,16 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Wait 10ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 10 + value: 1000 - - label: "Over TransitionTime,Reads CurrentSaturation attribute from DUT" - PICS: CC.S.A0001 + - label: "Over TransitionTime,TH reads CurrentSaturation attribute from DUT" + PICS: CC.S.F00 && CC.S.A0001 command: "readAttribute" attribute: "CurrentSaturation" response: diff --git a/src/app/tests/suites/certification/Test_TC_CC_4_4.yaml b/src/app/tests/suites/certification/Test_TC_CC_4_4.yaml index 1f76c3db369c18..45609eb2840b78 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_4_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_4_4.yaml @@ -40,8 +40,8 @@ tests: response: value: 1 - - label: "Check current hue attribute value matched before any change" - PICS: CC.S.A0000 + - label: "TH reads CurrentHue attribute from DUT." + PICS: CC.S.F01 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: @@ -50,8 +50,8 @@ tests: minValue: 0 maxValue: 254 - - label: "Check Saturation attribute value matched before any change" - PICS: CC.S.A0001 + - label: "TH reads CurrentSaturation attribute from DUT" + PICS: CC.S.F01 && CC.S.A0001 command: "readAttribute" attribute: "CurrentSaturation" response: @@ -60,8 +60,8 @@ tests: minValue: 0 maxValue: 254 - - label: "Move To current hue and saturation command" - PICS: CC.S.C06.Rsp + - label: "TH sends MoveToHueAndSaturation command to DUT." + PICS: CC.S.F01 && CC.S.C06.Rsp command: "MoveToHueAndSaturation" arguments: values: @@ -76,18 +76,16 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Wait 10ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 10 + value: 1000 - - label: - "Check current hue attribute value matched the value sent by the last - command" - PICS: CC.S.A0000 + - label: "Over TransitionTime, TH reads CurrentHue attribute from DUT" + PICS: CC.S.F01 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: @@ -97,9 +95,8 @@ tests: maxValue: 254 - label: - "Check current saturation attribute value matched the value sent by - the last command" - PICS: CC.S.A0001 + "Over TransitionTime, TH reads CurrentSaturation attribute from DUT" + PICS: CC.S.F01 && CC.S.A0001 command: "readAttribute" attribute: "CurrentSaturation" response: diff --git a/src/app/tests/suites/certification/Test_TC_CC_4_5.yaml b/src/app/tests/suites/certification/Test_TC_CC_4_5.yaml index ab7cdedc7b71ba..89c03f32a44a0f 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_4_5.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_4_5.yaml @@ -28,38 +28,39 @@ tests: verification: | ./chip-tool colorcontrol move-to-saturation 200 300 0 0 1 1 - [1648101474.910794][2480:2480] CHIP:EM: Handling via exchange: 53143r, Delegate: 0xaaaab8814368 - [1648101474.910970][2480:2480] CHIP:DMG: InvokeRequestMessage = - [1648101474.911016][2480:2480] CHIP:DMG: { - [1648101474.911055][2480:2480] CHIP:DMG: suppressResponse = false, - [1648101474.911099][2480:2480] CHIP:DMG: timedRequest = false, - [1648101474.911140][2480:2480] CHIP:DMG: InvokeRequests = - [1648101474.911191][2480:2480] CHIP:DMG: [ - [1648101474.911232][2480:2480] CHIP:DMG: CommandDataIB = - [1648101474.911287][2480:2480] CHIP:DMG: { - [1648101474.911330][2480:2480] CHIP:DMG: CommandPathIB = - [1648101474.911412][2480:2480] CHIP:DMG: { - [1648101474.911467][2480:2480] CHIP:DMG: EndpointId = 0x1, - [1648101474.911523][2480:2480] CHIP:DMG: ClusterId = 0x300, - [1648101474.911577][2480:2480] CHIP:DMG: CommandId = 0x3, - [1648101474.911628][2480:2480] CHIP:DMG: }, - [1648101474.911681][2480:2480] CHIP:DMG: - [1648101474.911728][2480:2480] CHIP:DMG: CommandData = - [1648101474.911783][2480:2480] CHIP:DMG: { - [1648101474.911837][2480:2480] CHIP:DMG: 0x0 = 200, - [1648101474.911897][2480:2480] CHIP:DMG: 0x1 = 300, - [1648101474.911952][2480:2480] CHIP:DMG: 0x2 = 0, - [1648101474.912012][2480:2480] CHIP:DMG: 0x3 = 0, - [1648101474.912069][2480:2480] CHIP:DMG: }, - [1648101474.912117][2480:2480] CHIP:DMG: }, - [1648101474.912172][2480:2480] CHIP:DMG: - [1648101474.912211][2480:2480] CHIP:DMG: ], - [1648101474.912263][2480:2480] CHIP:DMG: - [1648101474.912302][2480:2480] CHIP:DMG: InteractionModelRevision = 1 - [1648101474.912341][2480:2480] CHIP:DMG: }, - [1648101474.912442][2480:2480] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=o - [1648101474.912507][2480:2480] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0003 - [1648101474.912605][2480:2480] CHIP:DMG: Endpoint 1, Cluster 0x0000_0300 update version to 6143bba0 + Verify in DUT as client side log: + + [1657911500.672151][2977:2977] CHIP:DMG: InvokeRequestMessage = + [1657911500.672204][2977:2977] CHIP:DMG: { + [1657911500.672246][2977:2977] CHIP:DMG: suppressResponse = false, + [1657911500.672295][2977:2977] CHIP:DMG: timedRequest = false, + [1657911500.672357][2977:2977] CHIP:DMG: InvokeRequests = + [1657911500.672417][2977:2977] CHIP:DMG: [ + [1657911500.672465][2977:2977] CHIP:DMG: CommandDataIB = + [1657911500.672534][2977:2977] CHIP:DMG: { + [1657911500.672583][2977:2977] CHIP:DMG: CommandPathIB = + [1657911500.672768][2977:2977] CHIP:DMG: { + [1657911500.672831][2977:2977] CHIP:DMG: EndpointId = 0x1, + [1657911500.672916][2977:2977] CHIP:DMG: ClusterId = 0x300, + [1657911500.672976][2977:2977] CHIP:DMG: CommandId = 0x3, + [1657911500.673044][2977:2977] CHIP:DMG: }, + [1657911500.673103][2977:2977] CHIP:DMG: + [1657911500.673155][2977:2977] CHIP:DMG: CommandFields = + [1657911500.673223][2977:2977] CHIP:DMG: { + [1657911500.673283][2977:2977] CHIP:DMG: 0x0 = 200, + [1657911500.673360][2977:2977] CHIP:DMG: 0x1 = 300, + [1657911500.673427][2977:2977] CHIP:DMG: 0x2 = 0, + [1657911500.673488][2977:2977] CHIP:DMG: 0x3 = 0, + [1657911500.673563][2977:2977] CHIP:DMG: }, + [1657911500.673612][2977:2977] CHIP:DMG: }, + [1657911500.673668][2977:2977] CHIP:DMG: + [1657911500.673727][2977:2977] CHIP:DMG: ], + [1657911500.673785][2977:2977] CHIP:DMG: + [1657911500.673828][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911500.673888][2977:2977] CHIP:DMG: }, + [1657911500.674003][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=o + [1657911500.674082][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911500.674119][2977:2977] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0003 disabled: true - label: @@ -68,116 +69,147 @@ tests: PICS: CC.C.A0001 verification: | ./chip-tool colorcontrol read current-saturation 1 1 - [1646210970.309403][2190:2190] CHIP:IM: Received Read request - [1646210970.309465][2190:2190] CHIP:DMG: ReadRequestMessage = - [1646210970.309495][2190:2190] CHIP:DMG: { - [1646210970.309514][2190:2190] CHIP:DMG: AttributePathIBs = - [1646210970.309541][2190:2190] CHIP:DMG: [ - [1646210970.309567][2190:2190] CHIP:DMG: AttributePathIB = - [1646210970.309599][2190:2190] CHIP:DMG: { - [1646210970.309629][2190:2190] CHIP:DMG: Endpoint = 0x1, - [1646210970.309664][2190:2190] CHIP:DMG: Cluster = 0x300, - [1646210970.309691][2190:2190] CHIP:DMG: Attribute = 0x0000_0001, - [1646210970.309720][2190:2190] CHIP:DMG: } - [1646210970.309750][2190:2190] CHIP:DMG: - [1646210970.309779][2190:2190] CHIP:DMG: ], - [1646210970.309815][2190:2190] CHIP:DMG: - [1646210970.309844][2190:2190] CHIP:DMG: isFabricFiltered = false, - [1646210970.309871][2190:2190] CHIP:DMG: InteractionModelRevision = 1 - [1646210970.309892][2190:2190] CHIP:DMG: }, + + Verify in DUT as client side log: + + [1657911521.672771][2977:2977] CHIP:IM: Received Read request + [1657911521.672849][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657911521.672876][2977:2977] CHIP:DMG: { + [1657911521.672898][2977:2977] CHIP:DMG: AttributePathIBs = + [1657911521.672924][2977:2977] CHIP:DMG: [ + [1657911521.672947][2977:2977] CHIP:DMG: AttributePathIB = + [1657911521.672974][2977:2977] CHIP:DMG: { + [1657911521.673001][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657911521.673038][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657911521.673069][2977:2977] CHIP:DMG: Attribute = 0x0000_0001, + [1657911521.673098][2977:2977] CHIP:DMG: } + [1657911521.673125][2977:2977] CHIP:DMG: + [1657911521.673151][2977:2977] CHIP:DMG: ], + [1657911521.673179][2977:2977] CHIP:DMG: + [1657911521.673204][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657911521.673228][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911521.673251][2977:2977] CHIP:DMG: }, + [1657911521.673327][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657911521.673419][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657911521.673448][2977:2977] CHIP:DMG: Cluster 300, Attribute 1 is dirty + [1657911521.673469][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0001 (expanded=0) + [1657911521.673497][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657911521.673529][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911521.673585][2977:2977] CHIP:DMG: Sending report (payload has 37 bytes)... disabled: true - label: "DUT sends MoveSaturation command to TH" PICS: CC.C.C04.Rsp verification: | ./chip-tool colorcontrol move-saturation 1 10 0 0 1 1 + Verify in DUT as client side log: + - [1646211062.545513][2190:2190] CHIP:DMG: InvokeRequestMessage = - [1646211062.545543][2190:2190] CHIP:DMG: { - [1646211062.545565][2190:2190] CHIP:DMG: suppressResponse = false, - [1646211062.545596][2190:2190] CHIP:DMG: timedRequest = false, - [1646211062.545625][2190:2190] CHIP:DMG: InvokeRequests = - [1646211062.545657][2190:2190] CHIP:DMG: [ - [1646211062.545681][2190:2190] CHIP:DMG: CommandDataIB = - [1646211062.545711][2190:2190] CHIP:DMG: { - [1646211062.545737][2190:2190] CHIP:DMG: CommandPathIB = - [1646211062.545771][2190:2190] CHIP:DMG: { - [1646211062.545806][2190:2190] CHIP:DMG: EndpointId = 0x1, - [1646211062.545840][2190:2190] CHIP:DMG: ClusterId = 0x300, - [1646211062.545872][2190:2190] CHIP:DMG: CommandId = 0x4, - [1646211062.545902][2190:2190] CHIP:DMG: }, - [1646211062.545933][2190:2190] CHIP:DMG: - [1646211062.545960][2190:2190] CHIP:DMG: CommandData = - [1646211062.545991][2190:2190] CHIP:DMG: { - [1646211062.546025][2190:2190] CHIP:DMG: 0x0 = 1, - [1646211062.546060][2190:2190] CHIP:DMG: 0x1 = 10, - [1646211062.546095][2190:2190] CHIP:DMG: 0x2 = 0, - [1646211062.546126][2190:2190] CHIP:DMG: 0x3 = 0, - [1646211062.546158][2190:2190] CHIP:DMG: }, - [1646211062.546185][2190:2190] CHIP:DMG: }, - [1646211062.546218][2190:2190] CHIP:DMG: - [1646211062.546243][2190:2190] CHIP:DMG: ], - [1646211062.546274][2190:2190] CHIP:DMG: - [1646211062.546297][2190:2190] CHIP:DMG: InteractionModelRevision = 1 - [1646211062.546320][2190:2190] CHIP:DMG: }, + [1657911543.960120][2977:2977] CHIP:DMG: InvokeRequestMessage = + [1657911543.960161][2977:2977] CHIP:DMG: { + [1657911543.960184][2977:2977] CHIP:DMG: suppressResponse = false, + [1657911543.960211][2977:2977] CHIP:DMG: timedRequest = false, + [1657911543.960236][2977:2977] CHIP:DMG: InvokeRequests = + [1657911543.960276][2977:2977] CHIP:DMG: [ + [1657911543.960300][2977:2977] CHIP:DMG: CommandDataIB = + [1657911543.960363][2977:2977] CHIP:DMG: { + [1657911543.960393][2977:2977] CHIP:DMG: CommandPathIB = + [1657911543.960422][2977:2977] CHIP:DMG: { + [1657911543.960452][2977:2977] CHIP:DMG: EndpointId = 0x1, + [1657911543.960483][2977:2977] CHIP:DMG: ClusterId = 0x300, + [1657911543.960513][2977:2977] CHIP:DMG: CommandId = 0x4, + [1657911543.960541][2977:2977] CHIP:DMG: }, + [1657911543.960571][2977:2977] CHIP:DMG: + [1657911543.960598][2977:2977] CHIP:DMG: CommandFields = + [1657911543.960626][2977:2977] CHIP:DMG: { + [1657911543.960682][2977:2977] CHIP:DMG: 0x0 = 1, + [1657911543.960719][2977:2977] CHIP:DMG: 0x1 = 10, + [1657911543.960749][2977:2977] CHIP:DMG: 0x2 = 0, + [1657911543.960779][2977:2977] CHIP:DMG: 0x3 = 0, + [1657911543.960809][2977:2977] CHIP:DMG: }, + [1657911543.960836][2977:2977] CHIP:DMG: }, + [1657911543.960866][2977:2977] CHIP:DMG: + [1657911543.960890][2977:2977] CHIP:DMG: ], + [1657911543.960921][2977:2977] CHIP:DMG: + [1657911543.960945][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911543.960968][2977:2977] CHIP:DMG: }, + [1657911543.961080][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=o + [1657911543.961124][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911543.961152][2977:2977] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0004 disabled: true - label: "DUT reads CurrentSaturation attribute from TH several Times." PICS: CC.C.A0001 verification: | ./chip-tool colorcontrol read current-saturation 1 1 - [1646210970.309403][2190:2190] CHIP:IM: Received Read request - [1646210970.309465][2190:2190] CHIP:DMG: ReadRequestMessage = - [1646210970.309495][2190:2190] CHIP:DMG: { - [1646210970.309514][2190:2190] CHIP:DMG: AttributePathIBs = - [1646210970.309541][2190:2190] CHIP:DMG: [ - [1646210970.309567][2190:2190] CHIP:DMG: AttributePathIB = - [1646210970.309599][2190:2190] CHIP:DMG: { - [1646210970.309629][2190:2190] CHIP:DMG: Endpoint = 0x1, - [1646210970.309664][2190:2190] CHIP:DMG: Cluster = 0x300, - [1646210970.309691][2190:2190] CHIP:DMG: Attribute = 0x0000_0001, - [1646210970.309720][2190:2190] CHIP:DMG: } - [1646210970.309750][2190:2190] CHIP:DMG: - [1646210970.309779][2190:2190] CHIP:DMG: ], - [1646210970.309815][2190:2190] CHIP:DMG: - [1646210970.309844][2190:2190] CHIP:DMG: isFabricFiltered = false, - [1646210970.309871][2190:2190] CHIP:DMG: InteractionModelRevision = 1 - [1646210970.309892][2190:2190] CHIP:DMG: }, + + Verify in DUT as client side log: + + [1657911563.694872][2977:2977] CHIP:IM: Received Read request + [1657911563.694955][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657911563.694985][2977:2977] CHIP:DMG: { + [1657911563.695007][2977:2977] CHIP:DMG: AttributePathIBs = + [1657911563.695033][2977:2977] CHIP:DMG: [ + [1657911563.695057][2977:2977] CHIP:DMG: AttributePathIB = + [1657911563.695091][2977:2977] CHIP:DMG: { + [1657911563.695119][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657911563.695151][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657911563.695183][2977:2977] CHIP:DMG: Attribute = 0x0000_0001, + [1657911563.695213][2977:2977] CHIP:DMG: } + [1657911563.695241][2977:2977] CHIP:DMG: + [1657911563.695270][2977:2977] CHIP:DMG: ], + [1657911563.695298][2977:2977] CHIP:DMG: + [1657911563.695325][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657911563.695350][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911563.695373][2977:2977] CHIP:DMG: }, + [1657911563.695452][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657911563.695560][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657911563.695595][2977:2977] CHIP:DMG: Cluster 300, Attribute 1 is dirty + [1657911563.695617][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0001 (expanded=0) + [1657911563.695646][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657911563.695681][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911563.695741][2977:2977] CHIP:DMG: Sending report (payload has 37 bytes)... disabled: true - label: "DUT sends StepSaturation command to TH" PICS: CC.C.C05.Rsp verification: | ./chip-tool colorcontrol step-saturation 1 10 200 0 0 1 1 - [1646211149.169696][2190:2190] CHIP:DMG: InvokeRequestMessage = - [1646211149.169731][2190:2190] CHIP:DMG: { - [1646211149.169757][2190:2190] CHIP:DMG: suppressResponse = false, - [1646211149.169788][2190:2190] CHIP:DMG: timedRequest = false, - [1646211149.169816][2190:2190] CHIP:DMG: InvokeRequests = - [1646211149.169852][2190:2190] CHIP:DMG: [ - [1646211149.169879][2190:2190] CHIP:DMG: CommandDataIB = - [1646211149.169914][2190:2190] CHIP:DMG: { - [1646211149.169943][2190:2190] CHIP:DMG: CommandPathIB = - [1646211149.169979][2190:2190] CHIP:DMG: { - [1646211149.170014][2190:2190] CHIP:DMG: EndpointId = 0x1, - [1646211149.170055][2190:2190] CHIP:DMG: ClusterId = 0x300, - [1646211149.170095][2190:2190] CHIP:DMG: CommandId = 0x5, - [1646211149.170129][2190:2190] CHIP:DMG: }, - [1646211149.170165][2190:2190] CHIP:DMG: - [1646211149.170196][2190:2190] CHIP:DMG: CommandData = - [1646211149.170234][2190:2190] CHIP:DMG: { - [1646211149.170269][2190:2190] CHIP:DMG: 0x0 = 1, - [1646211149.170310][2190:2190] CHIP:DMG: 0x1 = 10, - [1646211149.170344][2190:2190] CHIP:DMG: 0x2 = 200, - [1646211149.170379][2190:2190] CHIP:DMG: 0x3 = 0, - [1646211149.170409][2190:2190] CHIP:DMG: 0x4 = 0, - [1646211149.170451][2190:2190] CHIP:DMG: }, - [1646211149.170481][2190:2190] CHIP:DMG: }, - [1646211149.170516][2190:2190] CHIP:DMG: - [1646211149.170542][2190:2190] CHIP:DMG: ], - [1646211149.170576][2190:2190] CHIP:DMG: - [1646211149.170603][2190:2190] CHIP:DMG: InteractionModelRevision = 1 - [1646211149.170629][2190:2190] CHIP:DMG: }, + + Verify in DUT as client side log: + + [1657911581.077515][2977:2977] CHIP:DMG: InvokeRequestMessage = + [1657911581.077553][2977:2977] CHIP:DMG: { + [1657911581.077584][2977:2977] CHIP:DMG: suppressResponse = false, + [1657911581.077621][2977:2977] CHIP:DMG: timedRequest = false, + [1657911581.077654][2977:2977] CHIP:DMG: InvokeRequests = + [1657911581.077698][2977:2977] CHIP:DMG: [ + [1657911581.077731][2977:2977] CHIP:DMG: CommandDataIB = + [1657911581.077768][2977:2977] CHIP:DMG: { + [1657911581.077802][2977:2977] CHIP:DMG: CommandPathIB = + [1657911581.077845][2977:2977] CHIP:DMG: { + [1657911581.077888][2977:2977] CHIP:DMG: EndpointId = 0x1, + [1657911581.077932][2977:2977] CHIP:DMG: ClusterId = 0x300, + [1657911581.077976][2977:2977] CHIP:DMG: CommandId = 0x5, + [1657911581.078018][2977:2977] CHIP:DMG: }, + [1657911581.078061][2977:2977] CHIP:DMG: + [1657911581.078098][2977:2977] CHIP:DMG: CommandFields = + [1657911581.078140][2977:2977] CHIP:DMG: { + [1657911581.078182][2977:2977] CHIP:DMG: 0x0 = 1, + [1657911581.078227][2977:2977] CHIP:DMG: 0x1 = 10, + [1657911581.078272][2977:2977] CHIP:DMG: 0x2 = 200, + [1657911581.078317][2977:2977] CHIP:DMG: 0x3 = 0, + [1657911581.078361][2977:2977] CHIP:DMG: 0x4 = 0, + [1657911581.078408][2977:2977] CHIP:DMG: }, + [1657911581.078446][2977:2977] CHIP:DMG: }, + [1657911581.078487][2977:2977] CHIP:DMG: + [1657911581.078519][2977:2977] CHIP:DMG: ], + [1657911581.078560][2977:2977] CHIP:DMG: + [1657911581.078592][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911581.078623][2977:2977] CHIP:DMG: }, + [1657911581.078710][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=o + [1657911581.078757][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911581.078794][2977:2977] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0005 disabled: true - label: @@ -185,23 +217,32 @@ tests: PICS: CC.C.A0001 verification: | ./chip-tool colorcontrol read current-saturation 1 1 - [1646210970.309403][2190:2190] CHIP:IM: Received Read request - [1646210970.309465][2190:2190] CHIP:DMG: ReadRequestMessage = - [1646210970.309495][2190:2190] CHIP:DMG: { - [1646210970.309514][2190:2190] CHIP:DMG: AttributePathIBs = - [1646210970.309541][2190:2190] CHIP:DMG: [ - [1646210970.309567][2190:2190] CHIP:DMG: AttributePathIB = - [1646210970.309599][2190:2190] CHIP:DMG: { - [1646210970.309629][2190:2190] CHIP:DMG: Endpoint = 0x1, - [1646210970.309664][2190:2190] CHIP:DMG: Cluster = 0x300, - [1646210970.309691][2190:2190] CHIP:DMG: Attribute = 0x0000_0001, - [1646210970.309720][2190:2190] CHIP:DMG: } - [1646210970.309750][2190:2190] CHIP:DMG: - [1646210970.309779][2190:2190] CHIP:DMG: ], - [1646210970.309815][2190:2190] CHIP:DMG: - [1646210970.309844][2190:2190] CHIP:DMG: isFabricFiltered = false, - [1646210970.309871][2190:2190] CHIP:DMG: InteractionModelRevision = 1 - [1646210970.309892][2190:2190] CHIP:DMG: }, + + Verify in DUT as client side log: + [1657911602.223413][2977:2977] CHIP:IM: Received Read request + [1657911602.223554][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657911602.223609][2977:2977] CHIP:DMG: { + [1657911602.223655][2977:2977] CHIP:DMG: AttributePathIBs = + [1657911602.223708][2977:2977] CHIP:DMG: [ + [1657911602.223758][2977:2977] CHIP:DMG: AttributePathIB = + [1657911602.223828][2977:2977] CHIP:DMG: { + [1657911602.223884][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657911602.223949][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657911602.224000][2977:2977] CHIP:DMG: Attribute = 0x0000_0001, + [1657911602.224027][2977:2977] CHIP:DMG: } + [1657911602.224078][2977:2977] CHIP:DMG: + [1657911602.224162][2977:2977] CHIP:DMG: ], + [1657911602.224193][2977:2977] CHIP:DMG: + [1657911602.224219][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657911602.224244][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911602.224267][2977:2977] CHIP:DMG: }, + [1657911602.224346][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657911602.224442][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657911602.224471][2977:2977] CHIP:DMG: Cluster 300, Attribute 1 is dirty + [1657911602.224492][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0001 (expanded=0) + [1657911602.224520][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657911602.224553][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911602.224608][2977:2977] CHIP:DMG: Sending report (payload has 37 bytes)... disabled: true - label: "DUT sends MoveToHueAndSaturation command to TH." @@ -209,20 +250,72 @@ tests: verification: | ./chip-tool colorcontrol move-to-hue-and-saturation 100 200 200 0 0 1 1 - [1649664783.987760][8866:8871] CHIP:DMG: StatusIB = - [1649664783.987823][8866:8871] CHIP:DMG: { - [1649664783.987888][8866:8871] CHIP:DMG: status = 0x00 (SUCCESS), - [1649664783.987943][8866:8871] CHIP:DMG: }, + Verify in DUT as client side log: + + [1657911631.586168][2977:2977] CHIP:DMG: InvokeRequestMessage = + [1657911631.586198][2977:2977] CHIP:DMG: { + [1657911631.586222][2977:2977] CHIP:DMG: suppressResponse = false, + [1657911631.586252][2977:2977] CHIP:DMG: timedRequest = false, + [1657911631.586278][2977:2977] CHIP:DMG: InvokeRequests = + [1657911631.586312][2977:2977] CHIP:DMG: [ + [1657911631.586338][2977:2977] CHIP:DMG: CommandDataIB = + [1657911631.586370][2977:2977] CHIP:DMG: { + [1657911631.586399][2977:2977] CHIP:DMG: CommandPathIB = + [1657911631.586433][2977:2977] CHIP:DMG: { + [1657911631.586466][2977:2977] CHIP:DMG: EndpointId = 0x1, + [1657911631.586502][2977:2977] CHIP:DMG: ClusterId = 0x300, + [1657911631.586539][2977:2977] CHIP:DMG: CommandId = 0x6, + [1657911631.586570][2977:2977] CHIP:DMG: }, + [1657911631.586605][2977:2977] CHIP:DMG: + [1657911631.586634][2977:2977] CHIP:DMG: CommandFields = + [1657911631.586667][2977:2977] CHIP:DMG: { + [1657911631.586701][2977:2977] CHIP:DMG: 0x0 = 100, + [1657911631.586736][2977:2977] CHIP:DMG: 0x1 = 200, + [1657911631.586775][2977:2977] CHIP:DMG: 0x2 = 200, + [1657911631.586809][2977:2977] CHIP:DMG: 0x3 = 0, + [1657911631.586844][2977:2977] CHIP:DMG: 0x4 = 0, + [1657911631.586874][2977:2977] CHIP:DMG: }, + [1657911631.586903][2977:2977] CHIP:DMG: }, + [1657911631.586938][2977:2977] CHIP:DMG: + [1657911631.586962][2977:2977] CHIP:DMG: ], + [1657911631.586995][2977:2977] CHIP:DMG: + [1657911631.587021][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911631.587045][2977:2977] CHIP:DMG: }, + [1657911631.587119][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=o + [1657911631.587158][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911631.587186][2977:2977] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0006 disabled: true - label: "Over TransitionTime, DUT reads CurrentHue attribute from TH." PICS: CC.C.A0000 verification: | ./chip-tool colorcontrol read current-hue 1 1 + Verify in DUT as client side log: - [1649664795.474974][8872:8877] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0000 DataVersion: 4087328778 - [1649664795.475051][8872:8877] CHIP:TOO: CurrentHue: 29 - [1649664795.475150][8872:8877] CHIP:EM: Sending Standalone Ack for MessageCounter:4578193 on exchange 26597i + [1657911655.180421][2977:2977] CHIP:IM: Received Read request + [1657911655.180507][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657911655.180535][2977:2977] CHIP:DMG: { + [1657911655.180568][2977:2977] CHIP:DMG: AttributePathIBs = + [1657911655.180595][2977:2977] CHIP:DMG: [ + [1657911655.180619][2977:2977] CHIP:DMG: AttributePathIB = + [1657911655.180646][2977:2977] CHIP:DMG: { + [1657911655.180687][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657911655.180726][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657911655.180762][2977:2977] CHIP:DMG: Attribute = 0x0000_0000, + [1657911655.180792][2977:2977] CHIP:DMG: } + [1657911655.180830][2977:2977] CHIP:DMG: + [1657911655.180855][2977:2977] CHIP:DMG: ], + [1657911655.180885][2977:2977] CHIP:DMG: + [1657911655.180924][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657911655.180950][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911655.180973][2977:2977] CHIP:DMG: }, + [1657911655.181063][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657911655.181190][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657911655.181223][2977:2977] CHIP:DMG: Cluster 300, Attribute 0 is dirty + [1657911655.181255][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0000 (expanded=0) + [1657911655.181284][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657911655.181318][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911655.181390][2977:2977] CHIP:DMG: Sending report (payload has 37 bytes)... disabled: true - label: @@ -230,53 +323,68 @@ tests: PICS: CC.C.A0001 verification: | ./chip-tool colorcontrol read current-saturation 1 1 - [1646210970.309403][2190:2190] CHIP:IM: Received Read request - [1646210970.309465][2190:2190] CHIP:DMG: ReadRequestMessage = - [1646210970.309495][2190:2190] CHIP:DMG: { - [1646210970.309514][2190:2190] CHIP:DMG: AttributePathIBs = - [1646210970.309541][2190:2190] CHIP:DMG: [ - [1646210970.309567][2190:2190] CHIP:DMG: AttributePathIB = - [1646210970.309599][2190:2190] CHIP:DMG: { - [1646210970.309629][2190:2190] CHIP:DMG: Endpoint = 0x1, - [1646210970.309664][2190:2190] CHIP:DMG: Cluster = 0x300, - [1646210970.309691][2190:2190] CHIP:DMG: Attribute = 0x0000_0001, - [1646210970.309720][2190:2190] CHIP:DMG: } - [1646210970.309750][2190:2190] CHIP:DMG: - [1646210970.309779][2190:2190] CHIP:DMG: ], - [1646210970.309815][2190:2190] CHIP:DMG: - [1646210970.309844][2190:2190] CHIP:DMG: isFabricFiltered = false, - [1646210970.309871][2190:2190] CHIP:DMG: InteractionModelRevision = 1 - [1646210970.309892][2190:2190] CHIP:DMG: }, + + Verify in DUT as client side log: + + [1657911674.594218][2977:2977] CHIP:IM: Received Read request + [1657911674.594301][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657911674.594329][2977:2977] CHIP:DMG: { + [1657911674.594352][2977:2977] CHIP:DMG: AttributePathIBs = + [1657911674.594379][2977:2977] CHIP:DMG: [ + [1657911674.594403][2977:2977] CHIP:DMG: AttributePathIB = + [1657911674.594460][2977:2977] CHIP:DMG: { + [1657911674.594491][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657911674.594529][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657911674.594562][2977:2977] CHIP:DMG: Attribute = 0x0000_0001, + [1657911674.594593][2977:2977] CHIP:DMG: } + [1657911674.594626][2977:2977] CHIP:DMG: + [1657911674.594653][2977:2977] CHIP:DMG: ], + [1657911674.594682][2977:2977] CHIP:DMG: + [1657911674.594710][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657911674.594736][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911674.594760][2977:2977] CHIP:DMG: }, + [1657911674.594840][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657911674.594955][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657911674.594988][2977:2977] CHIP:DMG: Cluster 300, Attribute 1 is dirty + [1657911674.595010][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0001 (expanded=0) + [1657911674.595039][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657911674.595073][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911674.595133][2977:2977] CHIP:DMG: Sending report (payload has 37 bytes)... disabled: true - label: "DUT sends StopMoveStep command to TH." PICS: CC.C.C47.Rsp verification: | ./chip-tool colorcontrol stop-move-step 0 0 1 1 - [1646211221.659999][2190:2190] CHIP:DMG: InvokeRequestMessage = - [1646211221.660038][2190:2190] CHIP:DMG: { - [1646211221.660076][2190:2190] CHIP:DMG: suppressResponse = false, - [1646211221.660110][2190:2190] CHIP:DMG: timedRequest = false, - [1646211221.660138][2190:2190] CHIP:DMG: InvokeRequests = - [1646211221.660174][2190:2190] CHIP:DMG: [ - [1646211221.660199][2190:2190] CHIP:DMG: CommandDataIB = - [1646211221.660234][2190:2190] CHIP:DMG: { - [1646211221.660266][2190:2190] CHIP:DMG: CommandPathIB = - [1646211221.660301][2190:2190] CHIP:DMG: { - [1646211221.660342][2190:2190] CHIP:DMG: EndpointId = 0x1, - [1646211221.660381][2190:2190] CHIP:DMG: ClusterId = 0x300, - [1646211221.660420][2190:2190] CHIP:DMG: CommandId = 0x47, - [1646211221.660460][2190:2190] CHIP:DMG: }, - [1646211221.660502][2190:2190] CHIP:DMG: - [1646211221.660535][2190:2190] CHIP:DMG: CommandData = - [1646211221.660572][2190:2190] CHIP:DMG: { - [1646211221.660612][2190:2190] CHIP:DMG: 0x0 = 0, - [1646211221.660652][2190:2190] CHIP:DMG: 0x1 = 0, - [1646211221.660691][2190:2190] CHIP:DMG: }, - [1646211221.660724][2190:2190] CHIP:DMG: }, - [1646211221.660759][2190:2190] CHIP:DMG: - [1646211221.660788][2190:2190] CHIP:DMG: ], - [1646211221.660823][2190:2190] CHIP:DMG: - [1646211221.660849][2190:2190] CHIP:DMG: InteractionModelRevision = 1 - [1646211221.660877][2190:2190] CHIP:DMG: }, + + Verify in DUT as client side log: + [1657911698.270231][2977:2977] CHIP:DMG: InvokeRequestMessage = + [1657911698.270280][2977:2977] CHIP:DMG: { + [1657911698.270321][2977:2977] CHIP:DMG: suppressResponse = false, + [1657911698.270370][2977:2977] CHIP:DMG: timedRequest = false, + [1657911698.270414][2977:2977] CHIP:DMG: InvokeRequests = + [1657911698.270470][2977:2977] CHIP:DMG: [ + [1657911698.270554][2977:2977] CHIP:DMG: CommandDataIB = + [1657911698.270583][2977:2977] CHIP:DMG: { + [1657911698.270607][2977:2977] CHIP:DMG: CommandPathIB = + [1657911698.270638][2977:2977] CHIP:DMG: { + [1657911698.270732][2977:2977] CHIP:DMG: EndpointId = 0x1, + [1657911698.270765][2977:2977] CHIP:DMG: ClusterId = 0x300, + [1657911698.270797][2977:2977] CHIP:DMG: CommandId = 0x47, + [1657911698.270852][2977:2977] CHIP:DMG: }, + [1657911698.270888][2977:2977] CHIP:DMG: + [1657911698.270916][2977:2977] CHIP:DMG: CommandFields = + [1657911698.270947][2977:2977] CHIP:DMG: { + [1657911698.270979][2977:2977] CHIP:DMG: 0x0 = 0, + [1657911698.271012][2977:2977] CHIP:DMG: 0x1 = 0, + [1657911698.271044][2977:2977] CHIP:DMG: }, + [1657911698.271071][2977:2977] CHIP:DMG: }, + [1657911698.271103][2977:2977] CHIP:DMG: + [1657911698.271126][2977:2977] CHIP:DMG: ], + [1657911698.271156][2977:2977] CHIP:DMG: + [1657911698.271180][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911698.271203][2977:2977] CHIP:DMG: }, + [1657911698.271270][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=o + [1657911698.271337][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911698.271365][2977:2977] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0047 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CC_5_1.yaml b/src/app/tests/suites/certification/Test_TC_CC_5_1.yaml index 5860464466d61a..512fc6ac2965ac 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_5_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_5_1.yaml @@ -39,8 +39,8 @@ tests: response: value: 1 - - label: "Check current x attribute value matched before any change" - PICS: CC.S.A0003 + - label: "TH reads CurrentX attribute from DUT" + PICS: CC.S.F03 && CC.S.A0003 command: "readAttribute" attribute: "CurrentX" response: @@ -49,8 +49,8 @@ tests: minValue: 0 maxValue: 65279 - - label: "Check current y attribute value matched before any change" - PICS: CC.S.A0004 + - label: "TH reads CurrentY attribute from DUT" + PICS: CC.S.F03 && CC.S.A0004 command: "readAttribute" attribute: "CurrentY" response: @@ -59,8 +59,8 @@ tests: minValue: 0 maxValue: 65279 - - label: "Move to Color command" - PICS: CC.S.C07.Rsp + - label: "TH sends MoveToColor command to DUT" + PICS: CC.S.F03 && CC.S.C07.Rsp command: "MoveToColor" arguments: values: @@ -69,39 +69,37 @@ tests: - name: "colorY" value: 300 - name: "TransitionTime" - value: 20 + value: 10 - name: "OptionsMask" value: 0 - name: "OptionsOverride" value: 0 - - label: "Wait 20ms" + - label: "Wait 1500ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 20 + value: 1500 - - label: - "Check current x attribute value matched the value sent by the last - command" - PICS: CC.S.A0003 + - label: "Over TransitionTime, TH reads CurrentX attribute from DUT" + PICS: CC.S.F03 && CC.S.A0003 command: "readAttribute" attribute: "CurrentX" response: + value: 200 constraints: type: uint16 minValue: 0 maxValue: 65279 - - label: - "Check current y attribute value matched the value sent by the last - command" - PICS: CC.S.A0004 + - label: "Over TransitionTime, TH reads CurrentY attribute from DUT" + PICS: CC.S.F03 && CC.S.A0004 command: "readAttribute" attribute: "CurrentY" response: + value: 300 constraints: type: uint16 minValue: 0 diff --git a/src/app/tests/suites/certification/Test_TC_CC_5_2.yaml b/src/app/tests/suites/certification/Test_TC_CC_5_2.yaml index f49b03ecf7ffd4..fb65dab348c3ec 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_5_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_5_2.yaml @@ -39,9 +39,9 @@ tests: response: value: 1 - - label: "Check current x attribute value matched before any change" + - label: "TH reads CurrentX attribute from DUT" command: "readAttribute" - PICS: CC.S.A0003 + PICS: CC.S.F03 && CC.S.A0003 attribute: "CurrentX" response: constraints: @@ -49,9 +49,9 @@ tests: minValue: 0 maxValue: 65279 - - label: "Check current y attribute value matched before any change" + - label: "TH reads CurrentY attribute from DUT" command: "readAttribute" - PICS: CC.S.A0004 + PICS: CC.S.F03 && CC.S.A0004 attribute: "CurrentY" response: constraints: @@ -59,9 +59,9 @@ tests: minValue: 0 maxValue: 65279 - - label: "Move Color command" + - label: "TH sends MoveColor command to DUT" command: "MoveColor" - PICS: CC.S.C08.Rsp + PICS: CC.S.F03 && CC.S.C08.Rsp arguments: values: - name: "rateX" @@ -73,18 +73,16 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Wait 150ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 150 + value: 1000 - - label: - "Check current x attribute value matched the value sent by the last - command" - PICS: CC.S.A0003 + - label: "TH reads CurrentX attribute from DUT" + PICS: CC.S.F03 && CC.S.A0003 command: "readAttribute" attribute: "CurrentX" response: @@ -93,10 +91,8 @@ tests: minValue: 0 maxValue: 65279 - - label: - "Check current y attribute value matched the value sent by the last - command" - PICS: CC.S.A0004 + - label: "TH reads CurrentY attribute from DUT" + PICS: CC.S.F03 && CC.S.A0004 command: "readAttribute" attribute: "CurrentY" response: @@ -105,8 +101,8 @@ tests: minValue: 0 maxValue: 65279 - - label: "Stop Move Step command" - PICS: CC.S.C47.Rsp + - label: "TH sends StopMoveStep command to DUT" + PICS: CC.S.F03 && CC.S.C47.Rsp command: "StopMoveStep" arguments: values: @@ -115,10 +111,8 @@ tests: - name: "OptionsOverride" value: 0 - - label: - "Check current x attribute value matched the value sent by the last - command" - PICS: CC.S.A0003 + - label: "TH reads CurrentX attribute from DUT" + PICS: CC.S.F03 && CC.S.A0003 command: "readAttribute" attribute: "CurrentX" response: @@ -127,10 +121,8 @@ tests: minValue: 0 maxValue: 65279 - - label: - "Check current y attribute value matched the value sent by the last - command" - PICS: CC.S.A0004 + - label: "TH reads CurrentY attribute from DUT" + PICS: CC.S.F03 && CC.S.A0004 command: "readAttribute" attribute: "CurrentY" response: diff --git a/src/app/tests/suites/certification/Test_TC_CC_5_3.yaml b/src/app/tests/suites/certification/Test_TC_CC_5_3.yaml index 0a7b2fe7027b09..0af6ac0f279197 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_5_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_5_3.yaml @@ -39,9 +39,9 @@ tests: response: value: 1 - - label: "Check current x attribute value matched before any change" + - label: "TH reads CurrentX attribute from DUT" command: "readAttribute" - PICS: CC.S.A0003 + PICS: CC.S.F03 && CC.S.A0003 attribute: "CurrentX" response: constraints: @@ -49,9 +49,9 @@ tests: minValue: 0 maxValue: 65279 - - label: "Check current y attribute value matched before any change" + - label: "TH reads CurrentY attribute from DUT" command: "readAttribute" - PICS: CC.S.A0004 + PICS: CC.S.F03 && CC.S.A0004 attribute: "CurrentY" response: constraints: @@ -59,9 +59,9 @@ tests: minValue: 0 maxValue: 65279 - - label: "Step Color command" + - label: "TH sends StepColor command to DUT" command: "StepColor" - PICS: CC.S.C09.Rsp + PICS: CC.S.F03 && CC.S.C09.Rsp arguments: values: - name: "stepX" @@ -69,24 +69,22 @@ tests: - name: "stepY" value: 20 - name: "TransitionTime" - value: 50 + value: 10 - name: "OptionsMask" value: 0 - name: "OptionsOverride" value: 0 - - label: "Wait 50ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 50 + value: 1000 - - label: - "Check current x attribute value matched the value sent by the last - command" - PICS: CC.S.A0003 + - label: "Over TransitionTime, TH reads CurrentX attribute from DUT" + PICS: CC.S.F03 && CC.S.A0003 command: "readAttribute" attribute: "CurrentX" response: @@ -95,10 +93,8 @@ tests: minValue: 0 maxValue: 65279 - - label: - "Check current y attribute value matched the value sent by the last - command" - PICS: CC.S.A0004 + - label: "Over TransitionTime, TH reads CurrentY attribute from DUT" + PICS: CC.S.F03 && CC.S.A0004 command: "readAttribute" attribute: "CurrentY" response: diff --git a/src/app/tests/suites/certification/Test_TC_CC_5_4.yaml b/src/app/tests/suites/certification/Test_TC_CC_5_4.yaml index 7fb9f03d87129d..d56918da179840 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_5_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_5_4.yaml @@ -27,39 +27,39 @@ tests: verification: | ./chip-tool colorcontrol move-to-color 400 500 300 0 0 1 1 - verify on Reference app receives the right response for the data sent in the above commands - - [1657099701.285127][4162:4167] CHIP:DMG: InvokeResponseMessage = - [1657099701.285157][4162:4167] CHIP:DMG: { - [1657099701.285185][4162:4167] CHIP:DMG: suppressResponse = false, - [1657099701.285213][4162:4167] CHIP:DMG: InvokeResponseIBs = - [1657099701.285249][4162:4167] CHIP:DMG: [ - [1657099701.285277][4162:4167] CHIP:DMG: InvokeResponseIB = - [1657099701.285314][4162:4167] CHIP:DMG: { - [1657099701.285343][4162:4167] CHIP:DMG: CommandStatusIB = - [1657099701.285383][4162:4167] CHIP:DMG: { - [1657099701.285418][4162:4167] CHIP:DMG: CommandPathIB = - [1657099701.285456][4162:4167] CHIP:DMG: { - [1657099701.285499][4162:4167] CHIP:DMG: EndpointId = 0x1, - [1657099701.285540][4162:4167] CHIP:DMG: ClusterId = 0x300, - [1657099701.285579][4162:4167] CHIP:DMG: CommandId = 0x7, - [1657099701.285617][4162:4167] CHIP:DMG: }, - [1657099701.285659][4162:4167] CHIP:DMG: - [1657099701.285693][4162:4167] CHIP:DMG: StatusIB = - [1657099701.285731][4162:4167] CHIP:DMG: { - [1657099701.285769][4162:4167] CHIP:DMG: status = 0x00 (SUCCESS), - [1657099701.285811][4162:4167] CHIP:DMG: }, - [1657099701.285848][4162:4167] CHIP:DMG: - [1657099701.285880][4162:4167] CHIP:DMG: }, - [1657099701.285922][4162:4167] CHIP:DMG: - [1657099701.285952][4162:4167] CHIP:DMG: }, - [1657099701.285987][4162:4167] CHIP:DMG: - [1657099701.286013][4162:4167] CHIP:DMG: ], - [1657099701.286047][4162:4167] CHIP:DMG: - [1657099701.286074][4162:4167] CHIP:DMG: InteractionModelRevision = 1 - [1657099701.286100][4162:4167] CHIP:DMG: }, - [1657099701.286166][4162:4167] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0007 Status=0x0 - [1657099701.286211][4162:4167] CHIP:DMG: ICR moving to [AwaitingDe] + Verify in DUT as client side log: + [1657911753.687856][2977:2977] CHIP:DMG: InvokeRequestMessage = + [1657911753.687913][2977:2977] CHIP:DMG: { + [1657911753.687961][2977:2977] CHIP:DMG: suppressResponse = false, + [1657911753.688017][2977:2977] CHIP:DMG: timedRequest = false, + [1657911753.688115][2977:2977] CHIP:DMG: InvokeRequests = + [1657911753.688185][2977:2977] CHIP:DMG: [ + [1657911753.688236][2977:2977] CHIP:DMG: CommandDataIB = + [1657911753.688294][2977:2977] CHIP:DMG: { + [1657911753.688347][2977:2977] CHIP:DMG: CommandPathIB = + [1657911753.688414][2977:2977] CHIP:DMG: { + [1657911753.688479][2977:2977] CHIP:DMG: EndpointId = 0x1, + [1657911753.688544][2977:2977] CHIP:DMG: ClusterId = 0x300, + [1657911753.688610][2977:2977] CHIP:DMG: CommandId = 0x7, + [1657911753.688673][2977:2977] CHIP:DMG: }, + [1657911753.688740][2977:2977] CHIP:DMG: + [1657911753.688800][2977:2977] CHIP:DMG: CommandFields = + [1657911753.688858][2977:2977] CHIP:DMG: { + [1657911753.688925][2977:2977] CHIP:DMG: 0x0 = 400, + [1657911753.688995][2977:2977] CHIP:DMG: 0x1 = 500, + [1657911753.689048][2977:2977] CHIP:DMG: 0x2 = 300, + [1657911753.689080][2977:2977] CHIP:DMG: 0x3 = 0, + [1657911753.689113][2977:2977] CHIP:DMG: 0x4 = 0, + [1657911753.689198][2977:2977] CHIP:DMG: }, + [1657911753.689228][2977:2977] CHIP:DMG: }, + [1657911753.689262][2977:2977] CHIP:DMG: + [1657911753.689285][2977:2977] CHIP:DMG: ], + [1657911753.689316][2977:2977] CHIP:DMG: + [1657911753.689339][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911753.689362][2977:2977] CHIP:DMG: }, + [1657911753.689432][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=o + [1657911753.689469][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911753.689496][2977:2977] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0007 disabled: true - label: "Over TransitionTime, DUT reads CurrentX attribute from TH." @@ -67,10 +67,31 @@ tests: verification: | ./chip-tool colorcontrol read current-x 1 1 - verify on Reference app receives the right response for the data sent in the above commands - - [1657099727.553289][4170:4175] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0003 DataVersion: 1806818891 - [1657099727.553359][4170:4175] CHIP:TOO: CurrentX: 3590 + Verify in DUT as client side log: + [1657911771.965429][2977:2977] CHIP:IM: Received Read request + [1657911771.965509][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657911771.965536][2977:2977] CHIP:DMG: { + [1657911771.965557][2977:2977] CHIP:DMG: AttributePathIBs = + [1657911771.965583][2977:2977] CHIP:DMG: [ + [1657911771.965606][2977:2977] CHIP:DMG: AttributePathIB = + [1657911771.965631][2977:2977] CHIP:DMG: { + [1657911771.965657][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657911771.965695][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657911771.965726][2977:2977] CHIP:DMG: Attribute = 0x0000_0003, + [1657911771.965758][2977:2977] CHIP:DMG: } + [1657911771.965786][2977:2977] CHIP:DMG: + [1657911771.965811][2977:2977] CHIP:DMG: ], + [1657911771.965838][2977:2977] CHIP:DMG: + [1657911771.965864][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657911771.965889][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911771.965912][2977:2977] CHIP:DMG: }, + [1657911771.965989][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657911771.966084][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657911771.966114][2977:2977] CHIP:DMG: Cluster 300, Attribute 3 is dirty + [1657911771.966136][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0003 (expanded=0) + [1657911771.966164][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657911771.966196][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911771.966254][2977:2977] CHIP:DMG: Sending report (payload has 38 bytes)... disabled: true - label: "Over TransitionTime, DUT reads CurrentY attribute from TH." @@ -78,10 +99,31 @@ tests: verification: | ./chip-tool colorcontrol read current-y 1 1 - verify on Reference app receives the right response for the data sent in the above commands - - [1657099748.490709][4176:4181] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0004 DataVersion: 1806819047 - [1657099748.490778][4176:4181] CHIP:TOO: CurrentY: 500 + Verify in DUT as client side log: + [1657911790.232595][2977:2977] CHIP:IM: Received Read request + [1657911790.232674][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657911790.232700][2977:2977] CHIP:DMG: { + [1657911790.232723][2977:2977] CHIP:DMG: AttributePathIBs = + [1657911790.232756][2977:2977] CHIP:DMG: [ + [1657911790.232780][2977:2977] CHIP:DMG: AttributePathIB = + [1657911790.232807][2977:2977] CHIP:DMG: { + [1657911790.232834][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657911790.232865][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657911790.232898][2977:2977] CHIP:DMG: Attribute = 0x0000_0004, + [1657911790.232931][2977:2977] CHIP:DMG: } + [1657911790.232960][2977:2977] CHIP:DMG: + [1657911790.232985][2977:2977] CHIP:DMG: ], + [1657911790.233012][2977:2977] CHIP:DMG: + [1657911790.233038][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657911790.233063][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911790.233086][2977:2977] CHIP:DMG: }, + [1657911790.233162][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657911790.233249][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657911790.233279][2977:2977] CHIP:DMG: Cluster 300, Attribute 4 is dirty + [1657911790.233300][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0004 (expanded=0) + [1657911790.233328][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657911790.233360][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911790.233415][2977:2977] CHIP:DMG: Sending report (payload has 38 bytes)... disabled: true - label: "DUT sends MoveColor command to TH" @@ -89,39 +131,39 @@ tests: verification: | ./chip-tool colorcontrol move-color 10 20 0 0 1 1 - verify on Reference app receives the right response for the data sent in the above commands - - [1657099771.368436][4184:4189] CHIP:DMG: InvokeResponseMessage = - [1657099771.368464][4184:4189] CHIP:DMG: { - [1657099771.368491][4184:4189] CHIP:DMG: suppressResponse = false, - [1657099771.368519][4184:4189] CHIP:DMG: InvokeResponseIBs = - [1657099771.368555][4184:4189] CHIP:DMG: [ - [1657099771.368583][4184:4189] CHIP:DMG: InvokeResponseIB = - [1657099771.368620][4184:4189] CHIP:DMG: { - [1657099771.368649][4184:4189] CHIP:DMG: CommandStatusIB = - [1657099771.368688][4184:4189] CHIP:DMG: { - [1657099771.368722][4184:4189] CHIP:DMG: CommandPathIB = - [1657099771.368763][4184:4189] CHIP:DMG: { - [1657099771.368803][4184:4189] CHIP:DMG: EndpointId = 0x1, - [1657099771.368843][4184:4189] CHIP:DMG: ClusterId = 0x300, - [1657099771.368885][4184:4189] CHIP:DMG: CommandId = 0x8, - [1657099771.368922][4184:4189] CHIP:DMG: }, - [1657099771.368965][4184:4189] CHIP:DMG: - [1657099771.369003][4184:4189] CHIP:DMG: StatusIB = - [1657099771.369041][4184:4189] CHIP:DMG: { - [1657099771.369079][4184:4189] CHIP:DMG: status = 0x00 (SUCCESS), - [1657099771.369115][4184:4189] CHIP:DMG: }, - [1657099771.369154][4184:4189] CHIP:DMG: - [1657099771.369187][4184:4189] CHIP:DMG: }, - [1657099771.369225][4184:4189] CHIP:DMG: - [1657099771.369254][4184:4189] CHIP:DMG: }, - [1657099771.369288][4184:4189] CHIP:DMG: - [1657099771.369315][4184:4189] CHIP:DMG: ], - [1657099771.369349][4184:4189] CHIP:DMG: - [1657099771.369376][4184:4189] CHIP:DMG: InteractionModelRevision = 1 - [1657099771.369403][4184:4189] CHIP:DMG: }, - [1657099771.369469][4184:4189] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0008 Status=0x0 - [1657099771.369514][4184:4189] CHIP:DMG: ICR moving to [AwaitingDe] + Verify in DUT as client side log: + + [1657911814.839535][2977:2977] CHIP:DMG: InvokeRequestMessage = + [1657911814.839586][2977:2977] CHIP:DMG: { + [1657911814.839611][2977:2977] CHIP:DMG: suppressResponse = false, + [1657911814.839640][2977:2977] CHIP:DMG: timedRequest = false, + [1657911814.839666][2977:2977] CHIP:DMG: InvokeRequests = + [1657911814.839762][2977:2977] CHIP:DMG: [ + [1657911814.839792][2977:2977] CHIP:DMG: CommandDataIB = + [1657911814.839822][2977:2977] CHIP:DMG: { + [1657911814.839849][2977:2977] CHIP:DMG: CommandPathIB = + [1657911814.839882][2977:2977] CHIP:DMG: { + [1657911814.839914][2977:2977] CHIP:DMG: EndpointId = 0x1, + [1657911814.839952][2977:2977] CHIP:DMG: ClusterId = 0x300, + [1657911814.839987][2977:2977] CHIP:DMG: CommandId = 0x8, + [1657911814.840019][2977:2977] CHIP:DMG: }, + [1657911814.840074][2977:2977] CHIP:DMG: + [1657911814.840105][2977:2977] CHIP:DMG: CommandFields = + [1657911814.840136][2977:2977] CHIP:DMG: { + [1657911814.840172][2977:2977] CHIP:DMG: 0x0 = 10, + [1657911814.840207][2977:2977] CHIP:DMG: 0x1 = 20, + [1657911814.840239][2977:2977] CHIP:DMG: 0x2 = 0, + [1657911814.840273][2977:2977] CHIP:DMG: 0x3 = 0, + [1657911814.840310][2977:2977] CHIP:DMG: }, + [1657911814.840340][2977:2977] CHIP:DMG: }, + [1657911814.840374][2977:2977] CHIP:DMG: + [1657911814.840399][2977:2977] CHIP:DMG: ], + [1657911814.840432][2977:2977] CHIP:DMG: + [1657911814.840457][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911814.840482][2977:2977] CHIP:DMG: }, + [1657911814.840556][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=o + [1657911814.840596][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911814.840624][2977:2977] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0008 disabled: true - label: "DUT reads CurrentX attribute from TH." @@ -129,10 +171,31 @@ tests: verification: | ./chip-tool colorcontrol read current-x 1 1 - verify on Reference app receives the right response for the data sent in the above commands - - [1657099796.765576][4191:4196] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0003 DataVersion: 1806820056 - [1657099796.765663][4191:4196] CHIP:TOO: CurrentX: 652 + Verify in DUT as client side log: + [1657911771.965429][2977:2977] CHIP:IM: Received Read request + [1657911771.965509][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657911771.965536][2977:2977] CHIP:DMG: { + [1657911771.965557][2977:2977] CHIP:DMG: AttributePathIBs = + [1657911771.965583][2977:2977] CHIP:DMG: [ + [1657911771.965606][2977:2977] CHIP:DMG: AttributePathIB = + [1657911771.965631][2977:2977] CHIP:DMG: { + [1657911771.965657][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657911771.965695][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657911771.965726][2977:2977] CHIP:DMG: Attribute = 0x0000_0003, + [1657911771.965758][2977:2977] CHIP:DMG: } + [1657911771.965786][2977:2977] CHIP:DMG: + [1657911771.965811][2977:2977] CHIP:DMG: ], + [1657911771.965838][2977:2977] CHIP:DMG: + [1657911771.965864][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657911771.965889][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911771.965912][2977:2977] CHIP:DMG: }, + [1657911771.965989][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657911771.966084][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657911771.966114][2977:2977] CHIP:DMG: Cluster 300, Attribute 3 is dirty + [1657911771.966136][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0003 (expanded=0) + [1657911771.966164][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657911771.966196][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911771.966254][2977:2977] CHIP:DMG: Sending report (payload has 38 bytes)... disabled: true - label: "DUT reads CurrentY attribute from TH." @@ -140,10 +203,31 @@ tests: verification: | ./chip-tool colorcontrol read current-y 1 1 - verify on Reference app receives the right response for the data sent in the above commands - - [1657099818.536813][4199:4204] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0004 DataVersion: 1806820924 - [1657099818.536886][4199:4204] CHIP:TOO: CurrentY: 1439 + Verify in DUT as client side log: + [1657911790.232595][2977:2977] CHIP:IM: Received Read request + [1657911790.232674][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657911790.232700][2977:2977] CHIP:DMG: { + [1657911790.232723][2977:2977] CHIP:DMG: AttributePathIBs = + [1657911790.232756][2977:2977] CHIP:DMG: [ + [1657911790.232780][2977:2977] CHIP:DMG: AttributePathIB = + [1657911790.232807][2977:2977] CHIP:DMG: { + [1657911790.232834][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657911790.232865][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657911790.232898][2977:2977] CHIP:DMG: Attribute = 0x0000_0004, + [1657911790.232931][2977:2977] CHIP:DMG: } + [1657911790.232960][2977:2977] CHIP:DMG: + [1657911790.232985][2977:2977] CHIP:DMG: ], + [1657911790.233012][2977:2977] CHIP:DMG: + [1657911790.233038][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657911790.233063][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911790.233086][2977:2977] CHIP:DMG: }, + [1657911790.233162][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657911790.233249][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657911790.233279][2977:2977] CHIP:DMG: Cluster 300, Attribute 4 is dirty + [1657911790.233300][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0004 (expanded=0) + [1657911790.233328][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657911790.233360][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911790.233415][2977:2977] CHIP:DMG: Sending report (payload has 38 bytes)... disabled: true - label: "DUT sends StepColor command to TH" @@ -151,40 +235,39 @@ tests: verification: | ./chip-tool colorcontrol step-color 100 100 200 0 0 1 1 - verify on Reference app receives the right response for the data sent in the above commands - - - [1657099841.988019][4205:4210] CHIP:DMG: InvokeResponseMessage = - [1657099841.988053][4205:4210] CHIP:DMG: { - [1657099841.988084][4205:4210] CHIP:DMG: suppressResponse = false, - [1657099841.988115][4205:4210] CHIP:DMG: InvokeResponseIBs = - [1657099841.988154][4205:4210] CHIP:DMG: [ - [1657099841.988184][4205:4210] CHIP:DMG: InvokeResponseIB = - [1657099841.988225][4205:4210] CHIP:DMG: { - [1657099841.988257][4205:4210] CHIP:DMG: CommandStatusIB = - [1657099841.988300][4205:4210] CHIP:DMG: { - [1657099841.988337][4205:4210] CHIP:DMG: CommandPathIB = - [1657099841.988382][4205:4210] CHIP:DMG: { - [1657099841.988424][4205:4210] CHIP:DMG: EndpointId = 0x1, - [1657099841.988468][4205:4210] CHIP:DMG: ClusterId = 0x300, - [1657099841.988510][4205:4210] CHIP:DMG: CommandId = 0x9, - [1657099841.988549][4205:4210] CHIP:DMG: }, - [1657099841.988592][4205:4210] CHIP:DMG: - [1657099841.988628][4205:4210] CHIP:DMG: StatusIB = - [1657099841.988672][4205:4210] CHIP:DMG: { - [1657099841.988714][4205:4210] CHIP:DMG: status = 0x00 (SUCCESS), - [1657099841.988757][4205:4210] CHIP:DMG: }, - [1657099841.988798][4205:4210] CHIP:DMG: - [1657099841.988833][4205:4210] CHIP:DMG: }, - [1657099841.988872][4205:4210] CHIP:DMG: - [1657099841.988906][4205:4210] CHIP:DMG: }, - [1657099841.988942][4205:4210] CHIP:DMG: - [1657099841.988972][4205:4210] CHIP:DMG: ], - [1657099841.989008][4205:4210] CHIP:DMG: - [1657099841.989037][4205:4210] CHIP:DMG: InteractionModelRevision = 1 - [1657099841.989068][4205:4210] CHIP:DMG: }, - [1657099841.989137][4205:4210] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0009 Status=0x0 - [1657099841.989186][4205:4210] CHIP:DMG: ICR moving to [AwaitingDe] + Verify in DUT as client side log: + [1657911853.249758][2977:2977] CHIP:DMG: InvokeRequestMessage = + [1657911853.249810][2977:2977] CHIP:DMG: { + [1657911853.249851][2977:2977] CHIP:DMG: suppressResponse = false, + [1657911853.249932][2977:2977] CHIP:DMG: timedRequest = false, + [1657911853.249980][2977:2977] CHIP:DMG: InvokeRequests = + [1657911853.250039][2977:2977] CHIP:DMG: [ + [1657911853.250083][2977:2977] CHIP:DMG: CommandDataIB = + [1657911853.250150][2977:2977] CHIP:DMG: { + [1657911853.250200][2977:2977] CHIP:DMG: CommandPathIB = + [1657911853.250258][2977:2977] CHIP:DMG: { + [1657911853.250335][2977:2977] CHIP:DMG: EndpointId = 0x1, + [1657911853.250395][2977:2977] CHIP:DMG: ClusterId = 0x300, + [1657911853.250473][2977:2977] CHIP:DMG: CommandId = 0x9, + [1657911853.250529][2977:2977] CHIP:DMG: }, + [1657911853.250588][2977:2977] CHIP:DMG: + [1657911853.250655][2977:2977] CHIP:DMG: CommandFields = + [1657911853.250717][2977:2977] CHIP:DMG: { + [1657911853.250784][2977:2977] CHIP:DMG: 0x0 = 100, + [1657911853.250857][2977:2977] CHIP:DMG: 0x1 = 100, + [1657911853.250901][2977:2977] CHIP:DMG: 0x2 = 200, + [1657911853.250943][2977:2977] CHIP:DMG: 0x3 = 0, + [1657911853.250976][2977:2977] CHIP:DMG: 0x4 = 0, + [1657911853.251011][2977:2977] CHIP:DMG: }, + [1657911853.251039][2977:2977] CHIP:DMG: }, + [1657911853.251071][2977:2977] CHIP:DMG: + [1657911853.251103][2977:2977] CHIP:DMG: ], + [1657911853.251135][2977:2977] CHIP:DMG: + [1657911853.251159][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911853.251182][2977:2977] CHIP:DMG: }, + [1657911853.251262][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=o + [1657911853.251311][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911853.251340][2977:2977] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0009 disabled: true - label: "Over TransitionTime, DUT reads CurrentX attribute from TH." @@ -192,10 +275,31 @@ tests: verification: | ./chip-tool colorcontrol read current-x 1 1 - verify on Reference app receives the right response for the data sent in the above commands - - [1657099868.222275][4211:4216] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0003 DataVersion: 1806822657 - [1657099868.222338][4211:4216] CHIP:TOO: CurrentX: 1202 + Verify in DUT as client side log: + [1657911771.965429][2977:2977] CHIP:IM: Received Read request + [1657911771.965509][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657911771.965536][2977:2977] CHIP:DMG: { + [1657911771.965557][2977:2977] CHIP:DMG: AttributePathIBs = + [1657911771.965583][2977:2977] CHIP:DMG: [ + [1657911771.965606][2977:2977] CHIP:DMG: AttributePathIB = + [1657911771.965631][2977:2977] CHIP:DMG: { + [1657911771.965657][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657911771.965695][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657911771.965726][2977:2977] CHIP:DMG: Attribute = 0x0000_0003, + [1657911771.965758][2977:2977] CHIP:DMG: } + [1657911771.965786][2977:2977] CHIP:DMG: + [1657911771.965811][2977:2977] CHIP:DMG: ], + [1657911771.965838][2977:2977] CHIP:DMG: + [1657911771.965864][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657911771.965889][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911771.965912][2977:2977] CHIP:DMG: }, + [1657911771.965989][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657911771.966084][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657911771.966114][2977:2977] CHIP:DMG: Cluster 300, Attribute 3 is dirty + [1657911771.966136][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0003 (expanded=0) + [1657911771.966164][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657911771.966196][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911771.966254][2977:2977] CHIP:DMG: Sending report (payload has 38 bytes)... disabled: true - label: "Over TransitionTime, DUT reads CurrentY attribute from TH." @@ -203,10 +307,31 @@ tests: verification: | ./chip-tool colorcontrol read current-y 1 1 - verify on Reference app receives the right response for the data sent in the above commands - - [1657099888.236645][4219:4224] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0004 DataVersion: 1806822657 - [1657099888.236717][4219:4224] CHIP:TOO: CurrentY: 2005 + Verify in DUT as client side log: + [1657911790.232595][2977:2977] CHIP:IM: Received Read request + [1657911790.232674][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657911790.232700][2977:2977] CHIP:DMG: { + [1657911790.232723][2977:2977] CHIP:DMG: AttributePathIBs = + [1657911790.232756][2977:2977] CHIP:DMG: [ + [1657911790.232780][2977:2977] CHIP:DMG: AttributePathIB = + [1657911790.232807][2977:2977] CHIP:DMG: { + [1657911790.232834][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657911790.232865][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657911790.232898][2977:2977] CHIP:DMG: Attribute = 0x0000_0004, + [1657911790.232931][2977:2977] CHIP:DMG: } + [1657911790.232960][2977:2977] CHIP:DMG: + [1657911790.232985][2977:2977] CHIP:DMG: ], + [1657911790.233012][2977:2977] CHIP:DMG: + [1657911790.233038][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657911790.233063][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911790.233086][2977:2977] CHIP:DMG: }, + [1657911790.233162][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657911790.233249][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657911790.233279][2977:2977] CHIP:DMG: Cluster 300, Attribute 4 is dirty + [1657911790.233300][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0004 (expanded=0) + [1657911790.233328][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657911790.233360][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911790.233415][2977:2977] CHIP:DMG: Sending report (payload has 38 bytes)... disabled: true - label: "DUT sends StopMoveStep command to TH." @@ -214,37 +339,35 @@ tests: verification: | ./chip-tool colorcontrol stop-move-step 0 0 1 1 - verify on Reference app receives the right response for the data sent in the above commands - - [1657099908.880877][4226:4231] CHIP:DMG: InvokeResponseMessage = - [1657099908.880917][4226:4231] CHIP:DMG: { - [1657099908.880956][4226:4231] CHIP:DMG: suppressResponse = false, - [1657099908.880996][4226:4231] CHIP:DMG: InvokeResponseIBs = - [1657099908.881046][4226:4231] CHIP:DMG: [ - [1657099908.881086][4226:4231] CHIP:DMG: InvokeResponseIB = - [1657099908.881138][4226:4231] CHIP:DMG: { - [1657099908.881180][4226:4231] CHIP:DMG: CommandStatusIB = - [1657099908.881234][4226:4231] CHIP:DMG: { - [1657099908.881282][4226:4231] CHIP:DMG: CommandPathIB = - [1657099908.881336][4226:4231] CHIP:DMG: { - [1657099908.881391][4226:4231] CHIP:DMG: EndpointId = 0x1, - [1657099908.881448][4226:4231] CHIP:DMG: ClusterId = 0x300, - [1657099908.881509][4226:4231] CHIP:DMG: CommandId = 0x47, - [1657099908.881561][4226:4231] CHIP:DMG: }, - [1657099908.881618][4226:4231] CHIP:DMG: - [1657099908.881666][4226:4231] CHIP:DMG: StatusIB = - [1657099908.881720][4226:4231] CHIP:DMG: { - [1657099908.881775][4226:4231] CHIP:DMG: status = 0x00 (SUCCESS), - [1657099908.881828][4226:4231] CHIP:DMG: }, - [1657099908.881880][4226:4231] CHIP:DMG: - [1657099908.881926][4226:4231] CHIP:DMG: }, - [1657099908.881966][4226:4231] CHIP:DMG: - [1657099908.882000][4226:4231] CHIP:DMG: }, - [1657099908.882039][4226:4231] CHIP:DMG: - [1657099908.882068][4226:4231] CHIP:DMG: ], - [1657099908.882104][4226:4231] CHIP:DMG: - [1657099908.882133][4226:4231] CHIP:DMG: InteractionModelRevision = 1 - [1657099908.882162][4226:4231] CHIP:DMG: }, - [1657099908.882230][4226:4231] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0047 Status=0x0 - [1657099908.882278][4226:4231] CHIP:DMG: ICR moving to [AwaitingDe] + Verify in DUT as client side log: + + [1657911876.005800][2977:2977] CHIP:DMG: InvokeRequestMessage = + [1657911876.005828][2977:2977] CHIP:DMG: { + [1657911876.005852][2977:2977] CHIP:DMG: suppressResponse = false, + [1657911876.005881][2977:2977] CHIP:DMG: timedRequest = false, + [1657911876.005907][2977:2977] CHIP:DMG: InvokeRequests = + [1657911876.005940][2977:2977] CHIP:DMG: [ + [1657911876.005966][2977:2977] CHIP:DMG: CommandDataIB = + [1657911876.005998][2977:2977] CHIP:DMG: { + [1657911876.006027][2977:2977] CHIP:DMG: CommandPathIB = + [1657911876.006061][2977:2977] CHIP:DMG: { + [1657911876.006094][2977:2977] CHIP:DMG: EndpointId = 0x1, + [1657911876.006128][2977:2977] CHIP:DMG: ClusterId = 0x300, + [1657911876.006166][2977:2977] CHIP:DMG: CommandId = 0x47, + [1657911876.006197][2977:2977] CHIP:DMG: }, + [1657911876.006231][2977:2977] CHIP:DMG: + [1657911876.006261][2977:2977] CHIP:DMG: CommandFields = + [1657911876.006296][2977:2977] CHIP:DMG: { + [1657911876.006330][2977:2977] CHIP:DMG: 0x0 = 0, + [1657911876.006366][2977:2977] CHIP:DMG: 0x1 = 0, + [1657911876.006399][2977:2977] CHIP:DMG: }, + [1657911876.006428][2977:2977] CHIP:DMG: }, + [1657911876.006462][2977:2977] CHIP:DMG: + [1657911876.006487][2977:2977] CHIP:DMG: ], + [1657911876.006519][2977:2977] CHIP:DMG: + [1657911876.006543][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911876.006568][2977:2977] CHIP:DMG: }, + [1657911876.006639][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=o + [1657911876.006676][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911876.006706][2977:2977] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0047 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CC_6_1.yaml b/src/app/tests/suites/certification/Test_TC_CC_6_1.yaml index 83c20933c71c9d..19ee17ef5aa102 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_6_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_6_1.yaml @@ -41,48 +41,70 @@ tests: response: value: 1 - - label: "Read current color temprature" - PICS: CC.S.A0007 + - label: "TH reads ColorTempPhysicalMinMireds attribute from DUT" + PICS: CC.S.F04 && CC.S.A400b command: "readAttribute" - attribute: "ColorTemperature" + attribute: "ColorTempPhysicalMinMireds" + response: + saveAs: ColorTempPhysicalMinMiredsValue + constraints: + type: uint16 + minValue: 0 + maxValue: 65279 + + - label: "TH reads ColorTempPhysicalMaxMireds attribute from DUT." + PICS: CC.S.F04 && CC.S.A400c + command: "readAttribute" + attribute: "ColorTempPhysicalMaxMireds" response: + saveAs: ColorTempPhysicalMaxMiredsValue constraints: type: uint16 minValue: 0 maxValue: 65279 + - label: "TH reads ColorTemperatureMireds attribute from DUT." + PICS: CC.S.F04 && CC.S.A0007 + command: "readAttribute" + attribute: "ColorTemperature" + response: + constraints: + type: uint16 + minValue: ColorTempPhysicalMinMiredsValue + maxValue: ColorTempPhysicalMaxMiredsValue + - label: "Move To Color Temperature command" - PICS: CC.S.C0A.Rsp + PICS: CC.S.F04 && CC.S.C0A.Rsp command: "MoveToColorTemperature" arguments: values: - name: "colorTemperature" value: 100 - name: "TransitionTime" - value: 5 + value: 10 - name: "OptionsMask" value: 0 - name: "OptionsOverride" value: 0 - - label: "Wait 700ms" + - label: "Wait 1500ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 700 + value: 1500 - label: "Read current color temprature" - PICS: CC.S.A0007 + PICS: CC.S.F04 && CC.S.A0007 command: "readAttribute" attribute: "ColorTemperature" response: value: 100 constraints: type: uint16 - minValue: 0 - maxValue: 65279 + minValue: ColorTempPhysicalMinMiredsValue + maxValue: ColorTempPhysicalMaxMiredsValue - label: "Turn off light that we turned on" cluster: "On/Off" diff --git a/src/app/tests/suites/certification/Test_TC_CC_6_2.yaml b/src/app/tests/suites/certification/Test_TC_CC_6_2.yaml index 0e06aca06cb7eb..c8757584ef0127 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_6_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_6_2.yaml @@ -40,90 +40,112 @@ tests: response: value: 1 - - label: "Read current color temprature" - PICS: CC.S.A0007 + - label: "TH reads ColorTempPhysicalMinMireds attribute from DUT" + PICS: CC.S.F04 && CC.S.A400b command: "readAttribute" - attribute: "ColorTemperature" + attribute: "ColorTempPhysicalMinMireds" response: + saveAs: ColorTempPhysicalMinMiredsValue constraints: type: uint16 minValue: 0 maxValue: 65279 - - label: "Move up color temperature command" - PICS: CC.S.C4B.Rsp + - label: "TH reads ColorTempPhysicalMaxMireds attribute from DUT." + PICS: CC.S.F04 && CC.S.A400c + command: "readAttribute" + attribute: "ColorTempPhysicalMaxMireds" + response: + saveAs: ColorTempPhysicalMaxMiredsValue + constraints: + type: uint16 + minValue: 0 + maxValue: 65279 + + - label: "TH reads ColorTemperatureMireds attribute from DUT." + PICS: CC.S.F04 && CC.S.A0007 + command: "readAttribute" + attribute: "ColorTemperature" + response: + constraints: + type: uint16 + minValue: ColorTempPhysicalMinMiredsValue + maxValue: ColorTempPhysicalMaxMiredsValue + + - label: "TH sends MoveColorTemperature command to DUT with MoveMode = Up" + PICS: CC.S.F04 && CC.S.C4B.Rsp command: "MoveColorTemperature" arguments: values: - name: "MoveMode" value: 1 - name: "Rate" - value: 10 + value: 20 - name: "ColorTemperatureMinimumMireds" - value: 1 + value: ColorTempPhysicalMinMiredsValue - name: "ColorTemperatureMaximumMireds" - value: 255 + value: ColorTempPhysicalMaxMiredsValue - name: "OptionsMask" value: 0 - name: "OptionsOverride" value: 0 - - label: "Wait 90ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 90 + value: 1000 - label: "Read current color temprature attribute from DUT several times" - PICS: CC.S.A0007 + PICS: CC.S.F04 && CC.S.A0007 command: "readAttribute" attribute: "ColorTemperature" response: constraints: type: uint16 - minValue: 0 - maxValue: 65279 + minValue: ColorTempPhysicalMinMiredsValue + maxValue: ColorTempPhysicalMaxMiredsValue - - label: "Wait 95ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 95 + value: 1000 - label: "Read current color temprature attribute from DUT several times" - PICS: CC.S.A0007 + PICS: CC.S.F04 && CC.S.A0007 command: "readAttribute" attribute: "ColorTemperature" response: constraints: type: uint16 - minValue: 0 - maxValue: 65279 + minValue: ColorTempPhysicalMinMiredsValue + maxValue: ColorTempPhysicalMaxMiredsValue - - label: "Wait 100ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 100 + value: 1000 - label: "Read current color temprature attribute from DUT several times" - PICS: CC.S.A0007 + PICS: CC.S.F04 && CC.S.A0007 command: "readAttribute" attribute: "ColorTemperature" response: constraints: type: uint16 - minValue: 0 - maxValue: 65279 + minValue: ColorTempPhysicalMinMiredsValue + maxValue: ColorTempPhysicalMaxMiredsValue - - label: "Move down color temperature command" - PICS: CC.S.C4B.Rsp + - label: "TH sends MoveColorTemperature command to DUT with MoveMode = Down" + PICS: CC.S.F04 && CC.S.C4B.Rsp command: "MoveColorTemperature" arguments: values: @@ -132,70 +154,70 @@ tests: - name: "Rate" value: 20 - name: "ColorTemperatureMinimumMireds" - value: 1 + value: ColorTempPhysicalMinMiredsValue - name: "ColorTemperatureMaximumMireds" - value: 255 + value: ColorTempPhysicalMaxMiredsValue - name: "OptionsMask" value: 0 - name: "OptionsOverride" value: 0 - - label: "Wait 190ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 190 + value: 1000 - label: "Read current color temprature attribute from DUT several times" - PICS: CC.S.A0007 + PICS: CC.S.F04 && CC.S.A0007 command: "readAttribute" attribute: "ColorTemperature" response: constraints: type: uint16 - minValue: 0 - maxValue: 65279 + minValue: ColorTempPhysicalMinMiredsValue + maxValue: ColorTempPhysicalMaxMiredsValue - - label: "Wait 195ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 195 + value: 1000 - label: "Read current color temprature attribute from DUT several times" - PICS: CC.S.A0007 + PICS: CC.S.F04 && CC.S.A0007 command: "readAttribute" attribute: "ColorTemperature" response: constraints: type: uint16 - minValue: 0 - maxValue: 65279 + minValue: ColorTempPhysicalMinMiredsValue + maxValue: ColorTempPhysicalMaxMiredsValue - - label: "Wait 200ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 200 + value: 1000 - label: "Read current color temprature attribute from DUT several times" - PICS: CC.S.A0007 + PICS: CC.S.F04 && CC.S.A0007 command: "readAttribute" attribute: "ColorTemperature" response: constraints: type: uint16 - minValue: 0 - maxValue: 65279 + minValue: ColorTempPhysicalMinMiredsValue + maxValue: ColorTempPhysicalMaxMiredsValue - - label: "Move up color temperature command" - PICS: CC.S.C4B.Rsp + - label: "TH sends MoveColorTemperature command to DUT with MoveMode = Up" + PICS: CC.S.F04 && CC.S.C4B.Rsp command: "MoveColorTemperature" arguments: values: @@ -204,16 +226,16 @@ tests: - name: "Rate" value: 10 - name: "ColorTemperatureMinimumMireds" - value: 1 + value: ColorTempPhysicalMinMiredsValue - name: "ColorTemperatureMaximumMireds" - value: 255 + value: ColorTempPhysicalMaxMiredsValue - name: "OptionsMask" value: 0 - name: "OptionsOverride" value: 0 - - label: "Stop Color Temperature command" - PICS: CC.S.C4B.Rsp + - label: "TH sends MoveColorTemperature command to DUT with MoveMode = Stop" + PICS: CC.S.F04 && CC.S.C4B.Rsp command: "MoveColorTemperature" arguments: values: @@ -230,62 +252,65 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Wait 90ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 90 + value: 1000 - label: "Read current color temprature attribute from DUT several times" - PICS: CC.S.A0007 + PICS: CC.S.F04 && CC.S.A0007 command: "readAttribute" attribute: "ColorTemperature" response: + saveAs: ColorTemperatureValue constraints: type: uint16 - minValue: 0 - maxValue: 65279 + minValue: ColorTempPhysicalMinMiredsValue + maxValue: ColorTempPhysicalMaxMiredsValue - - label: "Wait 95ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 95 + value: 1000 - label: "Read current color temprature attribute from DUT several times" - PICS: CC.S.A0007 + PICS: CC.S.F04 && CC.S.A0007 command: "readAttribute" attribute: "ColorTemperature" response: + value: ColorTemperatureValue constraints: type: uint16 - minValue: 0 - maxValue: 65279 + minValue: ColorTempPhysicalMinMiredsValue + maxValue: ColorTempPhysicalMaxMiredsValue - - label: "Wait 100ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 100 + value: 1000 - label: "Read current color temprature attribute from DUT several times" - PICS: CC.S.A0007 + PICS: CC.S.F04 && CC.S.A0007 command: "readAttribute" attribute: "ColorTemperature" response: + value: ColorTemperatureValue constraints: type: uint16 - minValue: 0 - maxValue: 65279 + minValue: ColorTempPhysicalMinMiredsValue + maxValue: ColorTempPhysicalMaxMiredsValue - - label: "Move down color temperature command" - PICS: CC.S.C4B.Rsp + - label: "TH sends MoveColorTemperature command to DUT with MoveMode = Down" + PICS: CC.S.F04 && CC.S.C4B.Rsp command: "MoveColorTemperature" arguments: values: @@ -294,16 +319,16 @@ tests: - name: "Rate" value: 20 - name: "ColorTemperatureMinimumMireds" - value: 1 + value: ColorTempPhysicalMinMiredsValue - name: "ColorTemperatureMaximumMireds" - value: 255 + value: ColorTempPhysicalMaxMiredsValue - name: "OptionsMask" value: 0 - name: "OptionsOverride" value: 0 - - label: "Stop Color Temperature command" - PICS: CC.S.C4B.Rsp + - label: "TH sends MoveColorTemperature command to DUT with MoveMode = Stop" + PICS: CC.S.F04 && CC.S.C4B.Rsp command: "MoveColorTemperature" arguments: values: @@ -312,67 +337,70 @@ tests: - name: "Rate" value: 10 - name: "ColorTemperatureMinimumMireds" - value: 1 + value: ColorTempPhysicalMinMiredsValue - name: "ColorTemperatureMaximumMireds" - value: 255 + value: ColorTempPhysicalMaxMiredsValue - name: "OptionsMask" value: 0 - name: "OptionsOverride" value: 0 - - label: "Wait 140ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 140 + value: 1000 - label: "Read current color temprature attribute from DUT several times" - PICS: CC.S.A0007 + PICS: CC.S.F04 && CC.S.A0007 command: "readAttribute" attribute: "ColorTemperature" response: + saveAs: ColorTemperatureMoveModeStop constraints: type: uint16 - minValue: 0 - maxValue: 65279 + minValue: ColorTempPhysicalMinMiredsValue + maxValue: ColorTempPhysicalMaxMiredsValue - - label: "Wait 145ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 145 + value: 1000 - label: "Read current color temprature attribute from DUT several times" - PICS: CC.S.A0007 + PICS: CC.S.F04 && CC.S.A0007 command: "readAttribute" attribute: "ColorTemperature" response: + value: ColorTemperatureMoveModeStop constraints: type: uint16 - minValue: 0 - maxValue: 65279 + minValue: ColorTempPhysicalMinMiredsValue + maxValue: ColorTempPhysicalMaxMiredsValue - - label: "Wait 150ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 150 + value: 1000 - label: "Read current color temprature attribute from DUT several times" - PICS: CC.S.A0007 + PICS: CC.S.F04 && CC.S.A0007 command: "readAttribute" attribute: "ColorTemperature" response: + value: ColorTemperatureValue constraints: type: uint16 - minValue: 0 - maxValue: 65279 + minValue: ColorTempPhysicalMinMiredsValue + maxValue: ColorTempPhysicalMaxMiredsValue - label: "Turn off light that we turned on" cluster: "On/Off" diff --git a/src/app/tests/suites/certification/Test_TC_CC_6_3.yaml b/src/app/tests/suites/certification/Test_TC_CC_6_3.yaml index 2404ac2e550e22..75c811bf9765fc 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_6_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_6_3.yaml @@ -40,46 +40,68 @@ tests: response: value: 1 - - label: "Read current color temprature" - PICS: CC.S.A0007 + - label: "TH reads ColorTempPhysicalMinMireds attribute from DUT" + PICS: CC.S.F04 && CC.S.A400b command: "readAttribute" - attribute: "ColorTemperature" + attribute: "ColorTempPhysicalMinMireds" + response: + saveAs: ColorTempPhysicalMinMiredsValue + constraints: + type: uint16 + minValue: 0 + maxValue: 65279 + + - label: "TH reads ColorTempPhysicalMaxMireds attribute from DUT." + PICS: CC.S.F04 && CC.S.A400c + command: "readAttribute" + attribute: "ColorTempPhysicalMaxMireds" response: + saveAs: ColorTempPhysicalMaxMiredsValue constraints: type: uint16 minValue: 0 maxValue: 65279 - - label: "Step up color temperature command" - PICS: CC.S.C4C.Rsp + - label: "TH reads ColorTemperatureMireds attribute from DUT." + PICS: CC.S.F04 && CC.S.A0007 + command: "readAttribute" + attribute: "ColorTemperature" + response: + constraints: + type: uint16 + minValue: ColorTempPhysicalMinMiredsValue + maxValue: ColorTempPhysicalMaxMiredsValue + + - label: "TH sends StepColorTemperature command to DUT with MoveMode = Up" + PICS: CC.S.F04 && CC.S.C4C.Rsp command: "StepColorTemperature" arguments: values: - name: "StepMode" value: 1 - name: "StepSize" - value: 5 + value: 100 - name: "TransitionTime" - value: 50 + value: 15 - name: "ColorTemperatureMinimumMireds" - value: 5 + value: ColorTempPhysicalMinMiredsValue - name: "ColorTemperatureMaximumMireds" - value: 100 + value: ColorTempPhysicalMaxMiredsValue - name: "OptionsMask" value: 0 - name: "OptionsOverride" value: 0 - - label: "Wait 40ms" + - label: "Wait 500ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 40 + value: 500 - - label: "Read current color temprature" - PICS: CC.S.A0007 + - label: "TH reads ColorTemperatureMireds attribute from DUT several times" + PICS: CC.S.F04 && CC.S.A0007 command: "readAttribute" attribute: "ColorTemperature" response: @@ -88,16 +110,16 @@ tests: minValue: 0 maxValue: 65279 - - label: "Wait 45ms" + - label: "Wait 500ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 45 + value: 500 - - label: "Read current color temprature" - PICS: CC.S.A0007 + - label: "TH reads ColorTemperatureMireds attribute from DUT several times" + PICS: CC.S.F04 && CC.S.A0007 command: "readAttribute" attribute: "ColorTemperature" response: @@ -106,16 +128,16 @@ tests: minValue: 0 maxValue: 65279 - - label: "Wait 50ms" + - label: "Wait 500ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 50 + value: 500 - - label: "Read current color temprature" - PICS: CC.S.A0007 + - label: "TH reads ColorTemperatureMireds attribute from DUT several times" + PICS: CC.S.F04 && CC.S.A0007 command: "readAttribute" attribute: "ColorTemperature" response: @@ -124,8 +146,8 @@ tests: minValue: 0 maxValue: 65279 - - label: "Step down color temperature command" - PICS: CC.S.C4C.Rsp + - label: "TH sends StepColorTemperature command to DUT with MoveMode = Down" + PICS: CC.S.F04 && CC.S.C4C.Rsp command: "StepColorTemperature" arguments: values: @@ -136,24 +158,24 @@ tests: - name: "TransitionTime" value: 50 - name: "ColorTemperatureMinimumMireds" - value: 5 + value: ColorTempPhysicalMinMiredsValue - name: "ColorTemperatureMaximumMireds" - value: 100 + value: ColorTempPhysicalMaxMiredsValue - name: "OptionsMask" value: 0 - name: "OptionsOverride" value: 0 - - label: "Wait 40ms" + - label: "Wait 500ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 40 + value: 500 - - label: "Read current color temprature" - PICS: CC.S.A0007 + - label: "TH reads ColorTemperatureMireds attribute from DUT several times" + PICS: CC.S.F04 && CC.S.A0007 command: "readAttribute" attribute: "ColorTemperature" response: @@ -162,16 +184,16 @@ tests: minValue: 0 maxValue: 65279 - - label: "Wait 45ms" + - label: "Wait 500ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 45 + value: 500 - - label: "Read current color temprature" - PICS: CC.S.A0007 + - label: "TH reads ColorTemperatureMireds attribute from DUT several times" + PICS: CC.S.F04 && CC.S.A0007 command: "readAttribute" attribute: "ColorTemperature" response: @@ -180,16 +202,16 @@ tests: minValue: 0 maxValue: 65279 - - label: "Wait 50ms" + - label: "Wait 500ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 50 + value: 500 - - label: "Read current color temprature" - PICS: CC.S.A0007 + - label: "TH reads ColorTemperatureMireds attribute from DUT several times" + PICS: CC.S.F04 && CC.S.A0007 command: "readAttribute" attribute: "ColorTemperature" response: diff --git a/src/app/tests/suites/certification/Test_TC_CC_6_4.yaml b/src/app/tests/suites/certification/Test_TC_CC_6_4.yaml index 1c15250f5ffdaa..df482f27a21cb9 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_6_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_6_4.yaml @@ -22,151 +22,223 @@ config: tests: - label: - "DUT sends MoveToColorTemperature command to TH an - ColorTemperatureMireds with TransitionTime 300." - PICS: CC.C.C0A.Rsp + "* TH provides a server implementation of Color Control with + F04(CT)=true and reasonable values of ColorTempPhysicalMinMireds, + ColorTempPhysicalMaxMireds * DUT might read attributes like + ColorTempPhysicalMinMireds, ColorTempPhysicalMaxMireds from TH (now or + in later steps) to use those." verification: | - ./chip-tool colorcontrol move-to-color-temperature 150 300 0 0 1 1 + ./chip-tool colorcontrol read color-temp-physical-min-mireds 1 1 + + Verify in DUT as client side log: + [1658215472.478274][3413:3413] CHIP:IM: Received Read request + [1658215472.478456][3413:3413] CHIP:DMG: ReadRequestMessage = + [1658215472.478527][3413:3413] CHIP:DMG: { + [1658215472.478579][3413:3413] CHIP:DMG: AttributePathIBs = + [1658215472.478641][3413:3413] CHIP:DMG: [ + [1658215472.478698][3413:3413] CHIP:DMG: AttributePathIB = + [1658215472.478763][3413:3413] CHIP:DMG: { + [1658215472.478843][3413:3413] CHIP:DMG: Endpoint = 0x1, + [1658215472.478921][3413:3413] CHIP:DMG: Cluster = 0x300, + [1658215472.479000][3413:3413] CHIP:DMG: Attribute = 0x0000_400B, + [1658215472.479071][3413:3413] CHIP:DMG: } + [1658215472.479140][3413:3413] CHIP:DMG: + [1658215472.479202][3413:3413] CHIP:DMG: ], + [1658215472.479271][3413:3413] CHIP:DMG: + [1658215472.479335][3413:3413] CHIP:DMG: isFabricFiltered = true, + [1658215472.479397][3413:3413] CHIP:DMG: InteractionModelRevision = 1 + [1658215472.479453][3413:3413] CHIP:DMG: }, + [1658215472.479633][3413:3413] CHIP:DMG: IM RH moving to [GeneratingReports] + [1658215472.479850][3413:3413] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1658215472.479924][3413:3413] CHIP:DMG: Cluster 300, Attribute 400b is dirty + [1658215472.479976][3413:3413] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_400B (expanded=0) + [1658215472.480044][3413:3413] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1658215472.480118][3413:3413] CHIP:DMG: AccessControl: allowed + - verify on Reference app receives the right response for the data sent in the above commands - - [1657100029.310604][4236:4241] CHIP:DMG: InvokeResponseMessage = - [1657100029.310635][4236:4241] CHIP:DMG: { - [1657100029.310664][4236:4241] CHIP:DMG: suppressResponse = false, - [1657100029.310695][4236:4241] CHIP:DMG: InvokeResponseIBs = - [1657100029.310733][4236:4241] CHIP:DMG: [ - [1657100029.310764][4236:4241] CHIP:DMG: InvokeResponseIB = - [1657100029.310803][4236:4241] CHIP:DMG: { - [1657100029.310836][4236:4241] CHIP:DMG: CommandStatusIB = - [1657100029.310874][4236:4241] CHIP:DMG: { - [1657100029.310910][4236:4241] CHIP:DMG: CommandPathIB = - [1657100029.310954][4236:4241] CHIP:DMG: { - [1657100029.310997][4236:4241] CHIP:DMG: EndpointId = 0x1, - [1657100029.311041][4236:4241] CHIP:DMG: ClusterId = 0x300, - [1657100029.311083][4236:4241] CHIP:DMG: CommandId = 0xa, - [1657100029.311122][4236:4241] CHIP:DMG: }, - [1657100029.311167][4236:4241] CHIP:DMG: - [1657100029.311204][4236:4241] CHIP:DMG: StatusIB = - [1657100029.311244][4236:4241] CHIP:DMG: { - [1657100029.311286][4236:4241] CHIP:DMG: status = 0x00 (SUCCESS), - [1657100029.311327][4236:4241] CHIP:DMG: }, - [1657100029.311368][4236:4241] CHIP:DMG: - [1657100029.311404][4236:4241] CHIP:DMG: }, - [1657100029.311444][4236:4241] CHIP:DMG: - [1657100029.311476][4236:4241] CHIP:DMG: }, - [1657100029.311512][4236:4241] CHIP:DMG: - [1657100029.311541][4236:4241] CHIP:DMG: ], - [1657100029.311577][4236:4241] CHIP:DMG: - [1657100029.311606][4236:4241] CHIP:DMG: InteractionModelRevision = 1 - [1657100029.311635][4236:4241] CHIP:DMG: }, - [1657100029.311705][4236:4241] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_000A Status=0x0 - [1657100029.311754][4236:4241] CHIP:DMG: ICR moving to [AwaitingDe] + ./chip-tool colorcontrol read color-temp-physical-max-mireds 1 1 + + Verify in DUT as client side log: + [1658215497.166720][3413:3413] CHIP:IM: Received Read request + [1658215497.166886][3413:3413] CHIP:DMG: ReadRequestMessage = + [1658215497.166949][3413:3413] CHIP:DMG: { + [1658215497.167001][3413:3413] CHIP:DMG: AttributePathIBs = + [1658215497.167062][3413:3413] CHIP:DMG: [ + [1658215497.167120][3413:3413] CHIP:DMG: AttributePathIB = + [1658215497.167205][3413:3413] CHIP:DMG: { + [1658215497.167273][3413:3413] CHIP:DMG: Endpoint = 0x1, + [1658215497.167349][3413:3413] CHIP:DMG: Cluster = 0x300, + [1658215497.167418][3413:3413] CHIP:DMG: Attribute = 0x0000_400C, + [1658215497.167488][3413:3413] CHIP:DMG: } + [1658215497.167559][3413:3413] CHIP:DMG: + [1658215497.167621][3413:3413] CHIP:DMG: ], + [1658215497.167687][3413:3413] CHIP:DMG: + [1658215497.167750][3413:3413] CHIP:DMG: isFabricFiltered = true, + [1658215497.167810][3413:3413] CHIP:DMG: InteractionModelRevision = 1 + [1658215497.167866][3413:3413] CHIP:DMG: }, + [1658215497.168046][3413:3413] CHIP:DMG: IM RH moving to [GeneratingReports] + [1658215497.168296][3413:3413] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1658215497.168369][3413:3413] CHIP:DMG: Cluster 300, Attribute 400c is dirty + [1658215497.168422][3413:3413] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_400C (expanded=0) + [1658215497.168491][3413:3413] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1658215497.168570][3413:3413] CHIP:DMG: AccessControl: allowed disabled: true - - label: - "Over TransitionTime, DUT reads CurrentColorTemperatureMireds - attribute from TH periodically." - PICS: CC.C.A0007 + - label: "DUT sends MoveToColorTemperature command to TH" + PICS: CC.C.C0A.Rsp verification: | - ./chip-tool colorcontrol read color-temperature 1 1 - - verify on Reference app receives the right response for the data sent in the above commands + ./chip-tool colorcontrol move-to-color-temperature 150 300 0 0 1 1 - [1657100053.392386][4243:4248] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0007 DataVersion: 1806823137 - [1657100053.392464][4243:4248] CHIP:TOO: ColorTemperature: 120 + Verify in DUT as client side log: + [1657911906.102478][2977:2977] CHIP:DMG: InvokeRequestMessage = + [1657911906.102603][2977:2977] CHIP:DMG: { + [1657911906.102633][2977:2977] CHIP:DMG: suppressResponse = false, + [1657911906.102674][2977:2977] CHIP:DMG: timedRequest = false, + [1657911906.102703][2977:2977] CHIP:DMG: InvokeRequests = + [1657911906.102744][2977:2977] CHIP:DMG: [ + [1657911906.102814][2977:2977] CHIP:DMG: CommandDataIB = + [1657911906.102853][2977:2977] CHIP:DMG: { + [1657911906.102885][2977:2977] CHIP:DMG: CommandPathIB = + [1657911906.102923][2977:2977] CHIP:DMG: { + [1657911906.102964][2977:2977] CHIP:DMG: EndpointId = 0x1, + [1657911906.103007][2977:2977] CHIP:DMG: ClusterId = 0x300, + [1657911906.103049][2977:2977] CHIP:DMG: CommandId = 0xa, + [1657911906.103088][2977:2977] CHIP:DMG: }, + [1657911906.103129][2977:2977] CHIP:DMG: + [1657911906.103166][2977:2977] CHIP:DMG: CommandFields = + [1657911906.103205][2977:2977] CHIP:DMG: { + [1657911906.103243][2977:2977] CHIP:DMG: 0x0 = 150, + [1657911906.103285][2977:2977] CHIP:DMG: 0x1 = 300, + [1657911906.103327][2977:2977] CHIP:DMG: 0x2 = 0, + [1657911906.103369][2977:2977] CHIP:DMG: 0x3 = 0, + [1657911906.103406][2977:2977] CHIP:DMG: }, + [1657911906.103440][2977:2977] CHIP:DMG: }, + [1657911906.103479][2977:2977] CHIP:DMG: + [1657911906.103506][2977:2977] CHIP:DMG: ], + [1657911906.103543][2977:2977] CHIP:DMG: + [1657911906.103570][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911906.103600][2977:2977] CHIP:DMG: }, + [1657911906.103683][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=o + [1657911906.103726][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911906.103757][2977:2977] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_000A disabled: true - - label: "DUT sends MoveColorTemperatureMireds command to TH" + - label: "DUT sends MoveColorTemperature command to TH" PICS: CC.C.C4B.Rsp verification: | ./chip-tool colorcontrol move-color-temperature 1 10 5 250 0 0 1 1 - verify on Reference app receives the right response for the data sent in the above commands - - [1657100088.128957][4250:4255] CHIP:DMG: InvokeResponseMessage = - [1657100088.128993][4250:4255] CHIP:DMG: { - [1657100088.129028][4250:4255] CHIP:DMG: suppressResponse = false, - [1657100088.129073][4250:4255] CHIP:DMG: InvokeResponseIBs = - [1657100088.129119][4250:4255] CHIP:DMG: [ - [1657100088.129155][4250:4255] CHIP:DMG: InvokeResponseIB = - [1657100088.129202][4250:4255] CHIP:DMG: { - [1657100088.129240][4250:4255] CHIP:DMG: CommandStatusIB = - [1657100088.129284][4250:4255] CHIP:DMG: { - [1657100088.129329][4250:4255] CHIP:DMG: CommandPathIB = - [1657100088.129378][4250:4255] CHIP:DMG: { - [1657100088.129428][4250:4255] CHIP:DMG: EndpointId = 0x1, - [1657100088.129481][4250:4255] CHIP:DMG: ClusterId = 0x300, - [1657100088.129533][4250:4255] CHIP:DMG: CommandId = 0x4b, - [1657100088.129587][4250:4255] CHIP:DMG: }, - [1657100088.129640][4250:4255] CHIP:DMG: - [1657100088.129683][4250:4255] CHIP:DMG: StatusIB = - [1657100088.129732][4250:4255] CHIP:DMG: { - [1657100088.129782][4250:4255] CHIP:DMG: status = 0x00 (SUCCESS), - [1657100088.129831][4250:4255] CHIP:DMG: }, - [1657100088.129970][4250:4255] CHIP:DMG: - [1657100088.130016][4250:4255] CHIP:DMG: }, - [1657100088.130070][4250:4255] CHIP:DMG: - [1657100088.130110][4250:4255] CHIP:DMG: }, - [1657100088.130155][4250:4255] CHIP:DMG: - [1657100088.130190][4250:4255] CHIP:DMG: ], - [1657100088.130233][4250:4255] CHIP:DMG: - [1657100088.130269][4250:4255] CHIP:DMG: InteractionModelRevision = 1 - [1657100088.130304][4250:4255] CHIP:DMG: }, - [1657100088.130415][4250:4255] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_004B Status=0x0 - [1657100088.130476][4250:4255] CHIP:DMG: ICR moving to [AwaitingDe] + + Verify in DUT as client side log: + [1657911964.250866][2977:2977] CHIP:DMG: InvokeRequestMessage = + [1657911964.250894][2977:2977] CHIP:DMG: { + [1657911964.250917][2977:2977] CHIP:DMG: suppressResponse = false, + [1657911964.250952][2977:2977] CHIP:DMG: timedRequest = false, + [1657911964.250991][2977:2977] CHIP:DMG: InvokeRequests = + [1657911964.251026][2977:2977] CHIP:DMG: [ + [1657911964.251050][2977:2977] CHIP:DMG: CommandDataIB = + [1657911964.251090][2977:2977] CHIP:DMG: { + [1657911964.251120][2977:2977] CHIP:DMG: CommandPathIB = + [1657911964.251156][2977:2977] CHIP:DMG: { + [1657911964.251192][2977:2977] CHIP:DMG: EndpointId = 0x1, + [1657911964.251230][2977:2977] CHIP:DMG: ClusterId = 0x300, + [1657911964.251260][2977:2977] CHIP:DMG: CommandId = 0x4b, + [1657911964.251283][2977:2977] CHIP:DMG: }, + [1657911964.251328][2977:2977] CHIP:DMG: + [1657911964.251359][2977:2977] CHIP:DMG: CommandFields = + [1657911964.251394][2977:2977] CHIP:DMG: { + [1657911964.251430][2977:2977] CHIP:DMG: 0x0 = 1, + [1657911964.251477][2977:2977] CHIP:DMG: 0x1 = 10, + [1657911964.251516][2977:2977] CHIP:DMG: 0x2 = 5, + [1657911964.251553][2977:2977] CHIP:DMG: 0x3 = 250, + [1657911964.251600][2977:2977] CHIP:DMG: 0x4 = 0, + [1657911964.251639][2977:2977] CHIP:DMG: 0x5 = 0, + [1657911964.251675][2977:2977] CHIP:DMG: }, + [1657911964.251713][2977:2977] CHIP:DMG: }, + [1657911964.251748][2977:2977] CHIP:DMG: + [1657911964.251772][2977:2977] CHIP:DMG: ], + [1657911964.251812][2977:2977] CHIP:DMG: + [1657911964.251838][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911964.251861][2977:2977] CHIP:DMG: }, + [1657911964.251947][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=o + [1657911964.252028][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911964.252083][2977:2977] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_004B disabled: true - - label: - "DUT reads CurrentColorTemperatureMireds attribute from TH several - Times." - PICS: CC.C.A0007 + - label: "DUT sends StepColorTemperature command to TH" + PICS: CC.C.C4C.Rsp verification: | - ./chip-tool colorcontrol read color-temperature 1 1 + ./chip-tool colorcontrol step-color-temperature 1 10 200 5 250 0 0 1 1 + - verify on Reference app receives the right response for the data sent in the above commands + Verify in DUT as client side log: - [1657100106.171543][4257:4262] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0007 DataVersion: 1806823460 - [1657100106.171613][4257:4262] CHIP:TOO: ColorTemperature: 250 + [1657911996.200187][2977:2977] CHIP:DMG: InvokeRequestMessage = + [1657911996.200216][2977:2977] CHIP:DMG: { + [1657911996.200238][2977:2977] CHIP:DMG: suppressResponse = false, + [1657911996.200265][2977:2977] CHIP:DMG: timedRequest = false, + [1657911996.200304][2977:2977] CHIP:DMG: InvokeRequests = + [1657911996.200337][2977:2977] CHIP:DMG: [ + [1657911996.200361][2977:2977] CHIP:DMG: CommandDataIB = + [1657911996.200389][2977:2977] CHIP:DMG: { + [1657911996.200424][2977:2977] CHIP:DMG: CommandPathIB = + [1657911996.200465][2977:2977] CHIP:DMG: { + [1657911996.200507][2977:2977] CHIP:DMG: EndpointId = 0x1, + [1657911996.200543][2977:2977] CHIP:DMG: ClusterId = 0x300, + [1657911996.200592][2977:2977] CHIP:DMG: CommandId = 0x4c, + [1657911996.200626][2977:2977] CHIP:DMG: }, + [1657911996.200659][2977:2977] CHIP:DMG: + [1657911996.200701][2977:2977] CHIP:DMG: CommandFields = + [1657911996.200735][2977:2977] CHIP:DMG: { + [1657911996.200768][2977:2977] CHIP:DMG: 0x0 = 1, + [1657911996.200816][2977:2977] CHIP:DMG: 0x1 = 10, + [1657911996.200850][2977:2977] CHIP:DMG: 0x2 = 200, + [1657911996.200893][2977:2977] CHIP:DMG: 0x3 = 5, + [1657911996.200931][2977:2977] CHIP:DMG: 0x4 = 250, + [1657911996.200967][2977:2977] CHIP:DMG: 0x5 = 0, + [1657911996.201010][2977:2977] CHIP:DMG: 0x6 = 0, + [1657911996.201046][2977:2977] CHIP:DMG: }, + [1657911996.201075][2977:2977] CHIP:DMG: }, + [1657911996.201119][2977:2977] CHIP:DMG: + [1657911996.201144][2977:2977] CHIP:DMG: ], + [1657911996.201176][2977:2977] CHIP:DMG: + [1657911996.201200][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911996.201237][2977:2977] CHIP:DMG: }, + [1657911996.201314][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=o + [1657911996.201367][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911996.201395][2977:2977] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_004C disabled: true - - label: "DUT sends StepColorTemperature command to TH" - PICS: CC.C.C4C.Rsp + - label: "DUT sends StopMoveStep command to TH." + PICS: CC.C.C47.Rsp verification: | - ./chip-tool colorcontrol step-color-temperature 1 10 200 5 250 0 0 1 1 + ./chip-tool colorcontrol read color-temperature 1 1 + Verify in DUT as client side log: - verify on Reference app receives the right response for the data sent in the above commands - - [1657100128.589195][4265:4270] CHIP:DMG: InvokeResponseMessage = - [1657100128.589219][4265:4270] CHIP:DMG: { - [1657100128.589243][4265:4270] CHIP:DMG: suppressResponse = false, - [1657100128.589275][4265:4270] CHIP:DMG: InvokeResponseIBs = - [1657100128.589305][4265:4270] CHIP:DMG: [ - [1657100128.589329][4265:4270] CHIP:DMG: InvokeResponseIB = - [1657100128.589361][4265:4270] CHIP:DMG: { - [1657100128.589387][4265:4270] CHIP:DMG: CommandStatusIB = - [1657100128.589419][4265:4270] CHIP:DMG: { - [1657100128.589447][4265:4270] CHIP:DMG: CommandPathIB = - [1657100128.589480][4265:4270] CHIP:DMG: { - [1657100128.589514][4265:4270] CHIP:DMG: EndpointId = 0x1, - [1657100128.589552][4265:4270] CHIP:DMG: ClusterId = 0x300, - [1657100128.589588][4265:4270] CHIP:DMG: CommandId = 0x4c, - [1657100128.589621][4265:4270] CHIP:DMG: }, - [1657100128.589657][4265:4270] CHIP:DMG: - [1657100128.589686][4265:4270] CHIP:DMG: StatusIB = - [1657100128.589719][4265:4270] CHIP:DMG: { - [1657100128.589752][4265:4270] CHIP:DMG: status = 0x00 (SUCCESS), - [1657100128.589787][4265:4270] CHIP:DMG: }, - [1657100128.589819][4265:4270] CHIP:DMG: - [1657100128.589851][4265:4270] CHIP:DMG: }, - [1657100128.589883][4265:4270] CHIP:DMG: - [1657100128.589910][4265:4270] CHIP:DMG: }, - [1657100128.589942][4265:4270] CHIP:DMG: - [1657100128.589964][4265:4270] CHIP:DMG: ], - [1657100128.589993][4265:4270] CHIP:DMG: - [1657100128.590016][4265:4270] CHIP:DMG: InteractionModelRevision = 1 - [1657100128.590039][4265:4270] CHIP:DMG: }, - [1657100128.590096][4265:4270] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_004C Status=0x0 - [1657100128.590136][4265:4270] CHIP:DMG: ICR moving to [AwaitingDe] + [1657911929.678926][2977:2977] CHIP:IM: Received Read request + [1657911929.679006][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657911929.679032][2977:2977] CHIP:DMG: { + [1657911929.679066][2977:2977] CHIP:DMG: AttributePathIBs = + [1657911929.679092][2977:2977] CHIP:DMG: [ + [1657911929.679116][2977:2977] CHIP:DMG: AttributePathIB = + [1657911929.679154][2977:2977] CHIP:DMG: { + [1657911929.679182][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657911929.679213][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657911929.679252][2977:2977] CHIP:DMG: Attribute = 0x0000_0007, + [1657911929.679281][2977:2977] CHIP:DMG: } + [1657911929.679308][2977:2977] CHIP:DMG: + [1657911929.679333][2977:2977] CHIP:DMG: ], + [1657911929.679370][2977:2977] CHIP:DMG: + [1657911929.679397][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657911929.679422][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911929.679453][2977:2977] CHIP:DMG: }, + [1657911929.679531][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657911929.679637][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657911929.679677][2977:2977] CHIP:DMG: Cluster 300, Attribute 7 is dirty + [1657911929.679698][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0007 (expanded=0) + [1657911929.679726][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657911929.679768][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911929.679827][2977:2977] CHIP:DMG: Sending report (payload has 37 bytes)... disabled: true - label: @@ -176,10 +248,32 @@ tests: verification: | ./chip-tool colorcontrol read color-temperature 1 1 - verify on Reference app receives the right response for the data sent in the above commands + Verify in DUT as client side log: - [1657100144.703637][4271:4276] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0007 DataVersion: 1806823781 - [1657100144.703701][4271:4276] CHIP:TOO: ColorTemperature: 250 + [1657911929.678926][2977:2977] CHIP:IM: Received Read request + [1657911929.679006][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657911929.679032][2977:2977] CHIP:DMG: { + [1657911929.679066][2977:2977] CHIP:DMG: AttributePathIBs = + [1657911929.679092][2977:2977] CHIP:DMG: [ + [1657911929.679116][2977:2977] CHIP:DMG: AttributePathIB = + [1657911929.679154][2977:2977] CHIP:DMG: { + [1657911929.679182][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657911929.679213][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657911929.679252][2977:2977] CHIP:DMG: Attribute = 0x0000_0007, + [1657911929.679281][2977:2977] CHIP:DMG: } + [1657911929.679308][2977:2977] CHIP:DMG: + [1657911929.679333][2977:2977] CHIP:DMG: ], + [1657911929.679370][2977:2977] CHIP:DMG: + [1657911929.679397][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657911929.679422][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657911929.679453][2977:2977] CHIP:DMG: }, + [1657911929.679531][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657911929.679637][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657911929.679677][2977:2977] CHIP:DMG: Cluster 300, Attribute 7 is dirty + [1657911929.679698][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_0007 (expanded=0) + [1657911929.679726][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657911929.679768][2977:2977] CHIP:DMG: AccessControl: allowed + [1657911929.679827][2977:2977] CHIP:DMG: Sending report (payload has 37 bytes)... disabled: true - label: "DUT sends StopMoveStep command to TH." @@ -187,37 +281,34 @@ tests: verification: | ./chip-tool colorcontrol stop-move-step 0 0 1 1 - verify on Reference app receives the right response for the data sent in the above commands - - [1657100165.298276][4277:4282] CHIP:DMG: InvokeResponseMessage = - [1657100165.298307][4277:4282] CHIP:DMG: { - [1657100165.298337][4277:4282] CHIP:DMG: suppressResponse = false, - [1657100165.298395][4277:4282] CHIP:DMG: InvokeResponseIBs = - [1657100165.298439][4277:4282] CHIP:DMG: [ - [1657100165.298470][4277:4282] CHIP:DMG: InvokeResponseIB = - [1657100165.298510][4277:4282] CHIP:DMG: { - [1657100165.298543][4277:4282] CHIP:DMG: CommandStatusIB = - [1657100165.298581][4277:4282] CHIP:DMG: { - [1657100165.298618][4277:4282] CHIP:DMG: CommandPathIB = - [1657100165.298664][4277:4282] CHIP:DMG: { - [1657100165.298707][4277:4282] CHIP:DMG: EndpointId = 0x1, - [1657100165.298750][4277:4282] CHIP:DMG: ClusterId = 0x300, - [1657100165.298796][4277:4282] CHIP:DMG: CommandId = 0x47, - [1657100165.298836][4277:4282] CHIP:DMG: }, - [1657100165.298881][4277:4282] CHIP:DMG: - [1657100165.298917][4277:4282] CHIP:DMG: StatusIB = - [1657100165.298961][4277:4282] CHIP:DMG: { - [1657100165.299004][4277:4282] CHIP:DMG: status = 0x00 (SUCCESS), - [1657100165.299045][4277:4282] CHIP:DMG: }, - [1657100165.299086][4277:4282] CHIP:DMG: - [1657100165.299122][4277:4282] CHIP:DMG: }, - [1657100165.299164][4277:4282] CHIP:DMG: - [1657100165.299197][4277:4282] CHIP:DMG: }, - [1657100165.299237][4277:4282] CHIP:DMG: - [1657100165.299267][4277:4282] CHIP:DMG: ], - [1657100165.299304][4277:4282] CHIP:DMG: - [1657100165.299333][4277:4282] CHIP:DMG: InteractionModelRevision = 1 - [1657100165.299362][4277:4282] CHIP:DMG: }, - [1657100165.299430][4277:4282] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0047 Status=0x0 - [1657100165.299480][4277:4282] CHIP:DMG: ICR moving to [AwaitingDe] + Verify in DUT as client side log: + [1657912016.927414][2977:2977] CHIP:DMG: InvokeRequestMessage = + [1657912016.927442][2977:2977] CHIP:DMG: { + [1657912016.927464][2977:2977] CHIP:DMG: suppressResponse = false, + [1657912016.927490][2977:2977] CHIP:DMG: timedRequest = false, + [1657912016.927514][2977:2977] CHIP:DMG: InvokeRequests = + [1657912016.927557][2977:2977] CHIP:DMG: [ + [1657912016.927581][2977:2977] CHIP:DMG: CommandDataIB = + [1657912016.927608][2977:2977] CHIP:DMG: { + [1657912016.927642][2977:2977] CHIP:DMG: CommandPathIB = + [1657912016.927675][2977:2977] CHIP:DMG: { + [1657912016.927705][2977:2977] CHIP:DMG: EndpointId = 0x1, + [1657912016.927739][2977:2977] CHIP:DMG: ClusterId = 0x300, + [1657912016.927770][2977:2977] CHIP:DMG: CommandId = 0x47, + [1657912016.927809][2977:2977] CHIP:DMG: }, + [1657912016.927841][2977:2977] CHIP:DMG: + [1657912016.927866][2977:2977] CHIP:DMG: CommandFields = + [1657912016.927905][2977:2977] CHIP:DMG: { + [1657912016.927935][2977:2977] CHIP:DMG: 0x0 = 0, + [1657912016.927976][2977:2977] CHIP:DMG: 0x1 = 0, + [1657912016.928008][2977:2977] CHIP:DMG: }, + [1657912016.928035][2977:2977] CHIP:DMG: }, + [1657912016.928090][2977:2977] CHIP:DMG: + [1657912016.928124][2977:2977] CHIP:DMG: ], + [1657912016.928154][2977:2977] CHIP:DMG: + [1657912016.928178][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657912016.928201][2977:2977] CHIP:DMG: }, + [1657912016.928282][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=o + [1657912016.928328][2977:2977] CHIP:DMG: AccessControl: allowed + [1657912016.928356][2977:2977] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0047 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CC_7_1.yaml b/src/app/tests/suites/certification/Test_TC_CC_7_1.yaml index 68504be09001ab..58979af157d6e7 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_7_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_7_1.yaml @@ -18,6 +18,7 @@ config: nodeId: 0x12344321 cluster: "Color Control" endpoint: 1 + timeout: 150 tests: - label: "Wait for the commissioned device to be retrieved" @@ -39,8 +40,8 @@ tests: response: value: 1 - - label: "Enhanced Move To Hue command" - PICS: CC.S.C40.Rsp + - label: "TH sends EnhancedMoveToHue command to DUT" + PICS: CC.S.F01 && CC.S.C40.Rsp command: "EnhancedMoveToHue" arguments: values: @@ -49,16 +50,14 @@ tests: - name: "Direction" value: 0 - name: "TransitionTime" - value: 1 + value: 0 - name: "OptionsMask" value: 0 - name: "OptionsOverride" value: 0 - - label: - "Check EnhancedCurrentHue attribute value matched the value sent by - the last command" - PICS: CC.S.A4000 + - label: "TH reads EnhancedCurrentHue attribute from DUT" + PICS: CC.S.F01 && CC.S.A4000 command: "readAttribute" attribute: "EnhancedCurrentHue" response: @@ -67,8 +66,8 @@ tests: minValue: 0 maxValue: 65535 - - label: "Enhanced Move To Hue command" - PICS: CC.S.C40.Rsp + - label: "TH sends EnhancedMoveToHue command to DUT" + PICS: CC.S.F01 && CC.S.C40.Rsp command: "EnhancedMoveToHue" arguments: values: @@ -83,18 +82,16 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Wait 290ms" + - label: "Wait 5500ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 290 + value: 5500 - - label: - "Check EnhancedCurrentHue attribute value matched the value sent by - the last command" - PICS: CC.S.A4000 + - label: "TH reads EnhancedCurrentHue attribute from DUT periodically" + PICS: CC.S.F01 && CC.S.A4000 command: "readAttribute" attribute: "EnhancedCurrentHue" response: @@ -103,18 +100,16 @@ tests: minValue: 0 maxValue: 65535 - - label: "Wait 295ms" + - label: "Wait 5500ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 295 + value: 5500 - - label: - "Check EnhancedCurrentHue attribute value matched the value sent by - the last command" - PICS: CC.S.A4000 + - label: "TH reads EnhancedCurrentHue attribute from DUT periodically" + PICS: CC.S.F01 && CC.S.A4000 command: "readAttribute" attribute: "EnhancedCurrentHue" response: @@ -123,28 +118,27 @@ tests: minValue: 0 maxValue: 65535 - - label: "Wait 300ms" + - label: "Wait 20s" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 300 + value: 20000 - - label: - "Check EnhancedCurrentHue attribute value matched the value sent by - the last command" - PICS: CC.S.A4000 + - label: "TH reads EnhancedCurrentHue attribute from DUT periodically" + PICS: CC.S.F01 && CC.S.A4000 command: "readAttribute" attribute: "EnhancedCurrentHue" response: + value: 1100 constraints: type: uint16 minValue: 0 maxValue: 65535 - - label: "Enhanced Move To Hue command" - PICS: CC.S.C40.Rsp + - label: "TH sends EnhancedMoveToHue command to DUT" + PICS: CC.S.F01 && CC.S.C40.Rsp command: "EnhancedMoveToHue" arguments: values: @@ -159,18 +153,16 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Wait 290ms" + - label: "Wait 5500ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 290 + value: 5500 - - label: - "Check EnhancedCurrentHue attribute value matched the value sent by - the last command" - PICS: CC.S.A4000 + - label: "TH reads EnhancedCurrentHue attribute from DUT periodically" + PICS: CC.S.F01 && CC.S.A4000 command: "readAttribute" attribute: "EnhancedCurrentHue" response: @@ -179,18 +171,16 @@ tests: minValue: 0 maxValue: 65535 - - label: "Wait 295ms" + - label: "Wait 5500ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 295 + value: 5500 - - label: - "Check EnhancedCurrentHue attribute value matched the value sent by - the last command" - PICS: CC.S.A4000 + - label: "TH reads EnhancedCurrentHue attribute from DUT periodically" + PICS: CC.S.F01 && CC.S.A4000 command: "readAttribute" attribute: "EnhancedCurrentHue" response: @@ -199,28 +189,27 @@ tests: minValue: 0 maxValue: 65535 - - label: "Wait 300ms" + - label: "Wait 20s" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 300 + value: 20000 - - label: - "Check EnhancedCurrentHue attribute value matched the value sent by - the last command" - PICS: CC.S.A4000 + - label: "TH reads EnhancedCurrentHue attribute from DUT periodically" + PICS: CC.S.F01 && CC.S.A4000 command: "readAttribute" attribute: "EnhancedCurrentHue" response: + value: 1150 constraints: type: uint16 minValue: 0 maxValue: 65535 - - label: "Enhanced Move To Hue command" - PICS: CC.S.C40.Rsp + - label: "TH sends EnhancedMoveToHue command to DUT" + PICS: CC.S.F01 && CC.S.C40.Rsp command: "EnhancedMoveToHue" arguments: values: @@ -235,18 +224,16 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Wait 290ms" + - label: "Wait 5500ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 290 + value: 5500 - - label: - "Check EnhancedCurrentHue attribute value matched the value sent by - the last command" - PICS: CC.S.A4000 + - label: "TH reads EnhancedCurrentHue attribute from DUT periodically" + PICS: CC.S.F01 && CC.S.A4000 command: "readAttribute" attribute: "EnhancedCurrentHue" response: @@ -255,18 +242,16 @@ tests: minValue: 0 maxValue: 65535 - - label: "Wait 295ms" + - label: "Wait 5500ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 295 + value: 5500 - - label: - "Check EnhancedCurrentHue attribute value matched the value sent by - the last command" - PICS: CC.S.A4000 + - label: "TH reads EnhancedCurrentHue attribute from DUT periodically" + PICS: CC.S.F01 && CC.S.A4000 command: "readAttribute" attribute: "EnhancedCurrentHue" response: @@ -275,28 +260,27 @@ tests: minValue: 0 maxValue: 65535 - - label: "Wait 300ms" + - label: "Wait 20s" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 300 + value: 20000 - - label: - "Check EnhancedCurrentHue attribute value matched the value sent by - the last command" - PICS: CC.S.A4000 + - label: "TH reads EnhancedCurrentHue attribute from DUT periodically" + PICS: CC.S.F01 && CC.S.A4000 command: "readAttribute" attribute: "EnhancedCurrentHue" response: + value: 1200 constraints: type: uint16 minValue: 0 maxValue: 65535 - - label: "Enhanced Move To Hue command" - PICS: CC.S.C40.Rsp + - label: "TH sends EnhancedMoveToHue command to DUT " + PICS: CC.S.F01 && CC.S.C40.Rsp command: "EnhancedMoveToHue" arguments: values: @@ -311,18 +295,16 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Wait 290ms" + - label: "Wait 5500ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 290 + value: 5500 - - label: - "Check EnhancedCurrentHue attribute value matched the value sent by - the last command" - PICS: CC.S.A4000 + - label: "TH reads EnhancedCurrentHue attribute from DUT periodically" + PICS: CC.S.F01 && CC.S.A4000 command: "readAttribute" attribute: "EnhancedCurrentHue" response: @@ -331,18 +313,16 @@ tests: minValue: 0 maxValue: 65535 - - label: "Wait 295ms" + - label: "Wait 5500ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 295 + value: 5500 - - label: - "Check EnhancedCurrentHue attribute value matched the value sent by - the last command" - PICS: CC.S.A4000 + - label: "TH reads EnhancedCurrentHue attribute from DUT periodically" + PICS: CC.S.F01 && CC.S.A4000 command: "readAttribute" attribute: "EnhancedCurrentHue" response: @@ -351,21 +331,20 @@ tests: minValue: 0 maxValue: 65535 - - label: "Wait 300ms" + - label: "Wait 20s" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 300 + value: 20000 - - label: - "Check EnhancedCurrentHue attribute value matched the value sent by - the last command" - PICS: CC.S.A4000 + - label: "TH reads EnhancedCurrentHue attribute from DUT periodically" + PICS: CC.S.F01 && CC.S.A4000 command: "readAttribute" attribute: "EnhancedCurrentHue" response: + value: 1300 constraints: type: uint16 minValue: 0 diff --git a/src/app/tests/suites/certification/Test_TC_CC_7_2.yaml b/src/app/tests/suites/certification/Test_TC_CC_7_2.yaml index fd6d6e68c164c5..5fc32f48434c2b 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_7_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_7_2.yaml @@ -39,9 +39,9 @@ tests: response: value: 1 - - label: "Check EnhancedCurrentHue attribute from DUT" + - label: "TH reads EnhancedCurrentHue attribute from DUT" command: "readAttribute" - PICS: CC.S.A4000 + PICS: CC.S.F01 && CC.S.A4000 attribute: "EnhancedCurrentHue" response: constraints: @@ -49,8 +49,8 @@ tests: minValue: 0 maxValue: 65535 - - label: "Enhanced Move Hue Up command" - PICS: CC.S.C41.Rsp + - label: "TH sends EnhancedMoveHue command to DUT with MoveMode Up" + PICS: CC.S.F01 && CC.S.C41.Rsp command: "EnhancedMoveHue" arguments: values: @@ -63,18 +63,16 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Wait 290ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 290 + value: 1000 - - label: - "Check EnhancedCurrentHue attribute value matched the value sent by - the last command" - PICS: CC.S.A4000 + - label: "TH reads EnhancedCurrentHue attribute from DUT several times." + PICS: CC.S.F01 && CC.S.A4000 command: "readAttribute" attribute: "EnhancedCurrentHue" response: @@ -83,18 +81,16 @@ tests: minValue: 0 maxValue: 65535 - - label: "Wait 295ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 295 + value: 1000 - - label: - "Check EnhancedCurrentHue attribute value matched the value sent by - the last command" - PICS: CC.S.A4000 + - label: "TH reads EnhancedCurrentHue attribute from DUT several times." + PICS: CC.S.F01 && CC.S.A4000 command: "readAttribute" attribute: "EnhancedCurrentHue" response: @@ -103,18 +99,16 @@ tests: minValue: 0 maxValue: 65535 - - label: "Wait 300ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 300 + value: 1000 - - label: - "Check EnhancedCurrentHue attribute value matched the value sent by - the last command" - PICS: CC.S.A4000 + - label: "TH reads EnhancedCurrentHue attribute from DUT several times." + PICS: CC.S.F01 && CC.S.A4000 command: "readAttribute" attribute: "EnhancedCurrentHue" response: @@ -123,8 +117,8 @@ tests: minValue: 0 maxValue: 65535 - - label: "Enhanced Move Hue Stop command" - PICS: CC.S.C41.Rsp + - label: "TH sends EnhancedMoveHue command to DUT with MoveMode Stop" + PICS: CC.S.F01 && CC.S.C41.Rsp command: "EnhancedMoveHue" arguments: values: @@ -137,10 +131,8 @@ tests: - name: "OptionsOverride" value: 0 - - label: - "Check EnhancedCurrentHue attribute value matched the value sent by - the last command" - PICS: CC.S.A4000 + - label: "TH reads EnhancedCurrentHue attribute from DUT several times" + PICS: CC.S.F01 && CC.S.A4000 command: "readAttribute" attribute: "EnhancedCurrentHue" response: @@ -149,32 +141,30 @@ tests: minValue: 0 maxValue: 65535 - - label: "Enhanced Move Hue Down command" - PICS: CC.S.C41.Rsp + - label: "TH sends EnhancedMoveHue command to DUT with MoveMode Down" + PICS: CC.S.F01 && CC.S.C41.Rsp command: "EnhancedMoveHue" arguments: values: - name: "MoveMode" value: 3 - name: "Rate" - value: 5 + value: 15 - name: "OptionsMask" value: 0 - name: "OptionsOverride" value: 0 - - label: "Wait 40ms" + - label: "Wait 500ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 40 + value: 500 - - label: - "Check EnhancedCurrentHue attribute value matched the value sent by - the last command" - PICS: CC.S.A4000 + - label: "TH reads EnhancedCurrentHue attribute from DUT several times" + PICS: CC.S.F01 && CC.S.A4000 command: "readAttribute" attribute: "EnhancedCurrentHue" response: @@ -183,18 +173,16 @@ tests: minValue: 0 maxValue: 65535 - - label: "Wait 45ms" + - label: "Wait 500ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 45 + value: 500 - - label: - "Check EnhancedCurrentHue attribute value matched the value sent by - the last command" - PICS: CC.S.A4000 + - label: "TH reads EnhancedCurrentHue attribute from DUT several times" + PICS: CC.S.F01 && CC.S.A4000 command: "readAttribute" attribute: "EnhancedCurrentHue" response: @@ -203,18 +191,16 @@ tests: minValue: 0 maxValue: 65535 - - label: "Wait 50ms" + - label: "Wait 500ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 50 + value: 500 - - label: - "Check EnhancedCurrentHue attribute value matched the value sent by - the last command" - PICS: CC.S.A4000 + - label: "TH reads EnhancedCurrentHue attribute from DUT several times" + PICS: CC.S.F01 && CC.S.A4000 command: "readAttribute" attribute: "EnhancedCurrentHue" response: @@ -223,8 +209,8 @@ tests: minValue: 0 maxValue: 65535 - - label: "Enhanced Move Hue Stop command" - PICS: CC.S.C41.Rsp + - label: "TH sends EnhancedMoveHue command to DUT with MoveMode Stop" + PICS: CC.S.F01 && CC.S.C41.Rsp command: "EnhancedMoveHue" arguments: values: @@ -237,10 +223,8 @@ tests: - name: "OptionsOverride" value: 0 - - label: - "Check EnhancedCurrentHue attribute value matched the value sent by - the last command" - PICS: CC.S.A4000 + - label: "TH reads EnhancedCurrentHue attribute from DUT several times." + PICS: CC.S.F01 && CC.S.A4000 command: "readAttribute" attribute: "EnhancedCurrentHue" response: diff --git a/src/app/tests/suites/certification/Test_TC_CC_7_3.yaml b/src/app/tests/suites/certification/Test_TC_CC_7_3.yaml index 1193fcd9845039..d2054dd100c021 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_7_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_7_3.yaml @@ -39,9 +39,9 @@ tests: response: value: 1 - - label: "Reads EnhancedCurrentHue attribute from DUT" + - label: "TH reads EnhancedCurrentHue attribute from DUT" command: "readAttribute" - PICS: CC.S.A4000 + PICS: CC.S.F01 && CC.S.A4000 attribute: "EnhancedCurrentHue" response: constraints: @@ -49,8 +49,8 @@ tests: minValue: 0 maxValue: 65535 - - label: "Enhanced Step Hue Up command" - PICS: CC.S.C42.Rsp + - label: "TH sends EnhancedStepHue command to DUT with StepMode Up" + PICS: CC.S.F01 && CC.S.C42.Rsp command: "EnhancedStepHue" arguments: values: @@ -65,17 +65,17 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Wait 10ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 10 + value: 1000 - label: "Over TransitionTime,Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" - PICS: CC.S.A4000 + PICS: CC.S.F01 && CC.S.A4000 attribute: "EnhancedCurrentHue" response: constraints: @@ -83,8 +83,8 @@ tests: minValue: 0 maxValue: 65535 - - label: "Enhanced Step Hue Down command" - PICS: CC.S.C42.Rsp + - label: "TH sends EnhancedStepHue command to DUT with StepMode Down" + PICS: CC.S.F01 && CC.S.C42.Rsp command: "EnhancedStepHue" arguments: values: @@ -99,17 +99,17 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Wait 10ms" + - label: "Wait 1000ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 10 + value: 1000 - label: "Over TransitionTime,Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" - PICS: CC.S.A4000 + PICS: CC.S.F01 && CC.S.A4000 attribute: "EnhancedCurrentHue" response: constraints: diff --git a/src/app/tests/suites/certification/Test_TC_CC_7_4.yaml b/src/app/tests/suites/certification/Test_TC_CC_7_4.yaml index b1ae246fee41d2..9b4068a4fad660 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_7_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_7_4.yaml @@ -41,8 +41,8 @@ tests: response: value: 1 - - label: "Reads EnhancedCurrentHue attribute from DUT" - PICS: CC.S.A4000 + - label: "TH reads EnhancedCurrentHue attribute from DUT" + PICS: CC.S.F01 && CC.S.A4000 command: "readAttribute" attribute: "EnhancedCurrentHue" response: @@ -51,8 +51,8 @@ tests: minValue: 0 maxValue: 65535 - - label: "Enhanced move to hue and saturation command" - PICS: CC.S.C43.Rsp + - label: "TH sends EnhancedMoveToHueAndSaturation command to DUT" + PICS: CC.S.F01 && CC.S.C43.Rsp command: "EnhancedMoveToHueAndSaturation" arguments: values: @@ -67,21 +67,22 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Wait 10ms" + - label: "Wait 1500ms" cluster: "DelayCommands" command: "WaitForMs" arguments: values: - name: "ms" - value: 10 + value: 1500 - label: "Check EnhancedCurrentHue attribute value matched the value sent by the last command" - PICS: CC.S.A4000 + PICS: CC.S.F01 && CC.S.A4000 command: "readAttribute" attribute: "EnhancedCurrentHue" response: + value: 1200 constraints: type: uint16 minValue: 0 diff --git a/src/app/tests/suites/certification/Test_TC_CC_7_5.yaml b/src/app/tests/suites/certification/Test_TC_CC_7_5.yaml index 75b366d538c255..bbf281de9e5372 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_7_5.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_7_5.yaml @@ -27,39 +27,39 @@ tests: PICS: CC.C.C40.Rsp verification: | ./chip-tool colorcontrol enhanced-move-to-hue 1000 3 200 0 0 1 1 - verify on Reference app receives the right response for the data sent in the above commands - - [1657100403.798306][4293:4298] CHIP:DMG: InvokeResponseMessage = - [1657100403.798342][4293:4298] CHIP:DMG: { - [1657100403.798398][4293:4298] CHIP:DMG: suppressResponse = false, - [1657100403.798437][4293:4298] CHIP:DMG: InvokeResponseIBs = - [1657100403.798482][4293:4298] CHIP:DMG: [ - [1657100403.798518][4293:4298] CHIP:DMG: InvokeResponseIB = - [1657100403.798574][4293:4298] CHIP:DMG: { - [1657100403.798613][4293:4298] CHIP:DMG: CommandStatusIB = - [1657100403.798739][4293:4298] CHIP:DMG: { - [1657100403.798783][4293:4298] CHIP:DMG: CommandPathIB = - [1657100403.798834][4293:4298] CHIP:DMG: { - [1657100403.798880][4293:4298] CHIP:DMG: EndpointId = 0x1, - [1657100403.798931][4293:4298] CHIP:DMG: ClusterId = 0x300, - [1657100403.798977][4293:4298] CHIP:DMG: CommandId = 0x40, - [1657100403.799025][4293:4298] CHIP:DMG: }, - [1657100403.799073][4293:4298] CHIP:DMG: - [1657100403.799117][4293:4298] CHIP:DMG: StatusIB = - [1657100403.799165][4293:4298] CHIP:DMG: { - [1657100403.799214][4293:4298] CHIP:DMG: status = 0x00 (SUCCESS), - [1657100403.799267][4293:4298] CHIP:DMG: }, - [1657100403.799315][4293:4298] CHIP:DMG: - [1657100403.799357][4293:4298] CHIP:DMG: }, - [1657100403.799411][4293:4298] CHIP:DMG: - [1657100403.799451][4293:4298] CHIP:DMG: }, - [1657100403.799495][4293:4298] CHIP:DMG: - [1657100403.799530][4293:4298] CHIP:DMG: ], - [1657100403.799573][4293:4298] CHIP:DMG: - [1657100403.799608][4293:4298] CHIP:DMG: InteractionModelRevision = 1 - [1657100403.799643][4293:4298] CHIP:DMG: }, - [1657100403.799724][4293:4298] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0040 Status=0x0 - [1657100403.799782][4293:4298] CHIP:DMG: ICR moving to [AwaitingDe] + Verify in DUT as client side log: + [1657912045.703432][2977:2977] CHIP:DMG: InvokeRequestMessage = + [1657912045.703462][2977:2977] CHIP:DMG: { + [1657912045.703485][2977:2977] CHIP:DMG: suppressResponse = false, + [1657912045.703511][2977:2977] CHIP:DMG: timedRequest = false, + [1657912045.703548][2977:2977] CHIP:DMG: InvokeRequests = + [1657912045.703583][2977:2977] CHIP:DMG: [ + [1657912045.703608][2977:2977] CHIP:DMG: CommandDataIB = + [1657912045.703635][2977:2977] CHIP:DMG: { + [1657912045.703670][2977:2977] CHIP:DMG: CommandPathIB = + [1657912045.703709][2977:2977] CHIP:DMG: { + [1657912045.703737][2977:2977] CHIP:DMG: EndpointId = 0x1, + [1657912045.703791][2977:2977] CHIP:DMG: ClusterId = 0x300, + [1657912045.703830][2977:2977] CHIP:DMG: CommandId = 0x40, + [1657912045.703864][2977:2977] CHIP:DMG: }, + [1657912045.703908][2977:2977] CHIP:DMG: + [1657912045.703936][2977:2977] CHIP:DMG: CommandFields = + [1657912045.703967][2977:2977] CHIP:DMG: { + [1657912045.704009][2977:2977] CHIP:DMG: 0x0 = 1000, + [1657912045.704048][2977:2977] CHIP:DMG: 0x1 = 3, + [1657912045.704121][2977:2977] CHIP:DMG: 0x2 = 200, + [1657912045.704164][2977:2977] CHIP:DMG: 0x3 = 0, + [1657912045.704202][2977:2977] CHIP:DMG: 0x4 = 0, + [1657912045.704238][2977:2977] CHIP:DMG: }, + [1657912045.704277][2977:2977] CHIP:DMG: }, + [1657912045.704309][2977:2977] CHIP:DMG: + [1657912045.704333][2977:2977] CHIP:DMG: ], + [1657912045.704374][2977:2977] CHIP:DMG: + [1657912045.704399][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657912045.704423][2977:2977] CHIP:DMG: }, + [1657912045.704511][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=o + [1657912045.704551][2977:2977] CHIP:DMG: AccessControl: allowed + [1657912045.704580][2977:2977] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0040 disabled: true - label: @@ -69,10 +69,31 @@ tests: verification: | ./chip-tool colorcontrol read enhanced-current-hue 1 1 - verify on Reference app receives the right response for the data sent in the above commands - - [1657100425.785217][4301:4306] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_4000 DataVersion: 1806824664 - [1657100425.785286][4301:4306] CHIP:TOO: EnhancedCurrentHue: 1000 + Verify in DUT as client side log: + [1657912064.296156][2977:2977] CHIP:IM: Received Read request + [1657912064.296261][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657912064.296295][2977:2977] CHIP:DMG: { + [1657912064.296322][2977:2977] CHIP:DMG: AttributePathIBs = + [1657912064.296378][2977:2977] CHIP:DMG: [ + [1657912064.296409][2977:2977] CHIP:DMG: AttributePathIB = + [1657912064.296448][2977:2977] CHIP:DMG: { + [1657912064.296497][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657912064.296538][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657912064.296578][2977:2977] CHIP:DMG: Attribute = 0x0000_4000, + [1657912064.296621][2977:2977] CHIP:DMG: } + [1657912064.296660][2977:2977] CHIP:DMG: + [1657912064.296694][2977:2977] CHIP:DMG: ], + [1657912064.296729][2977:2977] CHIP:DMG: + [1657912064.296774][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657912064.296808][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657912064.296837][2977:2977] CHIP:DMG: }, + [1657912064.296942][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657912064.297059][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657912064.297109][2977:2977] CHIP:DMG: Cluster 300, Attribute 4000 is dirty + [1657912064.297136][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_4000 (expanded=0) + [1657912064.297171][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657912064.297210][2977:2977] CHIP:DMG: AccessControl: allowed + [1657912064.297288][2977:2977] CHIP:DMG: Sending report (payload has 38 bytes)... disabled: true - label: "DUT sends MoveEnhanced Hue command to TH" @@ -80,39 +101,39 @@ tests: verification: | ./chip-tool colorcontrol enhanced-move-hue 0 100 0 0 1 1 - verify on Reference app receives the right response for the data sent in the above commands - - [1657100446.581854][4307:4312] CHIP:DMG: InvokeResponseMessage = - [1657100446.581878][4307:4312] CHIP:DMG: { - [1657100446.581902][4307:4312] CHIP:DMG: suppressResponse = false, - [1657100446.581927][4307:4312] CHIP:DMG: InvokeResponseIBs = - [1657100446.581957][4307:4312] CHIP:DMG: [ - [1657100446.581981][4307:4312] CHIP:DMG: InvokeResponseIB = - [1657100446.582013][4307:4312] CHIP:DMG: { - [1657100446.582038][4307:4312] CHIP:DMG: CommandStatusIB = - [1657100446.582069][4307:4312] CHIP:DMG: { - [1657100446.582097][4307:4312] CHIP:DMG: CommandPathIB = - [1657100446.582133][4307:4312] CHIP:DMG: { - [1657100446.582166][4307:4312] CHIP:DMG: EndpointId = 0x1, - [1657100446.582201][4307:4312] CHIP:DMG: ClusterId = 0x300, - [1657100446.582235][4307:4312] CHIP:DMG: CommandId = 0x41, - [1657100446.582267][4307:4312] CHIP:DMG: }, - [1657100446.582302][4307:4312] CHIP:DMG: - [1657100446.582331][4307:4312] CHIP:DMG: StatusIB = - [1657100446.582364][4307:4312] CHIP:DMG: { - [1657100446.582434][4307:4312] CHIP:DMG: status = 0x00 (SUCCESS), - [1657100446.582466][4307:4312] CHIP:DMG: }, - [1657100446.582498][4307:4312] CHIP:DMG: - [1657100446.582527][4307:4312] CHIP:DMG: }, - [1657100446.582559][4307:4312] CHIP:DMG: - [1657100446.582584][4307:4312] CHIP:DMG: }, - [1657100446.582613][4307:4312] CHIP:DMG: - [1657100446.582636][4307:4312] CHIP:DMG: ], - [1657100446.582664][4307:4312] CHIP:DMG: - [1657100446.582687][4307:4312] CHIP:DMG: InteractionModelRevision = 1 - [1657100446.582710][4307:4312] CHIP:DMG: }, - [1657100446.582768][4307:4312] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0041 Status=0x0 - [1657100446.582808][4307:4312] CHIP:DMG: ICR moving to [AwaitingDe] + Verify in DUT as client side log: + + [1657912085.345044][2977:2977] CHIP:DMG: InvokeRequestMessage = + [1657912085.345072][2977:2977] CHIP:DMG: { + [1657912085.345094][2977:2977] CHIP:DMG: suppressResponse = false, + [1657912085.345120][2977:2977] CHIP:DMG: timedRequest = false, + [1657912085.345144][2977:2977] CHIP:DMG: InvokeRequests = + [1657912085.345175][2977:2977] CHIP:DMG: [ + [1657912085.345199][2977:2977] CHIP:DMG: CommandDataIB = + [1657912085.345228][2977:2977] CHIP:DMG: { + [1657912085.345256][2977:2977] CHIP:DMG: CommandPathIB = + [1657912085.345290][2977:2977] CHIP:DMG: { + [1657912085.345320][2977:2977] CHIP:DMG: EndpointId = 0x1, + [1657912085.345355][2977:2977] CHIP:DMG: ClusterId = 0x300, + [1657912085.345388][2977:2977] CHIP:DMG: CommandId = 0x41, + [1657912085.345418][2977:2977] CHIP:DMG: }, + [1657912085.345451][2977:2977] CHIP:DMG: + [1657912085.345479][2977:2977] CHIP:DMG: CommandFields = + [1657912085.345510][2977:2977] CHIP:DMG: { + [1657912085.345542][2977:2977] CHIP:DMG: 0x0 = 0, + [1657912085.345574][2977:2977] CHIP:DMG: 0x1 = 100, + [1657912085.345607][2977:2977] CHIP:DMG: 0x2 = 0, + [1657912085.345639][2977:2977] CHIP:DMG: 0x3 = 0, + [1657912085.345671][2977:2977] CHIP:DMG: }, + [1657912085.345698][2977:2977] CHIP:DMG: }, + [1657912085.345730][2977:2977] CHIP:DMG: + [1657912085.345753][2977:2977] CHIP:DMG: ], + [1657912085.345784][2977:2977] CHIP:DMG: + [1657912085.345807][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657912085.345829][2977:2977] CHIP:DMG: }, + [1657912085.345899][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=o + [1657912085.345935][2977:2977] CHIP:DMG: AccessControl: allowed + [1657912085.345962][2977:2977] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0041 disabled: true - label: "DUT reads CurrentEnhanced Hue attribute from TH several Times." @@ -120,10 +141,31 @@ tests: verification: | ./chip-tool colorcontrol read enhanced-current-hue 1 1 - verify on Reference app receives the right response for the data sent in the above commands - - [1657100425.785217][4301:4306] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_4000 DataVersion: 1806824664 - [1657100425.785286][4301:4306] CHIP:TOO: EnhancedCurrentHue: 1000 + Verify in DUT as client side log: + [1657912064.296156][2977:2977] CHIP:IM: Received Read request + [1657912064.296261][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657912064.296295][2977:2977] CHIP:DMG: { + [1657912064.296322][2977:2977] CHIP:DMG: AttributePathIBs = + [1657912064.296378][2977:2977] CHIP:DMG: [ + [1657912064.296409][2977:2977] CHIP:DMG: AttributePathIB = + [1657912064.296448][2977:2977] CHIP:DMG: { + [1657912064.296497][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657912064.296538][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657912064.296578][2977:2977] CHIP:DMG: Attribute = 0x0000_4000, + [1657912064.296621][2977:2977] CHIP:DMG: } + [1657912064.296660][2977:2977] CHIP:DMG: + [1657912064.296694][2977:2977] CHIP:DMG: ], + [1657912064.296729][2977:2977] CHIP:DMG: + [1657912064.296774][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657912064.296808][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657912064.296837][2977:2977] CHIP:DMG: }, + [1657912064.296942][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657912064.297059][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657912064.297109][2977:2977] CHIP:DMG: Cluster 300, Attribute 4000 is dirty + [1657912064.297136][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_4000 (expanded=0) + [1657912064.297171][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657912064.297210][2977:2977] CHIP:DMG: AccessControl: allowed + [1657912064.297288][2977:2977] CHIP:DMG: Sending report (payload has 38 bytes)... disabled: true - label: "DUT sends StepEnhanced Hue command to TH" @@ -131,39 +173,39 @@ tests: verification: | ./chip-tool colorcontrol enhanced-step-hue 1 1000 200 0 0 1 1 - verify on Reference app receives the right response for the data sent in the above commands - - [1657100579.604087][4383:4388] CHIP:DMG: InvokeResponseMessage = - [1657100579.604116][4383:4388] CHIP:DMG: { - [1657100579.604145][4383:4388] CHIP:DMG: suppressResponse = false, - [1657100579.604173][4383:4388] CHIP:DMG: InvokeResponseIBs = - [1657100579.604209][4383:4388] CHIP:DMG: [ - [1657100579.604237][4383:4388] CHIP:DMG: InvokeResponseIB = - [1657100579.604274][4383:4388] CHIP:DMG: { - [1657100579.604303][4383:4388] CHIP:DMG: CommandStatusIB = - [1657100579.604356][4383:4388] CHIP:DMG: { - [1657100579.604396][4383:4388] CHIP:DMG: CommandPathIB = - [1657100579.604437][4383:4388] CHIP:DMG: { - [1657100579.604477][4383:4388] CHIP:DMG: EndpointId = 0x1, - [1657100579.604517][4383:4388] CHIP:DMG: ClusterId = 0x300, - [1657100579.604556][4383:4388] CHIP:DMG: CommandId = 0x42, - [1657100579.604593][4383:4388] CHIP:DMG: }, - [1657100579.604635][4383:4388] CHIP:DMG: - [1657100579.604669][4383:4388] CHIP:DMG: StatusIB = - [1657100579.604708][4383:4388] CHIP:DMG: { - [1657100579.604749][4383:4388] CHIP:DMG: status = 0x00 (SUCCESS), - [1657100579.604787][4383:4388] CHIP:DMG: }, - [1657100579.604824][4383:4388] CHIP:DMG: - [1657100579.604858][4383:4388] CHIP:DMG: }, - [1657100579.604896][4383:4388] CHIP:DMG: - [1657100579.604924][4383:4388] CHIP:DMG: }, - [1657100579.604958][4383:4388] CHIP:DMG: - [1657100579.604985][4383:4388] CHIP:DMG: ], - [1657100579.605018][4383:4388] CHIP:DMG: - [1657100579.605045][4383:4388] CHIP:DMG: InteractionModelRevision = 1 - [1657100579.605071][4383:4388] CHIP:DMG: }, - [1657100579.605137][4383:4388] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0042 Status=0x0 - [1657100579.605184][4383:4388] CHIP:DMG: ICR moving to [AwaitingDe] + Verify in DUT as client side log: + [1657912123.677693][2977:2977] CHIP:DMG: InvokeRequestMessage = + [1657912123.677720][2977:2977] CHIP:DMG: { + [1657912123.677742][2977:2977] CHIP:DMG: suppressResponse = false, + [1657912123.677769][2977:2977] CHIP:DMG: timedRequest = false, + [1657912123.677802][2977:2977] CHIP:DMG: InvokeRequests = + [1657912123.677836][2977:2977] CHIP:DMG: [ + [1657912123.677860][2977:2977] CHIP:DMG: CommandDataIB = + [1657912123.677901][2977:2977] CHIP:DMG: { + [1657912123.677926][2977:2977] CHIP:DMG: CommandPathIB = + [1657912123.677957][2977:2977] CHIP:DMG: { + [1657912123.677996][2977:2977] CHIP:DMG: EndpointId = 0x1, + [1657912123.678030][2977:2977] CHIP:DMG: ClusterId = 0x300, + [1657912123.678061][2977:2977] CHIP:DMG: CommandId = 0x42, + [1657912123.678097][2977:2977] CHIP:DMG: }, + [1657912123.678130][2977:2977] CHIP:DMG: + [1657912123.678158][2977:2977] CHIP:DMG: CommandFields = + [1657912123.678188][2977:2977] CHIP:DMG: { + [1657912123.678229][2977:2977] CHIP:DMG: 0x0 = 1, + [1657912123.678304][2977:2977] CHIP:DMG: 0x1 = 1000, + [1657912123.678339][2977:2977] CHIP:DMG: 0x2 = 200, + [1657912123.678372][2977:2977] CHIP:DMG: 0x3 = 0, + [1657912123.678413][2977:2977] CHIP:DMG: 0x4 = 0, + [1657912123.678443][2977:2977] CHIP:DMG: }, + [1657912123.678484][2977:2977] CHIP:DMG: }, + [1657912123.678515][2977:2977] CHIP:DMG: + [1657912123.678538][2977:2977] CHIP:DMG: ], + [1657912123.678578][2977:2977] CHIP:DMG: + [1657912123.678602][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657912123.678625][2977:2977] CHIP:DMG: }, + [1657912123.678704][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=o + [1657912123.678741][2977:2977] CHIP:DMG: AccessControl: allowed + [1657912123.678778][2977:2977] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0042 disabled: true - label: @@ -172,22 +214,70 @@ tests: verification: | ./chip-tool colorcontrol read enhanced-current-hue 1 1 - verify on Reference app receives the right response for the data sent in the above commands - - [1657100597.877581][4390:4396] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_4000 DataVersion: 1806826991 - [1657100597.877653][4390:4396] CHIP:TOO: EnhancedCurrentHue: 1905 + Verify in DUT as client side log: + [1657912064.296156][2977:2977] CHIP:IM: Received Read request + [1657912064.296261][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657912064.296295][2977:2977] CHIP:DMG: { + [1657912064.296322][2977:2977] CHIP:DMG: AttributePathIBs = + [1657912064.296378][2977:2977] CHIP:DMG: [ + [1657912064.296409][2977:2977] CHIP:DMG: AttributePathIB = + [1657912064.296448][2977:2977] CHIP:DMG: { + [1657912064.296497][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657912064.296538][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657912064.296578][2977:2977] CHIP:DMG: Attribute = 0x0000_4000, + [1657912064.296621][2977:2977] CHIP:DMG: } + [1657912064.296660][2977:2977] CHIP:DMG: + [1657912064.296694][2977:2977] CHIP:DMG: ], + [1657912064.296729][2977:2977] CHIP:DMG: + [1657912064.296774][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657912064.296808][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657912064.296837][2977:2977] CHIP:DMG: }, + [1657912064.296942][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657912064.297059][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657912064.297109][2977:2977] CHIP:DMG: Cluster 300, Attribute 4000 is dirty + [1657912064.297136][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_4000 (expanded=0) + [1657912064.297171][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657912064.297210][2977:2977] CHIP:DMG: AccessControl: allowed + [1657912064.297288][2977:2977] CHIP:DMG: Sending report (payload has 38 bytes)... disabled: true - label: "DUT sends EnhancedMoveToHueAndSaturation command to TH." PICS: CC.C.C43.Rsp verification: | ./chip-tool colorcontrol enhanced-move-to-hue-and-saturation 2500 100 200 0 0 1 1 - verify on Reference app receives the right response for the data sent in the above commands - - [1649667723.974929][9413:9418] CHIP:DMG: StatusIB = - [1649667723.974986][9413:9418] CHIP:DMG: { - [1649667723.975047][9413:9418] CHIP:DMG: status = 0x00 (SUCCESS), - [1649667723.975096][9413:9418] CHIP:DMG: }, + Verify in DUT as client side log: + [1657912153.500024][2977:2977] CHIP:DMG: InvokeRequestMessage = + [1657912153.500080][2977:2977] CHIP:DMG: { + [1657912153.500108][2977:2977] CHIP:DMG: suppressResponse = false, + [1657912153.500139][2977:2977] CHIP:DMG: timedRequest = false, + [1657912153.500180][2977:2977] CHIP:DMG: InvokeRequests = + [1657912153.500217][2977:2977] CHIP:DMG: [ + [1657912153.500244][2977:2977] CHIP:DMG: CommandDataIB = + [1657912153.500288][2977:2977] CHIP:DMG: { + [1657912153.500317][2977:2977] CHIP:DMG: CommandPathIB = + [1657912153.500352][2977:2977] CHIP:DMG: { + [1657912153.500398][2977:2977] CHIP:DMG: EndpointId = 0x1, + [1657912153.500437][2977:2977] CHIP:DMG: ClusterId = 0x300, + [1657912153.500472][2977:2977] CHIP:DMG: CommandId = 0x43, + [1657912153.500512][2977:2977] CHIP:DMG: }, + [1657912153.500550][2977:2977] CHIP:DMG: + [1657912153.500579][2977:2977] CHIP:DMG: CommandFields = + [1657912153.500610][2977:2977] CHIP:DMG: { + [1657912153.500656][2977:2977] CHIP:DMG: 0x0 = 2500, + [1657912153.500694][2977:2977] CHIP:DMG: 0x1 = 100, + [1657912153.500731][2977:2977] CHIP:DMG: 0x2 = 200, + [1657912153.500779][2977:2977] CHIP:DMG: 0x3 = 0, + [1657912153.500815][2977:2977] CHIP:DMG: 0x4 = 0, + [1657912153.500861][2977:2977] CHIP:DMG: }, + [1657912153.500893][2977:2977] CHIP:DMG: }, + [1657912153.500928][2977:2977] CHIP:DMG: + [1657912153.500964][2977:2977] CHIP:DMG: ], + [1657912153.501001][2977:2977] CHIP:DMG: + [1657912153.501028][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657912153.501054][2977:2977] CHIP:DMG: }, + [1657912153.501143][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=o + [1657912153.501195][2977:2977] CHIP:DMG: AccessControl: allowed + [1657912153.501227][2977:2977] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0043 disabled: true - label: @@ -196,10 +286,31 @@ tests: verification: | ./chip-tool colorcontrol read enhanced-current-hue 1 1 - verify on Reference app receives the right response for the data sent in the above commands - - [1657100626.671635][4405:4410] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_4000 DataVersion: 1806827373 - [1657100626.671707][4405:4410] CHIP:TOO: EnhancedCurrentHue: 2153 + Verify in DUT as client side log: + [1657912064.296156][2977:2977] CHIP:IM: Received Read request + [1657912064.296261][2977:2977] CHIP:DMG: ReadRequestMessage = + [1657912064.296295][2977:2977] CHIP:DMG: { + [1657912064.296322][2977:2977] CHIP:DMG: AttributePathIBs = + [1657912064.296378][2977:2977] CHIP:DMG: [ + [1657912064.296409][2977:2977] CHIP:DMG: AttributePathIB = + [1657912064.296448][2977:2977] CHIP:DMG: { + [1657912064.296497][2977:2977] CHIP:DMG: Endpoint = 0x1, + [1657912064.296538][2977:2977] CHIP:DMG: Cluster = 0x300, + [1657912064.296578][2977:2977] CHIP:DMG: Attribute = 0x0000_4000, + [1657912064.296621][2977:2977] CHIP:DMG: } + [1657912064.296660][2977:2977] CHIP:DMG: + [1657912064.296694][2977:2977] CHIP:DMG: ], + [1657912064.296729][2977:2977] CHIP:DMG: + [1657912064.296774][2977:2977] CHIP:DMG: isFabricFiltered = true, + [1657912064.296808][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657912064.296837][2977:2977] CHIP:DMG: }, + [1657912064.296942][2977:2977] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657912064.297059][2977:2977] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657912064.297109][2977:2977] CHIP:DMG: Cluster 300, Attribute 4000 is dirty + [1657912064.297136][2977:2977] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_4000 (expanded=0) + [1657912064.297171][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657912064.297210][2977:2977] CHIP:DMG: AccessControl: allowed + [1657912064.297288][2977:2977] CHIP:DMG: Sending report (payload has 38 bytes)... disabled: true - label: "DUT sends StopMoveStep command to TH." @@ -207,37 +318,34 @@ tests: verification: | ./chip-tool colorcontrol stop-move-step 0 0 1 1 - verify on Reference app receives the right response for the data sent in the above commands - - [1657100646.786860][4412:4417] CHIP:DMG: InvokeResponseMessage = - [1657100646.786904][4412:4417] CHIP:DMG: { - [1657100646.786948][4412:4417] CHIP:DMG: suppressResponse = false, - [1657100646.786993][4412:4417] CHIP:DMG: InvokeResponseIBs = - [1657100646.787048][4412:4417] CHIP:DMG: [ - [1657100646.787092][4412:4417] CHIP:DMG: InvokeResponseIB = - [1657100646.787150][4412:4417] CHIP:DMG: { - [1657100646.787197][4412:4417] CHIP:DMG: CommandStatusIB = - [1657100646.787261][4412:4417] CHIP:DMG: { - [1657100646.787315][4412:4417] CHIP:DMG: CommandPathIB = - [1657100646.787376][4412:4417] CHIP:DMG: { - [1657100646.787438][4412:4417] CHIP:DMG: EndpointId = 0x1, - [1657100646.787502][4412:4417] CHIP:DMG: ClusterId = 0x300, - [1657100646.787565][4412:4417] CHIP:DMG: CommandId = 0x47, - [1657100646.787625][4412:4417] CHIP:DMG: }, - [1657100646.787691][4412:4417] CHIP:DMG: - [1657100646.787744][4412:4417] CHIP:DMG: StatusIB = - [1657100646.787804][4412:4417] CHIP:DMG: { - [1657100646.787854][4412:4417] CHIP:DMG: status = 0x00 (SUCCESS), - [1657100646.787894][4412:4417] CHIP:DMG: }, - [1657100646.787934][4412:4417] CHIP:DMG: - [1657100646.787974][4412:4417] CHIP:DMG: }, - [1657100646.788021][4412:4417] CHIP:DMG: - [1657100646.788056][4412:4417] CHIP:DMG: }, - [1657100646.788093][4412:4417] CHIP:DMG: - [1657100646.788121][4412:4417] CHIP:DMG: ], - [1657100646.788157][4412:4417] CHIP:DMG: - [1657100646.788186][4412:4417] CHIP:DMG: InteractionModelRevision = 1 - [1657100646.788214][4412:4417] CHIP:DMG: }, - [1657100646.788283][4412:4417] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0047 Status=0x0 - [1657100646.788331][4412:4417] CHIP:DMG: ICR moving to [AwaitingDe] + Verify in DUT as client side log: + [1657912172.988756][2977:2977] CHIP:DMG: InvokeRequestMessage = + [1657912172.988782][2977:2977] CHIP:DMG: { + [1657912172.988805][2977:2977] CHIP:DMG: suppressResponse = false, + [1657912172.988840][2977:2977] CHIP:DMG: timedRequest = false, + [1657912172.988864][2977:2977] CHIP:DMG: InvokeRequests = + [1657912172.988895][2977:2977] CHIP:DMG: [ + [1657912172.988919][2977:2977] CHIP:DMG: CommandDataIB = + [1657912172.988957][2977:2977] CHIP:DMG: { + [1657912172.988982][2977:2977] CHIP:DMG: CommandPathIB = + [1657912172.989014][2977:2977] CHIP:DMG: { + [1657912172.989054][2977:2977] CHIP:DMG: EndpointId = 0x1, + [1657912172.989088][2977:2977] CHIP:DMG: ClusterId = 0x300, + [1657912172.989120][2977:2977] CHIP:DMG: CommandId = 0x47, + [1657912172.989161][2977:2977] CHIP:DMG: }, + [1657912172.989193][2977:2977] CHIP:DMG: + [1657912172.989221][2977:2977] CHIP:DMG: CommandFields = + [1657912172.989250][2977:2977] CHIP:DMG: { + [1657912172.989290][2977:2977] CHIP:DMG: 0x0 = 0, + [1657912172.989323][2977:2977] CHIP:DMG: 0x1 = 0, + [1657912172.989354][2977:2977] CHIP:DMG: }, + [1657912172.989390][2977:2977] CHIP:DMG: }, + [1657912172.989420][2977:2977] CHIP:DMG: + [1657912172.989443][2977:2977] CHIP:DMG: ], + [1657912172.989483][2977:2977] CHIP:DMG: + [1657912172.989508][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657912172.989530][2977:2977] CHIP:DMG: }, + [1657912172.989608][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=o + [1657912172.989646][2977:2977] CHIP:DMG: AccessControl: allowed + [1657912172.989682][2977:2977] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0047 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CC_8_1.yaml b/src/app/tests/suites/certification/Test_TC_CC_8_1.yaml index 9a97a89609648d..d05d0a49ed19d7 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_8_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_8_1.yaml @@ -39,7 +39,7 @@ tests: response: value: 1 - - label: "Move hue up command" + - label: "TH sends MoveHue command to DUT" PICS: CC.S.C01.Rsp command: "MoveHue" arguments: @@ -53,7 +53,7 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Reads CurrentHue attribute from DUT" + - label: "TH reads CurrentHue attribute from DUT" PICS: CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" @@ -63,7 +63,7 @@ tests: minValue: 0 maxValue: 254 - - label: "Stop Move Step command" + - label: "TH sends StopMoveStep command to DUT" PICS: CC.S.C47.Rsp command: "StopMoveStep" arguments: @@ -73,11 +73,12 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Reads CurrentHue attribute from DUT" + - label: "TH reads CurrentHue attribute from DUT" PICS: CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: + saveAs: CurrentHueValue constraints: type: uint8 minValue: 0 @@ -91,19 +92,18 @@ tests: - name: "ms" value: 100 - - label: - "Check current hue attribute value matched the value sent by the last - attribute" + - label: "TH reads CurrentHue attribute from DUT" PICS: CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" response: + value: CurrentHueValue constraints: type: uint8 minValue: 0 maxValue: 254 - - label: "Move saturation up command" + - label: "TH sends MoveSaturation command to DUT" PICS: CC.S.C04.Rsp command: "MoveSaturation" arguments: @@ -117,9 +117,7 @@ tests: - name: "OptionsOverride" value: 0 - - label: - "Check Saturation attribute value matched the value sent by the last - command" + - label: "TH reads CurrentSaturation attribute from DUT" PICS: CC.S.A0001 command: "readAttribute" attribute: "CurrentSaturation" @@ -129,7 +127,7 @@ tests: minValue: 0 maxValue: 254 - - label: "Stop Move Step command" + - label: "TH sends StopMoveStep command to DUT" PICS: CC.S.C47.Rsp command: "StopMoveStep" arguments: @@ -139,11 +137,12 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Reads CurrentSaturation attribute from DUT." + - label: "TH reads CurrentSaturation attribute from DUT" command: "readAttribute" PICS: CC.S.A0001 attribute: "CurrentSaturation" response: + saveAs: CurrentSaturationValue constraints: type: uint8 minValue: 0 @@ -157,19 +156,18 @@ tests: - name: "ms" value: 100 - - label: - "Check Saturation attribute value matched the value sent by the last - attribute" + - label: "TH reads CurrentSaturation attribute from DUT" PICS: CC.S.A0001 command: "readAttribute" attribute: "CurrentSaturation" response: + value: CurrentSaturationValue constraints: type: uint8 minValue: 0 maxValue: 254 - - label: "Move Color command" + - label: "TH sends MoveColor command to DUT" PICS: CC.S.C08.Rsp command: "MoveColor" arguments: @@ -183,7 +181,7 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Reads CurrentX attribute from DUT" + - label: "TH reads CurrentX attribute from DUT" PICS: CC.S.A0003 command: "readAttribute" attribute: "CurrentX" @@ -193,7 +191,7 @@ tests: minValue: 0 maxValue: 65279 - - label: "Reads CurrentY attribute from DUT" + - label: "TH reads CurrentY attribute from DUT" PICS: CC.S.A0004 command: "readAttribute" attribute: "CurrentY" @@ -203,7 +201,7 @@ tests: minValue: 0 maxValue: 65279 - - label: "Stop Move Step command" + - label: "TH sends StopMoveStep command to DUT" PICS: CC.S.C47.Rsp command: "StopMoveStep" arguments: @@ -213,21 +211,23 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Reads CurrentX attribute from DUT" + - label: "TH reads CurrentX attribute from DUT" PICS: CC.S.A0003 command: "readAttribute" attribute: "CurrentX" response: + saveAs: CurrentXValue constraints: type: uint16 minValue: 0 maxValue: 65279 - - label: "Reads CurrentY attribute from DUT" + - label: "TH reads CurrentY attribute from DUT" PICS: CC.S.A0004 command: "readAttribute" attribute: "CurrentY" response: + saveAs: CurrentYValue constraints: type: uint16 minValue: 0 @@ -241,31 +241,29 @@ tests: - name: "ms" value: 100 - - label: - "Check current x attribute value matched the value sent by the last - attribute" + - label: "TH reads CurrentY attribute from DUT" PICS: CC.S.A0003 command: "readAttribute" attribute: "CurrentX" response: + value: CurrentXValue constraints: type: uint16 minValue: 0 maxValue: 65279 - - label: - "Check current y attribute value matched the value sent by the last - attribute" + - label: "TH reads CurrentY attribute from DUT" PICS: CC.S.A0004 command: "readAttribute" attribute: "CurrentY" response: + value: CurrentYValue constraints: type: uint16 minValue: 0 maxValue: 65279 - - label: "Move up color temperature command" + - label: "TH sends MoveColorTemperature command to DUT" PICS: CC.S.C4B.Rsp command: "MoveColorTemperature" arguments: @@ -283,7 +281,7 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Reads current color temprature from DUT" + - label: "TH reads ColorTemperatureMireds attribute from DUT" PICS: CC.S.A0007 command: "readAttribute" attribute: "ColorTemperature" @@ -293,7 +291,7 @@ tests: minValue: 0 maxValue: 65279 - - label: "Stop Move Step command" + - label: "TH sends StopMoveStep command to DUT" PICS: CC.S.C47.Rsp command: "StopMoveStep" arguments: @@ -303,11 +301,12 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Reads current color temprature from DUT" + - label: "TH reads ColorTemperatureMireds attribute from DUT" PICS: CC.S.A0007 command: "readAttribute" attribute: "ColorTemperature" response: + saveAs: ColorTemperatureMiredsValue constraints: type: uint16 minValue: 0 @@ -328,12 +327,13 @@ tests: command: "readAttribute" attribute: "ColorTemperature" response: + value: ColorTemperatureMiredsValue constraints: type: uint16 minValue: 0 maxValue: 65279 - - label: "Enhanced Move Hue Up command" + - label: "TH sends EnhancedMoveHue command to DUT." PICS: CC.S.C41.Rsp command: "EnhancedMoveHue" arguments: @@ -347,7 +347,7 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Reads EnhancedCurrentHue attribute value from DUT" + - label: "TH reads EnhancedCurrentHue attribute from DUT" PICS: CC.S.A4000 command: "readAttribute" attribute: "EnhancedCurrentHue" @@ -357,7 +357,7 @@ tests: minValue: 0 maxValue: 65535 - - label: "Stop Move Step command" + - label: "TH sends StopMoveStep command to DUT" PICS: CC.S.C47.Rsp command: "StopMoveStep" arguments: @@ -367,11 +367,12 @@ tests: - name: "OptionsOverride" value: 0 - - label: "Reads EnhancedCurrentHue attribute value from DUT" + - label: "TH reads EnhancedCurrentHue attribute from DUT" PICS: CC.S.A4000 command: "readAttribute" attribute: "EnhancedCurrentHue" response: + saveAs: EnhancedCurrentHueValue constraints: type: uint16 minValue: 0 @@ -385,13 +386,12 @@ tests: - name: "ms" value: 100 - - label: - "Check EnhancedCurrentHue attribute value matched the value sent by - the last attribute" + - label: "TH reads EnhancedCurrentHue attribute from DUT" PICS: CC.S.A4000 command: "readAttribute" attribute: "EnhancedCurrentHue" response: + value: EnhancedCurrentHueValue constraints: type: uint16 minValue: 0 diff --git a/src/app/tests/suites/certification/Test_TC_CC_9_1.yaml b/src/app/tests/suites/certification/Test_TC_CC_9_1.yaml index 1c3a6386fc99e9..30ab329b518a5f 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_9_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_9_1.yaml @@ -222,7 +222,7 @@ tests: attribute: "ColorLoopStartEnhancedHue" PICS: CC.S.A4005 response: - saveAs: ColorLoopStartEnhancedHue + saveAs: ColorLoopStartEnhancedHueStep5d - label: "Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" @@ -231,7 +231,7 @@ tests: response: constraints: type: uint16 - minValue: ColorLoopStartEnhancedHue + minValue: ColorLoopStartEnhancedHueStep5d maxValue: 65535 - label: "Wait for 30S" @@ -249,7 +249,7 @@ tests: response: constraints: type: uint16 - minValue: ColorLoopStartEnhancedHue + minValue: ColorLoopStartEnhancedHueStep5d maxValue: 65535 - label: "Sends ColorLoopSet Command - Set all Attributes" @@ -284,14 +284,14 @@ tests: attribute: "ColorLoopStoredEnhancedHue" PICS: CC.S.A4006 response: - saveAs: ColorLoopStoredEnhancedHueValue1 + saveAs: ColorLoopStoredEnhancedHueStep6c - label: "Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" attribute: "EnhancedCurrentHue" PICS: CC.S.A4000 response: - value: ColorLoopStoredEnhancedHueValue1 + value: ColorLoopStoredEnhancedHueStep6c - label: "Sends ColorLoopSet Command - Set all Attributes" command: "ColorLoopSet" @@ -367,7 +367,7 @@ tests: attribute: "ColorLoopStartEnhancedHue" PICS: CC.S.A4005 response: - saveAs: ColorLoopStartEnhancedHue2 + saveAs: ColorLoopStartEnhancedHueStep8d - label: "Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" @@ -376,7 +376,7 @@ tests: response: constraints: type: uint16 - minValue: ColorLoopStartEnhancedHue2 + minValue: ColorLoopStartEnhancedHueStep8d maxValue: 65535 - label: "Wait for 30S" @@ -394,7 +394,7 @@ tests: response: constraints: type: uint16 - minValue: ColorLoopStartEnhancedHue2 + minValue: ColorLoopStartEnhancedHueStep8d maxValue: 65535 - label: "Sends ColorLoopSet Command - Set all Attributes" @@ -429,14 +429,14 @@ tests: attribute: "ColorLoopStoredEnhancedHue" PICS: CC.S.A4006 response: - saveAs: ColorLoopStoredEnhancedHueValue2 + saveAs: ColorLoopStoredEnhancedHueStep9c - label: "Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" attribute: "EnhancedCurrentHue" PICS: CC.S.A4000 response: - value: ColorLoopStoredEnhancedHueValue2 + value: ColorLoopStoredEnhancedHueStep9c - label: "Enhanced Move To Hue command" command: "EnhancedMoveToHue" @@ -543,7 +543,7 @@ tests: attribute: "ColorLoopStartEnhancedHue" PICS: CC.S.A4005 response: - saveAs: ColorLoopStartEnhancedHue3 + saveAs: ColorLoopStartEnhancedHueStep12d - label: "Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" @@ -552,7 +552,7 @@ tests: response: constraints: type: uint16 - minValue: ColorLoopStartEnhancedHue3 + minValue: ColorLoopStartEnhancedHueStep12d maxValue: 65535 - label: "Wait for 30S" @@ -570,7 +570,7 @@ tests: response: constraints: type: uint16 - minValue: ColorLoopStartEnhancedHue3 + minValue: ColorLoopStartEnhancedHueStep12d maxValue: 65535 - label: "Sends ColorLoopSet Command - Set all Attributes" @@ -605,14 +605,14 @@ tests: attribute: "ColorLoopStoredEnhancedHue" PICS: CC.S.A4006 response: - saveAs: ColorLoopStoredEnhancedHueValue3 + saveAs: ColorLoopStoredEnhancedHueStep13c - label: "Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" attribute: "EnhancedCurrentHue" PICS: CC.S.A4000 response: - value: ColorLoopStoredEnhancedHueValue3 + value: ColorLoopStoredEnhancedHueStep13c - label: "Sends ColorLoopSet Command - Set all Attributes" command: "ColorLoopSet" @@ -688,7 +688,7 @@ tests: attribute: "ColorLoopStartEnhancedHue" PICS: CC.S.A4005 response: - saveAs: ColorLoopStartEnhancedHue4 + saveAs: ColorLoopStartEnhancedHueStep15d - label: "Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" @@ -697,7 +697,7 @@ tests: response: constraints: type: uint16 - minValue: ColorLoopStartEnhancedHue3 + minValue: ColorLoopStartEnhancedHueStep15d maxValue: 65535 - label: "Wait for 30S" @@ -715,7 +715,7 @@ tests: response: constraints: type: uint16 - minValue: ColorLoopStartEnhancedHue4 + minValue: ColorLoopStartEnhancedHueStep15d maxValue: 65535 - label: "Sends ColorLoopSet Command - Set all Attributes" @@ -750,14 +750,14 @@ tests: attribute: "ColorLoopStoredEnhancedHue" PICS: CC.S.A4006 response: - saveAs: ColorLoopStoredEnhancedHue4 + saveAs: ColorLoopStoredEnhancedHueStep16b - label: "Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" attribute: "EnhancedCurrentHue" PICS: CC.S.A4000 response: - value: ColorLoopStoredEnhancedHue4 + value: ColorLoopStoredEnhancedHueStep16b - label: "Turn Off light for color control tests" cluster: "On/Off" diff --git a/src/app/tests/suites/certification/Test_TC_CC_9_2.yaml b/src/app/tests/suites/certification/Test_TC_CC_9_2.yaml index 6677f80a07296c..2ec011abdabfca 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_9_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_9_2.yaml @@ -46,7 +46,7 @@ tests: "Precondition : Set DUT EnhancedCurrentHue to 0x4000 using EnhancedMoveToHue command" command: "EnhancedMoveToHue" - PICS: CC.S.C40.Rsp + PICS: CC.S.F01 && CC.S.F02 && CC.S.C40.Rsp arguments: values: - name: "enhancedHue" @@ -70,7 +70,7 @@ tests: - label: "Sends ColorLoopSet Command - Set all Attributes" command: "ColorLoopSet" - PICS: CC.S.C44.Rsp + PICS: CC.S.F01 && CC.S.F02 && CC.S.C44.Rsp arguments: values: - name: "updateFlags" @@ -91,34 +91,34 @@ tests: - label: "Read ColorLoopActive attribute from DUT" command: "readAttribute" attribute: "ColorLoopActive" - PICS: CC.S.A4002 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4002 response: value: 0 - label: "Read ColorLoopDirection attribute from DUT." command: "readAttribute" attribute: "ColorLoopDirection" - PICS: CC.S.A4003 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4003 response: value: 0 - label: "Read ColorLoopTime attribute from DUT." command: "readAttribute" attribute: "ColorLoopTime" - PICS: CC.S.A4004 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4004 response: value: 30 - label: "Read ColorLoopStartEnhancedHue attribute from DUT." command: "readAttribute" attribute: "ColorLoopStartEnhancedHue" - PICS: CC.S.A4005 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4005 response: value: 160 - label: "Color Loop Set Command - Set all Attributes" command: "ColorLoopSet" - PICS: CC.S.C44.Rsp + PICS: CC.S.F01 && CC.S.F02 && CC.S.C44.Rsp arguments: values: - name: "updateFlags" @@ -139,14 +139,14 @@ tests: - label: "Read ColorLoopActive attribute from DUT." command: "readAttribute" attribute: "ColorLoopActive" - PICS: CC.S.A4002 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4002 response: value: 1 - label: "Read ColorLoopStoredEnhancedHue attribute from DUT." command: "readAttribute" attribute: "ColorLoopStoredEnhancedHue" - PICS: CC.S.A4006 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4006 response: value: 16384 @@ -161,14 +161,14 @@ tests: - label: "Read ColorLoopStartEnhancedHue attribute from DUT." command: "readAttribute" attribute: "ColorLoopStartEnhancedHue" - PICS: CC.S.A4005 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4005 response: saveAs: ColorLoopStartEnhancedHueValue - label: "Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" attribute: "EnhancedCurrentHue" - PICS: CC.S.A4000 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4000 response: constraints: type: uint16 @@ -186,7 +186,7 @@ tests: - label: "Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" attribute: "EnhancedCurrentHue" - PICS: CC.S.A4000 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4000 response: constraints: type: uint16 @@ -195,7 +195,7 @@ tests: - label: "Color Loop Set Command - Start Color Loop" command: "ColorLoopSet" - PICS: CC.S.C44.Rsp + PICS: CC.S.F01 && CC.S.F02 && CC.S.C44.Rsp arguments: values: - name: "updateFlags" @@ -216,7 +216,7 @@ tests: - label: "Read ColorLoopDirection attribute from DUT." command: "readAttribute" attribute: "ColorLoopDirection" - PICS: CC.S.A4003 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4003 response: value: 1 @@ -231,18 +231,18 @@ tests: - label: "Read ColorLoopStartEnhancedHue attribute from DUT." command: "readAttribute" attribute: "ColorLoopStartEnhancedHue" - PICS: CC.S.A4005 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4005 response: - saveAs: ColorLoopStartEnhancedHue1 + saveAs: ColorLoopStartEnhancedHue - label: "Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" attribute: "EnhancedCurrentHue" - PICS: CC.S.A4000 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4000 response: constraints: type: uint16 - minValue: ColorLoopStartEnhancedHue1 + minValue: ColorLoopStartEnhancedHue maxValue: 65535 - label: "Wait for 30S" @@ -256,16 +256,16 @@ tests: - label: "Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" attribute: "EnhancedCurrentHue" - PICS: CC.S.A4000 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4000 response: constraints: type: uint16 - minValue: ColorLoopStartEnhancedHue1 + minValue: ColorLoopStartEnhancedHue maxValue: 65535 - label: "Color Loop Set Command - Start Color Loop" command: "ColorLoopSet" - PICS: CC.S.C44.Rsp + PICS: CC.S.F01 && CC.S.F02 && CC.S.C44.Rsp arguments: values: - name: "updateFlags" @@ -286,13 +286,13 @@ tests: - label: "Read ColorLoopActive attribute from DUT" command: "readAttribute" attribute: "ColorLoopActive" - PICS: CC.S.A4002 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4002 response: value: 0 - label: "Read ColorLoopStoredEnhancedHue attribute from DUT." command: "readAttribute" - PICS: CC.S.A4006 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4006 attribute: "ColorLoopStoredEnhancedHue" response: saveAs: ColorLoopStoredEnhancedHueValue @@ -300,7 +300,7 @@ tests: - label: "Read EnhancedCurrentHue attribute from DUT." command: "readAttribute" attribute: "EnhancedCurrentHue" - PICS: CC.S.A4000 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4000 response: value: ColorLoopStoredEnhancedHueValue diff --git a/src/app/tests/suites/certification/Test_TC_CC_9_3.yaml b/src/app/tests/suites/certification/Test_TC_CC_9_3.yaml index 52c888d5b48644..413036ca4df292 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_9_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_9_3.yaml @@ -45,7 +45,7 @@ tests: "Precondition : Set DUT EnhancedCurrentHue to 0x4000 using EnhancedMoveToHue command" command: "EnhancedMoveToHue" - PICS: CC.S.C40.Rsp + PICS: CC.S.F01 && CC.S.F02 && CC.S.C40.Rsp arguments: values: - name: "enhancedHue" @@ -69,7 +69,7 @@ tests: - label: "Sends ColorLoopSet Command - Set all Attributes" command: "ColorLoopSet" - PICS: CC.S.C44.Rsp + PICS: CC.S.F01 && CC.S.F02 && CC.S.C44.Rsp arguments: values: - name: "updateFlags" @@ -90,34 +90,34 @@ tests: - label: "Read ColorLoopActive attribute from DUT" command: "readAttribute" attribute: "ColorLoopActive" - PICS: CC.S.A4002 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4002 response: value: 0 - label: "Read ColorLoopDirection attribute from DUT." command: "readAttribute" attribute: "ColorLoopDirection" - PICS: CC.S.A4003 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4003 response: value: 0 - label: "Read ColorLoopTime attribute from DUT." command: "readAttribute" attribute: "ColorLoopTime" - PICS: CC.S.A4004 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4004 response: value: 30 - label: "Read ColorLoopStartEnhancedHue attribute from DUT." command: "readAttribute" attribute: "ColorLoopStartEnhancedHue" - PICS: CC.S.A4005 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4005 response: value: 160 - label: "Color Loop Set Command - Set all Attributes" command: "ColorLoopSet" - PICS: CC.S.C44.Rsp + PICS: CC.S.F01 && CC.S.F02 && CC.S.C44.Rsp arguments: values: - name: "updateFlags" @@ -138,14 +138,14 @@ tests: - label: "Read ColorLoopActive attribute from DUT." command: "readAttribute" attribute: "ColorLoopActive" - PICS: CC.S.A4002 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4002 response: value: 1 - label: "Read ColorLoopStoredEnhancedHue attribute from DUT." command: "readAttribute" attribute: "ColorLoopStoredEnhancedHue" - PICS: CC.S.A4006 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4006 response: value: 16384 @@ -160,14 +160,14 @@ tests: - label: "Read ColorLoopStartEnhancedHue attribute from DUT." command: "readAttribute" attribute: "ColorLoopStartEnhancedHue" - PICS: CC.S.A4005 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4005 response: saveAs: ColorLoopStartEnhancedHueValue - label: "Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" attribute: "EnhancedCurrentHue" - PICS: CC.S.A4000 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4000 response: constraints: type: uint16 @@ -185,7 +185,7 @@ tests: - label: "Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" attribute: "EnhancedCurrentHue" - PICS: CC.S.A4000 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4000 response: constraints: type: uint16 @@ -194,7 +194,7 @@ tests: - label: "Color Loop Set Command - Start Color Loop" command: "ColorLoopSet" - PICS: CC.S.C44.Rsp + PICS: CC.S.F01 && CC.S.F02 && CC.S.C44.Rsp arguments: values: - name: "updateFlags" @@ -215,7 +215,7 @@ tests: - label: "Read ColorLoopTime attribute from DUT." command: "readAttribute" attribute: "ColorLoopTime" - PICS: CC.S.A4004 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4004 response: value: 60 @@ -230,7 +230,7 @@ tests: - label: "Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" attribute: "EnhancedCurrentHue" - PICS: CC.S.A4000 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4000 response: constraints: type: uint16 @@ -248,7 +248,7 @@ tests: - label: "Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" attribute: "EnhancedCurrentHue" - PICS: CC.S.A4000 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4000 response: constraints: type: uint16 @@ -257,7 +257,7 @@ tests: - label: "Color Loop Set Command - Start Color Loop" command: "ColorLoopSet" - PICS: CC.S.C44.Rsp + PICS: CC.S.F01 && CC.S.F02 && CC.S.C44.Rsp arguments: values: - name: "updateFlags" @@ -278,21 +278,21 @@ tests: - label: "Read ColorLoopActive attribute from DUT" command: "readAttribute" attribute: "ColorLoopActive" - PICS: CC.S.A4002 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4002 response: value: 0 - label: "Read ColorLoopStoredEnhancedHue attribute from DUT." command: "readAttribute" attribute: "ColorLoopStoredEnhancedHue" - PICS: CC.S.A4006 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4006 response: saveAs: ColorLoopStoredEnhancedHueValue - label: "Read EnhancedCurrentHue attribute from DUT." command: "readAttribute" attribute: "EnhancedCurrentHue" - PICS: CC.S.A4000 + PICS: CC.S.F01 && CC.S.F02 && CC.S.A4000 response: value: ColorLoopStoredEnhancedHueValue diff --git a/src/app/tests/suites/certification/Test_TC_CC_9_4.yaml b/src/app/tests/suites/certification/Test_TC_CC_9_4.yaml index 1a46b564b1b959..d5a01993e3380e 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_9_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_9_4.yaml @@ -25,72 +25,78 @@ tests: verification: | ./chip-tool onoff on 1 1 - [1657100775.227841][4422:4427] CHIP:DMG: InvokeResponseMessage = - [1657100775.227865][4422:4427] CHIP:DMG: { - [1657100775.227889][4422:4427] CHIP:DMG: suppressResponse = false, - [1657100775.227913][4422:4427] CHIP:DMG: InvokeResponseIBs = - [1657100775.227944][4422:4427] CHIP:DMG: [ - [1657100775.227968][4422:4427] CHIP:DMG: InvokeResponseIB = - [1657100775.227999][4422:4427] CHIP:DMG: { - [1657100775.228027][4422:4427] CHIP:DMG: CommandStatusIB = - [1657100775.228059][4422:4427] CHIP:DMG: { - [1657100775.228088][4422:4427] CHIP:DMG: CommandPathIB = - [1657100775.228121][4422:4427] CHIP:DMG: { - [1657100775.228154][4422:4427] CHIP:DMG: EndpointId = 0x1, - [1657100775.228189][4422:4427] CHIP:DMG: ClusterId = 0x6, - [1657100775.228222][4422:4427] CHIP:DMG: CommandId = 0x1, - [1657100775.228254][4422:4427] CHIP:DMG: }, - [1657100775.228289][4422:4427] CHIP:DMG: - [1657100775.228318][4422:4427] CHIP:DMG: StatusIB = - [1657100775.228350][4422:4427] CHIP:DMG: { - [1657100775.228383][4422:4427] CHIP:DMG: status = 0x00 (SUCCESS), - [1657100775.228417][4422:4427] CHIP:DMG: }, - [1657100775.228452][4422:4427] CHIP:DMG: - [1657100775.228482][4422:4427] CHIP:DMG: }, - [1657100775.228513][4422:4427] CHIP:DMG: - [1657100775.228540][4422:4427] CHIP:DMG: }, - [1657100775.228570][4422:4427] CHIP:DMG: - [1657100775.228592][4422:4427] CHIP:DMG: ], - [1657100775.228621][4422:4427] CHIP:DMG: - [1657100775.228645][4422:4427] CHIP:DMG: InteractionModelRevision = 1 - [1657100775.228668][4422:4427] CHIP:DMG: }, - [1657100775.228727][4422:4427] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0006 Command=0x0000_0001 Status=0x0 - [1657100775.228763][4422:4427] CHIP:DMG: ICR moving to [AwaitingDe] + Verify in DUT as client side log: + [1657912254.685769][2977:2977] CHIP:DMG: InvokeRequestMessage = + [1657912254.685812][2977:2977] CHIP:DMG: { + [1657912254.685849][2977:2977] CHIP:DMG: suppressResponse = false, + [1657912254.685891][2977:2977] CHIP:DMG: timedRequest = false, + [1657912254.685945][2977:2977] CHIP:DMG: InvokeRequests = + [1657912254.685994][2977:2977] CHIP:DMG: [ + [1657912254.686033][2977:2977] CHIP:DMG: CommandDataIB = + [1657912254.686097][2977:2977] CHIP:DMG: { + [1657912254.686138][2977:2977] CHIP:DMG: CommandPathIB = + [1657912254.686190][2977:2977] CHIP:DMG: { + [1657912254.686255][2977:2977] CHIP:DMG: EndpointId = 0x1, + [1657912254.686310][2977:2977] CHIP:DMG: ClusterId = 0x6, + [1657912254.686361][2977:2977] CHIP:DMG: CommandId = 0x1, + [1657912254.686424][2977:2977] CHIP:DMG: }, + [1657912254.686480][2977:2977] CHIP:DMG: + [1657912254.686523][2977:2977] CHIP:DMG: CommandFields = + [1657912254.686572][2977:2977] CHIP:DMG: { + [1657912254.686621][2977:2977] CHIP:DMG: }, + [1657912254.686679][2977:2977] CHIP:DMG: }, + [1657912254.686727][2977:2977] CHIP:DMG: + [1657912254.686765][2977:2977] CHIP:DMG: ], + [1657912254.686812][2977:2977] CHIP:DMG: + [1657912254.686866][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657912254.686904][2977:2977] CHIP:DMG: }, + [1657912254.687011][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0006 e=1 p=o + [1657912254.687066][2977:2977] CHIP:DMG: AccessControl: allowed + [1657912254.687110][2977:2977] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0006 Command=0x0000_0001 + [1657912254.687171][2977:2977] CHIP:ZCL: On/Off set value: 1 1 + [1657912254.687213][2977:2977] CHIP:ZCL: Toggle on/off from 0 to 1 + [1657912254.687251][2977:2977] CHIP:ZCL: On Command - OffWaitTime : 0 + [1657912254.687307][2977:2977] CHIP:DMG: Endpoint 1, Cluster 0x0000_0006 update version to a51673a9 + [1657912254.687353][2977:2977] CHIP:ZCL: On/Toggle Command - Stop Timer + [1657912254.687388][2977:2977] CHIP:DMG: Endpoint 1, Cluster 0x0000_0006 update version to a51673aa + ./chip-tool colorcontrol enhanced-move-to-hue 16384 0 0 0 0 1 1 - [1657100804.250439][4428:4433] CHIP:DMG: InvokeResponseMessage = - [1657100804.250465][4428:4433] CHIP:DMG: { - [1657100804.250489][4428:4433] CHIP:DMG: suppressResponse = false, - [1657100804.250514][4428:4433] CHIP:DMG: InvokeResponseIBs = - [1657100804.250544][4428:4433] CHIP:DMG: [ - [1657100804.250569][4428:4433] CHIP:DMG: InvokeResponseIB = - [1657100804.250601][4428:4433] CHIP:DMG: { - [1657100804.250627][4428:4433] CHIP:DMG: CommandStatusIB = - [1657100804.250661][4428:4433] CHIP:DMG: { - [1657100804.250691][4428:4433] CHIP:DMG: CommandPathIB = - [1657100804.250728][4428:4433] CHIP:DMG: { - [1657100804.250766][4428:4433] CHIP:DMG: EndpointId = 0x1, - [1657100804.250805][4428:4433] CHIP:DMG: ClusterId = 0x300, - [1657100804.250842][4428:4433] CHIP:DMG: CommandId = 0x40, - [1657100804.250878][4428:4433] CHIP:DMG: }, - [1657100804.250917][4428:4433] CHIP:DMG: - [1657100804.250946][4428:4433] CHIP:DMG: StatusIB = - [1657100804.250983][4428:4433] CHIP:DMG: { - [1657100804.251017][4428:4433] CHIP:DMG: status = 0x00 (SUCCESS), - [1657100804.251052][4428:4433] CHIP:DMG: }, - [1657100804.251086][4428:4433] CHIP:DMG: - [1657100804.251115][4428:4433] CHIP:DMG: }, - [1657100804.251148][4428:4433] CHIP:DMG: - [1657100804.251173][4428:4433] CHIP:DMG: }, - [1657100804.251202][4428:4433] CHIP:DMG: - [1657100804.251226][4428:4433] CHIP:DMG: ], - [1657100804.251255][4428:4433] CHIP:DMG: - [1657100804.251279][4428:4433] CHIP:DMG: InteractionModelRevision = 1 - [1657100804.251302][4428:4433] CHIP:DMG: }, - [1657100804.251360][4428:4433] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0040 Status=0x0 - [1657100804.251400][4428:4433] CHIP:DMG: ICR moving to [AwaitingDe] + Verify in DUT as client side log: + [1657912325.922452][2977:2977] CHIP:DMG: InvokeRequestMessage = + [1657912325.922480][2977:2977] CHIP:DMG: { + [1657912325.922503][2977:2977] CHIP:DMG: suppressResponse = false, + [1657912325.922529][2977:2977] CHIP:DMG: timedRequest = false, + [1657912325.922553][2977:2977] CHIP:DMG: InvokeRequests = + [1657912325.922596][2977:2977] CHIP:DMG: [ + [1657912325.922622][2977:2977] CHIP:DMG: CommandDataIB = + [1657912325.922649][2977:2977] CHIP:DMG: { + [1657912325.922673][2977:2977] CHIP:DMG: CommandPathIB = + [1657912325.922720][2977:2977] CHIP:DMG: { + [1657912325.922753][2977:2977] CHIP:DMG: EndpointId = 0x1, + [1657912325.922787][2977:2977] CHIP:DMG: ClusterId = 0x300, + [1657912325.922820][2977:2977] CHIP:DMG: CommandId = 0x40, + [1657912325.922862][2977:2977] CHIP:DMG: }, + [1657912325.922896][2977:2977] CHIP:DMG: + [1657912325.922922][2977:2977] CHIP:DMG: CommandFields = + [1657912325.922953][2977:2977] CHIP:DMG: { + [1657912325.922986][2977:2977] CHIP:DMG: 0x0 = 16384, + [1657912325.923030][2977:2977] CHIP:DMG: 0x1 = 0, + [1657912325.923064][2977:2977] CHIP:DMG: 0x2 = 0, + [1657912325.923097][2977:2977] CHIP:DMG: 0x3 = 0, + [1657912325.923138][2977:2977] CHIP:DMG: 0x4 = 0, + [1657912325.923171][2977:2977] CHIP:DMG: }, + [1657912325.923200][2977:2977] CHIP:DMG: }, + [1657912325.923240][2977:2977] CHIP:DMG: + [1657912325.923265][2977:2977] CHIP:DMG: ], + [1657912325.923296][2977:2977] CHIP:DMG: + [1657912325.923319][2977:2977] CHIP:DMG: InteractionModelRevision = 1 + [1657912325.923351][2977:2977] CHIP:DMG: }, + [1657912325.923425][2977:2977] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=o + [1657912325.923477][2977:2977] CHIP:DMG: AccessControl: allowed + [1657912325.923507][2977:2977] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0040 disabled: true - label: @@ -100,79 +106,169 @@ tests: PICS: CC.C.C44.Rsp verification: | ./chip-tool colorcontrol color-loop-set 15 0 0 30 160 0 0 1 1 - verify on Reference app receives the right response for the data sent in the above commands - [1657100829.032257][4435:4441] CHIP:DMG: InvokeResponseMessage = - [1657100829.032304][4435:4441] CHIP:DMG: { - [1657100829.032350][4435:4441] CHIP:DMG: suppressResponse = false, - [1657100829.032396][4435:4441] CHIP:DMG: InvokeResponseIBs = - [1657100829.032454][4435:4441] CHIP:DMG: [ - [1657100829.032500][4435:4441] CHIP:DMG: InvokeResponseIB = - [1657100829.032561][4435:4441] CHIP:DMG: { - [1657100829.032611][4435:4441] CHIP:DMG: CommandStatusIB = - [1657100829.032671][4435:4441] CHIP:DMG: { - [1657100829.032725][4435:4441] CHIP:DMG: CommandPathIB = - [1657100829.032793][4435:4441] CHIP:DMG: { - [1657100829.032857][4435:4441] CHIP:DMG: EndpointId = 0x1, - [1657100829.032928][4435:4441] CHIP:DMG: ClusterId = 0x300, - [1657100829.032994][4435:4441] CHIP:DMG: CommandId = 0x44, - [1657100829.033059][4435:4441] CHIP:DMG: }, - [1657100829.033127][4435:4441] CHIP:DMG: - [1657100829.033182][4435:4441] CHIP:DMG: StatusIB = - [1657100829.033241][4435:4441] CHIP:DMG: { - [1657100829.033287][4435:4441] CHIP:DMG: status = 0x00 (SUCCESS), - [1657100829.033339][4435:4441] CHIP:DMG: }, - [1657100829.033399][4435:4441] CHIP:DMG: - [1657100829.033438][4435:4441] CHIP:DMG: }, - [1657100829.033484][4435:4441] CHIP:DMG: - [1657100829.033521][4435:4441] CHIP:DMG: }, - [1657100829.033562][4435:4441] CHIP:DMG: - [1657100829.033593][4435:4441] CHIP:DMG: ], - [1657100829.033633][4435:4441] CHIP:DMG: - [1657100829.033666][4435:4441] CHIP:DMG: InteractionModelRevision = 1 - [1657100829.033697][4435:4441] CHIP:DMG: }, - [1657100829.033773][4435:4441] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0044 Status=0x0 - [1657100829.033826][4435:4441] CHIP:DMG: ICR moving to [AwaitingDe] + Verify in DUT as client side log: + [1657912387.432732][3126:3126] CHIP:DMG: InvokeRequestMessage = + [1657912387.432781][3126:3126] CHIP:DMG: { + [1657912387.432823][3126:3126] CHIP:DMG: suppressResponse = false, + [1657912387.432872][3126:3126] CHIP:DMG: timedRequest = false, + [1657912387.432917][3126:3126] CHIP:DMG: InvokeRequests = + [1657912387.432978][3126:3126] CHIP:DMG: [ + [1657912387.433023][3126:3126] CHIP:DMG: CommandDataIB = + [1657912387.433078][3126:3126] CHIP:DMG: { + [1657912387.433130][3126:3126] CHIP:DMG: CommandPathIB = + [1657912387.433192][3126:3126] CHIP:DMG: { + [1657912387.433250][3126:3126] CHIP:DMG: EndpointId = 0x1, + [1657912387.433311][3126:3126] CHIP:DMG: ClusterId = 0x300, + [1657912387.433372][3126:3126] CHIP:DMG: CommandId = 0x44, + [1657912387.433429][3126:3126] CHIP:DMG: }, + [1657912387.433489][3126:3126] CHIP:DMG: + [1657912387.433541][3126:3126] CHIP:DMG: CommandFields = + [1657912387.433595][3126:3126] CHIP:DMG: { + [1657912387.433660][3126:3126] CHIP:DMG: 0x0 = 15, + [1657912387.433722][3126:3126] CHIP:DMG: 0x1 = 0, + [1657912387.433778][3126:3126] CHIP:DMG: 0x2 = 0, + [1657912387.433846][3126:3126] CHIP:DMG: 0x3 = 30, + [1657912387.433914][3126:3126] CHIP:DMG: 0x4 = 160, + [1657912387.433974][3126:3126] CHIP:DMG: 0x5 = 0, + [1657912387.434040][3126:3126] CHIP:DMG: 0x6 = 0, + [1657912387.434101][3126:3126] CHIP:DMG: }, + [1657912387.434152][3126:3126] CHIP:DMG: }, + [1657912387.434213][3126:3126] CHIP:DMG: + [1657912387.434257][3126:3126] CHIP:DMG: ], + [1657912387.434312][3126:3126] CHIP:DMG: + [1657912387.434354][3126:3126] CHIP:DMG: InteractionModelRevision = 1 + [1657912387.434397][3126:3126] CHIP:DMG: }, + [1657912387.434514][3126:3126] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=o + [1657912387.434575][3126:3126] CHIP:DMG: AccessControl: allowed + [1657912387.434626][3126:3126] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0044 disabled: true - label: "DUT read ColorLoopActive attribute from TH." PICS: CC.C.A4002 verification: | ./chip-tool colorcontrol read color-loop-active 1 1 - verify on Reference app receives the right response for the data sent in the above commands - [1657100849.171372][4443:4448] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_4002 DataVersion: 1806828076 - [1657100849.171444][4443:4448] CHIP:TOO: ColorLoopActive: 0 + Verify in DUT as client side log: + [1657912416.547714][3126:3126] CHIP:IM: Received Read request + [1657912416.547842][3126:3126] CHIP:DMG: ReadRequestMessage = + [1657912416.547890][3126:3126] CHIP:DMG: { + [1657912416.547930][3126:3126] CHIP:DMG: AttributePathIBs = + [1657912416.547986][3126:3126] CHIP:DMG: [ + [1657912416.548031][3126:3126] CHIP:DMG: AttributePathIB = + [1657912416.548116][3126:3126] CHIP:DMG: { + [1657912416.548167][3126:3126] CHIP:DMG: Endpoint = 0x1, + [1657912416.548231][3126:3126] CHIP:DMG: Cluster = 0x300, + [1657912416.548292][3126:3126] CHIP:DMG: Attribute = 0x0000_4002, + [1657912416.548356][3126:3126] CHIP:DMG: } + [1657912416.548410][3126:3126] CHIP:DMG: + [1657912416.548464][3126:3126] CHIP:DMG: ], + [1657912416.548516][3126:3126] CHIP:DMG: + [1657912416.548564][3126:3126] CHIP:DMG: isFabricFiltered = true, + [1657912416.548610][3126:3126] CHIP:DMG: InteractionModelRevision = 1 + [1657912416.548653][3126:3126] CHIP:DMG: }, + [1657912416.548787][3126:3126] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657912416.548947][3126:3126] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657912416.549000][3126:3126] CHIP:DMG: Cluster 300, Attribute 4002 is dirty + [1657912416.549040][3126:3126] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_4002 (expanded=0) + [1657912416.549091][3126:3126] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657912416.549147][3126:3126] CHIP:DMG: AccessControl: allowed + [1657912416.549237][3126:3126] CHIP:DMG: Sending report (payload has 38 bytes)... disabled: true - label: "DUT read ColorLoopDirection attribute from TH." PICS: CC.C.A4003 verification: | ./chip-tool colorcontrol read color-loop-direction 1 1 - verify on Reference app receives the right response for the data sent in the above commands - [1657100868.557450][4449:4454] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_4003 DataVersion: 1806828076 - [1657100868.557533][4449:4454] CHIP:TOO: ColorLoopDirection: 0 + Verify in DUT as client side log: + [1657912446.661818][3126:3126] CHIP:IM: Received Read request + [1657912446.661940][3126:3126] CHIP:DMG: ReadRequestMessage = + [1657912446.661989][3126:3126] CHIP:DMG: { + [1657912446.662029][3126:3126] CHIP:DMG: AttributePathIBs = + [1657912446.662076][3126:3126] CHIP:DMG: [ + [1657912446.662120][3126:3126] CHIP:DMG: AttributePathIB = + [1657912446.662174][3126:3126] CHIP:DMG: { + [1657912446.662225][3126:3126] CHIP:DMG: Endpoint = 0x1, + [1657912446.662282][3126:3126] CHIP:DMG: Cluster = 0x300, + [1657912446.662345][3126:3126] CHIP:DMG: Attribute = 0x0000_4003, + [1657912446.662407][3126:3126] CHIP:DMG: } + [1657912446.662462][3126:3126] CHIP:DMG: + [1657912446.662511][3126:3126] CHIP:DMG: ], + [1657912446.662563][3126:3126] CHIP:DMG: + [1657912446.662610][3126:3126] CHIP:DMG: isFabricFiltered = true, + [1657912446.662656][3126:3126] CHIP:DMG: InteractionModelRevision = 1 + [1657912446.662695][3126:3126] CHIP:DMG: }, + [1657912446.662822][3126:3126] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657912446.662971][3126:3126] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657912446.663023][3126:3126] CHIP:DMG: Cluster 300, Attribute 4003 is dirty + [1657912446.663064][3126:3126] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_4003 (expanded=0) + [1657912446.663114][3126:3126] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657912446.663169][3126:3126] CHIP:DMG: AccessControl: allowed + [1657912446.663260][3126:3126] CHIP:DMG: Sending report (payload has 38 bytes)... disabled: true - label: "DUT read ColorLoopTime attribute from TH." PICS: CC.C.A4004 verification: | ./chip-tool colorcontrol read color-loop-time 1 1 - verify on Reference app receives the right response for the data sent in the above commands - - [1657100887.731783][4455:4460] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_4004 DataVersion: 1806828076 - [1657100887.731858][4455:4460] CHIP:TOO: ColorLoopTime: 30 + Verify in DUT as client side log: + [1657912469.590293][3126:3126] CHIP:IM: Received Read request + [1657912469.590419][3126:3126] CHIP:DMG: ReadRequestMessage = + [1657912469.590466][3126:3126] CHIP:DMG: { + [1657912469.590499][3126:3126] CHIP:DMG: AttributePathIBs = + [1657912469.590546][3126:3126] CHIP:DMG: [ + [1657912469.590590][3126:3126] CHIP:DMG: AttributePathIB = + [1657912469.590639][3126:3126] CHIP:DMG: { + [1657912469.590690][3126:3126] CHIP:DMG: Endpoint = 0x1, + [1657912469.590748][3126:3126] CHIP:DMG: Cluster = 0x300, + [1657912469.590809][3126:3126] CHIP:DMG: Attribute = 0x0000_4004, + [1657912469.590861][3126:3126] CHIP:DMG: } + [1657912469.590913][3126:3126] CHIP:DMG: + [1657912469.590959][3126:3126] CHIP:DMG: ], + [1657912469.591009][3126:3126] CHIP:DMG: + [1657912469.591056][3126:3126] CHIP:DMG: isFabricFiltered = true, + [1657912469.591101][3126:3126] CHIP:DMG: InteractionModelRevision = 1 + [1657912469.591143][3126:3126] CHIP:DMG: }, + [1657912469.591267][3126:3126] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657912469.591410][3126:3126] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657912469.591461][3126:3126] CHIP:DMG: Cluster 300, Attribute 4004 is dirty + [1657912469.591500][3126:3126] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_4004 (expanded=0) + [1657912469.591545][3126:3126] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657912469.591599][3126:3126] CHIP:DMG: AccessControl: allowed + [1657912469.591688][3126:3126] CHIP:DMG: Sending report (payload has 38 bytes)... disabled: true - label: "DUT read ColorLoopStartEnhancedHue attribute from TH." PICS: CC.C.A4005 verification: | ./chip-tool colorcontrol read color-loop-start-enhanced-hue 1 1 - verify on Reference app receives the right response for the data sent in the above commands - [1657100907.253262][4463:4468] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_4005 DataVersion: 1806828076 - [1657100907.253326][4463:4468] CHIP:TOO: ColorLoopStartEnhancedHue: 160 + Verify in DUT as client side log: + [1657912490.104534][3126:3126] CHIP:IM: Received Read request + [1657912490.104664][3126:3126] CHIP:DMG: ReadRequestMessage = + [1657912490.104713][3126:3126] CHIP:DMG: { + [1657912490.104753][3126:3126] CHIP:DMG: AttributePathIBs = + [1657912490.104801][3126:3126] CHIP:DMG: [ + [1657912490.104844][3126:3126] CHIP:DMG: AttributePathIB = + [1657912490.104893][3126:3126] CHIP:DMG: { + [1657912490.104945][3126:3126] CHIP:DMG: Endpoint = 0x1, + [1657912490.105003][3126:3126] CHIP:DMG: Cluster = 0x300, + [1657912490.105059][3126:3126] CHIP:DMG: Attribute = 0x0000_4005, + [1657912490.105112][3126:3126] CHIP:DMG: } + [1657912490.105164][3126:3126] CHIP:DMG: + [1657912490.105211][3126:3126] CHIP:DMG: ], + [1657912490.105263][3126:3126] CHIP:DMG: + [1657912490.105311][3126:3126] CHIP:DMG: isFabricFiltered = true, + [1657912490.105357][3126:3126] CHIP:DMG: InteractionModelRevision = 1 + [1657912490.105400][3126:3126] CHIP:DMG: }, + [1657912490.105531][3126:3126] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657912490.105679][3126:3126] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657912490.105731][3126:3126] CHIP:DMG: Cluster 300, Attribute 4005 is dirty + [1657912490.105771][3126:3126] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_4005 (expanded=0) + [1657912490.105821][3126:3126] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657912490.105877][3126:3126] CHIP:DMG: AccessControl: allowed + [1657912490.105967][3126:3126] CHIP:DMG: Sending report (payload has 38 bytes)... disabled: true - label: @@ -181,59 +277,98 @@ tests: PICS: CC.C.C44.Rsp verification: | ./chip-tool colorcontrol color-loop-set 1 1 0 0 0 0 0 1 1 - verify on Reference app receives the right response for the data sent in the above commands - [1657101008.744866][4475:4480] CHIP:DMG: InvokeResponseMessage = - [1657101008.744891][4475:4480] CHIP:DMG: { - [1657101008.744915][4475:4480] CHIP:DMG: suppressResponse = false, - [1657101008.744940][4475:4480] CHIP:DMG: InvokeResponseIBs = - [1657101008.744971][4475:4480] CHIP:DMG: [ - [1657101008.744995][4475:4480] CHIP:DMG: InvokeResponseIB = - [1657101008.745027][4475:4480] CHIP:DMG: { - [1657101008.745053][4475:4480] CHIP:DMG: CommandStatusIB = - [1657101008.745084][4475:4480] CHIP:DMG: { - [1657101008.745113][4475:4480] CHIP:DMG: CommandPathIB = - [1657101008.745148][4475:4480] CHIP:DMG: { - [1657101008.745183][4475:4480] CHIP:DMG: EndpointId = 0x1, - [1657101008.745222][4475:4480] CHIP:DMG: ClusterId = 0x300, - [1657101008.745252][4475:4480] CHIP:DMG: CommandId = 0x44, - [1657101008.745284][4475:4480] CHIP:DMG: }, - [1657101008.745317][4475:4480] CHIP:DMG: - [1657101008.745345][4475:4480] CHIP:DMG: StatusIB = - [1657101008.745378][4475:4480] CHIP:DMG: { - [1657101008.745411][4475:4480] CHIP:DMG: status = 0x00 (SUCCESS), - [1657101008.745443][4475:4480] CHIP:DMG: }, - [1657101008.745474][4475:4480] CHIP:DMG: - [1657101008.745502][4475:4480] CHIP:DMG: }, - [1657101008.745534][4475:4480] CHIP:DMG: - [1657101008.745559][4475:4480] CHIP:DMG: }, - [1657101008.745588][4475:4480] CHIP:DMG: - [1657101008.745611][4475:4480] CHIP:DMG: ], - [1657101008.745640][4475:4480] CHIP:DMG: - [1657101008.745664][4475:4480] CHIP:DMG: InteractionModelRevision = 1 - [1657101008.745687][4475:4480] CHIP:DMG: }, - [1657101008.745743][4475:4480] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0044 Status=0x0 - [1657101008.745784][4475:4480] CHIP:DMG: ICR moving to [AwaitingDe] + Verify in DUT as client side log: + [1657912520.093793][3126:3126] CHIP:DMG: InvokeRequestMessage = + [1657912520.093822][3126:3126] CHIP:DMG: { + [1657912520.093845][3126:3126] CHIP:DMG: suppressResponse = false, + [1657912520.093872][3126:3126] CHIP:DMG: timedRequest = false, + [1657912520.093896][3126:3126] CHIP:DMG: InvokeRequests = + [1657912520.093928][3126:3126] CHIP:DMG: [ + [1657912520.093952][3126:3126] CHIP:DMG: CommandDataIB = + [1657912520.093989][3126:3126] CHIP:DMG: { + [1657912520.094015][3126:3126] CHIP:DMG: CommandPathIB = + [1657912520.094046][3126:3126] CHIP:DMG: { + [1657912520.094079][3126:3126] CHIP:DMG: EndpointId = 0x1, + [1657912520.094112][3126:3126] CHIP:DMG: ClusterId = 0x300, + [1657912520.094144][3126:3126] CHIP:DMG: CommandId = 0x44, + [1657912520.094173][3126:3126] CHIP:DMG: }, + [1657912520.094199][3126:3126] CHIP:DMG: + [1657912520.094225][3126:3126] CHIP:DMG: CommandFields = + [1657912520.094255][3126:3126] CHIP:DMG: { + [1657912520.094286][3126:3126] CHIP:DMG: 0x0 = 1, + [1657912520.094316][3126:3126] CHIP:DMG: 0x1 = 1, + [1657912520.094342][3126:3126] CHIP:DMG: 0x2 = 0, + [1657912520.094367][3126:3126] CHIP:DMG: 0x3 = 0, + [1657912520.094492][3126:3126] CHIP:DMG: 0x4 = 0, + [1657912520.094533][3126:3126] CHIP:DMG: 0x5 = 0, + [1657912520.094565][3126:3126] CHIP:DMG: 0x6 = 0, + [1657912520.094597][3126:3126] CHIP:DMG: }, + [1657912520.094626][3126:3126] CHIP:DMG: }, + [1657912520.094660][3126:3126] CHIP:DMG: + [1657912520.094683][3126:3126] CHIP:DMG: ], + [1657912520.094715][3126:3126] CHIP:DMG: + [1657912520.094739][3126:3126] CHIP:DMG: InteractionModelRevision = 1 + [1657912520.094762][3126:3126] CHIP:DMG: }, + [1657912520.094835][3126:3126] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=o + [1657912520.094872][3126:3126] CHIP:DMG: AccessControl: allowed + [1657912520.094900][3126:3126] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0044 disabled: true - label: "DUT read ColorLoopActive attribute from TH." PICS: CC.C.A4002 verification: | ./chip-tool colorcontrol read color-loop-active 1 1 - verify on Reference app receives the right response for the data sent in the above commands - [1657101042.207152][4483:4488] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_4002 DataVersion: 1806829078 - [1657101042.207223][4483:4488] CHIP:TOO: ColorLoopActive: 1 + Verify in DUT as client side log: + + [1657912750.645121][3126:3126] CHIP:IM: Received Read request + [1657912750.645210][3126:3126] CHIP:DMG: ReadRequestMessage = + [1657912750.645332][3126:3126] CHIP:DMG: { + [1657912750.645356][3126:3126] CHIP:DMG: AttributePathIBs = + [1657912750.645382][3126:3126] CHIP:DMG: [ + [1657912750.645406][3126:3126] CHIP:DMG: AttributePathIB = + [1657912750.645436][3126:3126] CHIP:DMG: { + [1657912750.645465][3126:3126] CHIP:DMG: Endpoint = 0x1, + [1657912750.645503][3126:3126] CHIP:DMG: Cluster = 0x300, + [1657912750.645531][3126:3126] CHIP:DMG: Attribute = 0x0000_4002, + [1657912750.645555][3126:3126] CHIP:DMG: } + [1657912750.645584][3126:3126] CHIP:DMG: + [1657912750.645615][3126:3126] CHIP:DMG: ], + [1657912750.645643][3126:3126] CHIP:DMG: + [1657912750.645667][3126:3126] CHIP:DMG: isFabricFiltered = true, + [1657912750.645692][3126:3126] CHIP:DMG: InteractionModelRevision = 1 + [1657912750.645715][3126:3126] CHIP:DMG: }, + [1657912750.645801][3126:3126] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657912750.645917][3126:3126] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657912750.646000][3126:3126] CHIP:DMG: Cluster 300, Attribute 4002 is dirty disabled: true - label: "DUT read ColorLoopStoredEnhancedHue attribute from TH." PICS: CC.C.A4006 verification: | ./chip-tool colorcontrol read color-loop-stored-enhanced-hue 1 1 - verify on Reference app receives the right response for the data sent in the above commands - - [1657101062.166998][4489:4494] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_4006 DataVersion: 1806829675 - [1657101062.167065][4489:4494] CHIP:TOO: ColorLoopStoredEnhancedHue: 16384 + Verify in DUT as client side log: + [1657912783.463733][3126:3126] CHIP:IM: Received Read request + [1657912783.463816][3126:3126] CHIP:DMG: ReadRequestMessage = + [1657912783.463844][3126:3126] CHIP:DMG: { + [1657912783.463865][3126:3126] CHIP:DMG: AttributePathIBs = + [1657912783.463891][3126:3126] CHIP:DMG: [ + [1657912783.463915][3126:3126] CHIP:DMG: AttributePathIB = + [1657912783.463943][3126:3126] CHIP:DMG: { + [1657912783.463970][3126:3126] CHIP:DMG: Endpoint = 0x1, + [1657912783.464005][3126:3126] CHIP:DMG: Cluster = 0x300, + [1657912783.464042][3126:3126] CHIP:DMG: Attribute = 0x0000_4006, + [1657912783.464140][3126:3126] CHIP:DMG: } + [1657912783.464177][3126:3126] CHIP:DMG: + [1657912783.464208][3126:3126] CHIP:DMG: ], + [1657912783.464237][3126:3126] CHIP:DMG: + [1657912783.464264][3126:3126] CHIP:DMG: isFabricFiltered = true, + [1657912783.464289][3126:3126] CHIP:DMG: InteractionModelRevision = 1 + [1657912783.464312][3126:3126] CHIP:DMG: }, + [1657912783.464399][3126:3126] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657912783.464546][3126:3126] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657912783.464582][3126:3126] CHIP:DMG: Cluster 300, Attribute 4006 is dirty disabled: true - label: @@ -241,10 +376,27 @@ tests: PICS: CC.C.A4000 verification: | ./chip-tool colorcontrol read enhanced-current-hue 1 1 - verify on Reference app receives the right response for the data sent in the above commands - - [1657101080.876810][4496:4501] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_4000 DataVersion: 1806830233 - [1657101080.876876][4496:4501] CHIP:TOO: EnhancedCurrentHue: 39918 + Verify in DUT as client side log: + [1657912801.027600][3126:3126] CHIP:IM: Received Read request + [1657912801.027717][3126:3126] CHIP:DMG: ReadRequestMessage = + [1657912801.027761][3126:3126] CHIP:DMG: { + [1657912801.027803][3126:3126] CHIP:DMG: AttributePathIBs = + [1657912801.027909][3126:3126] CHIP:DMG: [ + [1657912801.027952][3126:3126] CHIP:DMG: AttributePathIB = + [1657912801.027999][3126:3126] CHIP:DMG: { + [1657912801.028046][3126:3126] CHIP:DMG: Endpoint = 0x1, + [1657912801.028135][3126:3126] CHIP:DMG: Cluster = 0x300, + [1657912801.028262][3126:3126] CHIP:DMG: Attribute = 0x0000_4000, + [1657912801.028320][3126:3126] CHIP:DMG: } + [1657912801.028372][3126:3126] CHIP:DMG: + [1657912801.028425][3126:3126] CHIP:DMG: ], + [1657912801.028472][3126:3126] CHIP:DMG: + [1657912801.028516][3126:3126] CHIP:DMG: isFabricFiltered = true, + [1657912801.028607][3126:3126] CHIP:DMG: InteractionModelRevision = 1 + [1657912801.028653][3126:3126] CHIP:DMG: }, + [1657912801.028777][3126:3126] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657912801.028982][3126:3126] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657912801.029035][3126:3126] CHIP:DMG: Cluster 300, Attribute 4000 is dirty disabled: true - label: @@ -253,10 +405,27 @@ tests: PICS: CC.C.A4000 verification: | ./chip-tool colorcontrol read enhanced-current-hue 1 1 - verify on Reference app receives the right response for the data sent in the above commands - - [1657101098.688681][4502:4507] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_4000 DataVersion: 1806830767 - [1657101098.688757][4502:4507] CHIP:TOO: EnhancedCurrentHue: 1034 + Verify in DUT as client side log: + [1657912801.027600][3126:3126] CHIP:IM: Received Read request + [1657912801.027717][3126:3126] CHIP:DMG: ReadRequestMessage = + [1657912801.027761][3126:3126] CHIP:DMG: { + [1657912801.027803][3126:3126] CHIP:DMG: AttributePathIBs = + [1657912801.027909][3126:3126] CHIP:DMG: [ + [1657912801.027952][3126:3126] CHIP:DMG: AttributePathIB = + [1657912801.027999][3126:3126] CHIP:DMG: { + [1657912801.028046][3126:3126] CHIP:DMG: Endpoint = 0x1, + [1657912801.028135][3126:3126] CHIP:DMG: Cluster = 0x300, + [1657912801.028262][3126:3126] CHIP:DMG: Attribute = 0x0000_4000, + [1657912801.028320][3126:3126] CHIP:DMG: } + [1657912801.028372][3126:3126] CHIP:DMG: + [1657912801.028425][3126:3126] CHIP:DMG: ], + [1657912801.028472][3126:3126] CHIP:DMG: + [1657912801.028516][3126:3126] CHIP:DMG: isFabricFiltered = true, + [1657912801.028607][3126:3126] CHIP:DMG: InteractionModelRevision = 1 + [1657912801.028653][3126:3126] CHIP:DMG: }, + [1657912801.028777][3126:3126] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657912801.028982][3126:3126] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657912801.029035][3126:3126] CHIP:DMG: Cluster 300, Attribute 4000 is dirty disabled: true - label: @@ -265,57 +434,99 @@ tests: PICS: CC.C.C44.Rsp verification: | ./chip-tool colorcontrol color-loop-set 1 0 0 0 0 0 0 1 1 - verify on Reference app receives the right response for the data sent in the above commands - - [1657101121.817411][4508:4513] CHIP:DMG: InvokeResponseMessage = - [1657101121.817450][4508:4513] CHIP:DMG: { - [1657101121.817490][4508:4513] CHIP:DMG: suppressResponse = false, - [1657101121.817529][4508:4513] CHIP:DMG: InvokeResponseIBs = - [1657101121.817579][4508:4513] CHIP:DMG: [ - [1657101121.817619][4508:4513] CHIP:DMG: InvokeResponseIB = - [1657101121.817672][4508:4513] CHIP:DMG: { - [1657101121.817715][4508:4513] CHIP:DMG: CommandStatusIB = - [1657101121.817772][4508:4513] CHIP:DMG: { - [1657101121.817820][4508:4513] CHIP:DMG: CommandPathIB = - [1657101121.817875][4508:4513] CHIP:DMG: { - [1657101121.817929][4508:4513] CHIP:DMG: EndpointId = 0x1, - [1657101121.817986][4508:4513] CHIP:DMG: ClusterId = 0x300, - [1657101121.818046][4508:4513] CHIP:DMG: CommandId = 0x44, - [1657101121.818105][4508:4513] CHIP:DMG: }, - [1657101121.818164][4508:4513] CHIP:DMG: - [1657101121.818212][4508:4513] CHIP:DMG: StatusIB = - [1657101121.818270][4508:4513] CHIP:DMG: { - [1657101121.818325][4508:4513] CHIP:DMG: status = 0x00 (SUCCESS), - [1657101121.818413][4508:4513] CHIP:DMG: }, - [1657101121.818466][4508:4513] CHIP:DMG: - [1657101121.818505][4508:4513] CHIP:DMG: }, - [1657101121.818562][4508:4513] CHIP:DMG: - [1657101121.818597][4508:4513] CHIP:DMG: }, - [1657101121.818637][4508:4513] CHIP:DMG: - [1657101121.818668][4508:4513] CHIP:DMG: ], - [1657101121.818707][4508:4513] CHIP:DMG: - [1657101121.818738][4508:4513] CHIP:DMG: InteractionModelRevision = 1 - [1657101121.818769][4508:4513] CHIP:DMG: }, - [1657101121.818845][4508:4513] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0044 Status=0x0 - [1657101121.818898][4508:4513] CHIP:DMG: ICR moving to [AwaitingDe] + Verify in DUT as client side log: + + [1657912615.862118][3126:3126] CHIP:DMG: InvokeRequestMessage = + [1657912615.862168][3126:3126] CHIP:DMG: { + [1657912615.862209][3126:3126] CHIP:DMG: suppressResponse = false, + [1657912615.862258][3126:3126] CHIP:DMG: timedRequest = false, + [1657912615.862305][3126:3126] CHIP:DMG: InvokeRequests = + [1657912615.862365][3126:3126] CHIP:DMG: [ + [1657912615.862409][3126:3126] CHIP:DMG: CommandDataIB = + [1657912615.862463][3126:3126] CHIP:DMG: { + [1657912615.862510][3126:3126] CHIP:DMG: CommandPathIB = + [1657912615.862565][3126:3126] CHIP:DMG: { + [1657912615.862626][3126:3126] CHIP:DMG: EndpointId = 0x1, + [1657912615.862687][3126:3126] CHIP:DMG: ClusterId = 0x300, + [1657912615.862745][3126:3126] CHIP:DMG: CommandId = 0x44, + [1657912615.862806][3126:3126] CHIP:DMG: }, + [1657912615.862865][3126:3126] CHIP:DMG: + [1657912615.862913][3126:3126] CHIP:DMG: CommandFields = + [1657912615.862968][3126:3126] CHIP:DMG: { + [1657912615.863027][3126:3126] CHIP:DMG: 0x0 = 1, + [1657912615.863084][3126:3126] CHIP:DMG: 0x1 = 0, + [1657912615.863142][3126:3126] CHIP:DMG: 0x2 = 0, + [1657912615.863202][3126:3126] CHIP:DMG: 0x3 = 0, + [1657912615.863263][3126:3126] CHIP:DMG: 0x4 = 0, + [1657912615.863323][3126:3126] CHIP:DMG: 0x5 = 0, + [1657912615.863383][3126:3126] CHIP:DMG: 0x6 = 0, + [1657912615.863436][3126:3126] CHIP:DMG: }, + [1657912615.863481][3126:3126] CHIP:DMG: }, + [1657912615.863538][3126:3126] CHIP:DMG: + [1657912615.863582][3126:3126] CHIP:DMG: ], + [1657912615.863638][3126:3126] CHIP:DMG: + [1657912615.863682][3126:3126] CHIP:DMG: InteractionModelRevision = 1 + [1657912615.863725][3126:3126] CHIP:DMG: }, + [1657912615.863845][3126:3126] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=o + [1657912615.863906][3126:3126] CHIP:DMG: AccessControl: allowed + [1657912615.863955][3126:3126] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0300 Command=0x0000_0044 disabled: true - label: "DUT read ColorLoopActive attribute from TH." PICS: CC.C.A4002 verification: | ./chip-tool colorcontrol read color-loop-active 1 1 - verify on Reference app receives the right response for the data sent in the above commands - [1657101141.547930][4516:4521] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_4002 DataVersion: 1806831459 - [1657101141.547994][4516:4521] CHIP:TOO: ColorLoopActive: 0 + Verify in DUT as client side log: + [1657912416.547714][3126:3126] CHIP:IM: Received Read request + [1657912416.547842][3126:3126] CHIP:DMG: ReadRequestMessage = + [1657912416.547890][3126:3126] CHIP:DMG: { + [1657912416.547930][3126:3126] CHIP:DMG: AttributePathIBs = + [1657912416.547986][3126:3126] CHIP:DMG: [ + [1657912416.548031][3126:3126] CHIP:DMG: AttributePathIB = + [1657912416.548116][3126:3126] CHIP:DMG: { + [1657912416.548167][3126:3126] CHIP:DMG: Endpoint = 0x1, + [1657912416.548231][3126:3126] CHIP:DMG: Cluster = 0x300, + [1657912416.548292][3126:3126] CHIP:DMG: Attribute = 0x0000_4002, + [1657912416.548356][3126:3126] CHIP:DMG: } + [1657912416.548410][3126:3126] CHIP:DMG: + [1657912416.548464][3126:3126] CHIP:DMG: ], + [1657912416.548516][3126:3126] CHIP:DMG: + [1657912416.548564][3126:3126] CHIP:DMG: isFabricFiltered = true, + [1657912416.548610][3126:3126] CHIP:DMG: InteractionModelRevision = 1 + [1657912416.548653][3126:3126] CHIP:DMG: }, + [1657912416.548787][3126:3126] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657912416.548947][3126:3126] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657912416.549000][3126:3126] CHIP:DMG: Cluster 300, Attribute 4002 is dirty + [1657912416.549040][3126:3126] CHIP:DMG: Reading attribute: Cluster=0x0000_0300 Endpoint=1 AttributeId=0x0000_4002 (expanded=0) + [1657912416.549091][3126:3126] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0300 e=1 p=v + [1657912416.549147][3126:3126] CHIP:DMG: AccessControl: allowed + [1657912416.549237][3126:3126] CHIP:DMG: Sending report (payload has 38 bytes)... disabled: true - label: "DUT read EnhancedCurrentHue attribute from TH." PICS: CC.C.A4000 verification: | ./chip-tool colorcontrol read enhanced-current-hue 1 1 - verify on Reference app receives the right response for the data sent in the above commands - - [1657101157.473704][4522:4527] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_4000 DataVersion: 1806831459 - [1657101157.473769][4522:4527] CHIP:TOO: EnhancedCurrentHue: 16384 + Verify in DUT as client side log: + [1657912801.027600][3126:3126] CHIP:IM: Received Read request + [1657912801.027717][3126:3126] CHIP:DMG: ReadRequestMessage = + [1657912801.027761][3126:3126] CHIP:DMG: { + [1657912801.027803][3126:3126] CHIP:DMG: AttributePathIBs = + [1657912801.027909][3126:3126] CHIP:DMG: [ + [1657912801.027952][3126:3126] CHIP:DMG: AttributePathIB = + [1657912801.027999][3126:3126] CHIP:DMG: { + [1657912801.028046][3126:3126] CHIP:DMG: Endpoint = 0x1, + [1657912801.028135][3126:3126] CHIP:DMG: Cluster = 0x300, + [1657912801.028262][3126:3126] CHIP:DMG: Attribute = 0x0000_4000, + [1657912801.028320][3126:3126] CHIP:DMG: } + [1657912801.028372][3126:3126] CHIP:DMG: + [1657912801.028425][3126:3126] CHIP:DMG: ], + [1657912801.028472][3126:3126] CHIP:DMG: + [1657912801.028516][3126:3126] CHIP:DMG: isFabricFiltered = true, + [1657912801.028607][3126:3126] CHIP:DMG: InteractionModelRevision = 1 + [1657912801.028653][3126:3126] CHIP:DMG: }, + [1657912801.028777][3126:3126] CHIP:DMG: IM RH moving to [GeneratingReports] + [1657912801.028982][3126:3126] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1657912801.029035][3126:3126] CHIP:DMG: Cluster 300, Attribute 4000 is dirty disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CHANNEL_1_6.yaml b/src/app/tests/suites/certification/Test_TC_CHANNEL_1_6.yaml index 3acefeff94fb68..cbeacb670c8dbb 100644 --- a/src/app/tests/suites/certification/Test_TC_CHANNEL_1_6.yaml +++ b/src/app/tests/suites/certification/Test_TC_CHANNEL_1_6.yaml @@ -37,7 +37,7 @@ tests: constraints: type: uint16 - - label: "Read the optional global attribute: FeatureMap" + - label: "Read the global attribute: FeatureMap" PICS: CHANNEL.S.CL || CHANNEL.S.LI command: "readAttribute" attribute: "FeatureMap" @@ -83,21 +83,43 @@ tests: type: list contains: [2] - - label: "Read the global attribute: AcceptedCommandList" + - label: "Read the optional command(ChangeChannel) in AcceptedCommandList" + PICS: CHANNEL.S.C00.Rsp command: "readAttribute" attribute: "AcceptedCommandList" response: constraints: type: list - contains: [0, 2, 3] + contains: [0] + + - label: + "Read the optional command(ChangeChannelByNumber) in + AcceptedCommandList" + PICS: CHANNEL.S.C02.Rsp + command: "readAttribute" + attribute: "AcceptedCommandList" + response: + constraints: + type: list + contains: [2] + + - label: "Read the optional command(SkipChannel) in AcceptedCommandList" + PICS: CHANNEL.S.C03.Rsp + command: "readAttribute" + attribute: "AcceptedCommandList" + response: + constraints: + type: list + contains: [3] - label: "Read the global attribute: GeneratedCommandList" + PICS: CHANNEL.S.C01.Tx command: "readAttribute" attribute: "GeneratedCommandList" response: constraints: type: list - contains: [] + contains: [1] #issue #11053 disabled steps below Global attributes missing from YAML framework - label: diff --git a/src/app/tests/suites/certification/Test_TC_CHANNEL_5_2.yaml b/src/app/tests/suites/certification/Test_TC_CHANNEL_5_2.yaml index b61d2c2cbed40b..907eb82d7b032d 100644 --- a/src/app/tests/suites/certification/Test_TC_CHANNEL_5_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CHANNEL_5_2.yaml @@ -43,7 +43,7 @@ tests: type: list - label: "TH sends a ChangeChannelByNumber command" - PICS: CHANNEL.S.C0002 + PICS: CHANNEL.S.C02.Rsp command: "ChangeChannelByNumber" arguments: values: diff --git a/src/app/tests/suites/certification/Test_TC_CHANNEL_5_3.yaml b/src/app/tests/suites/certification/Test_TC_CHANNEL_5_3.yaml index 6778836d2183bd..bc1d705bd0daab 100644 --- a/src/app/tests/suites/certification/Test_TC_CHANNEL_5_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_CHANNEL_5_3.yaml @@ -59,7 +59,7 @@ tests: value: [majorNumber: majornumber, minorNumber: minornumber] - label: "Sends a SkipChannel command to the DUT" - PICS: CHANNEL.S.C0003 + PICS: CHANNEL.S.C03.Rsp command: "SkipChannel" arguments: values: diff --git a/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_1_11.yaml b/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_1_11.yaml index 989788ff921502..706496f82a2721 100644 --- a/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_1_11.yaml +++ b/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_1_11.yaml @@ -38,7 +38,7 @@ tests: constraints: type: uint16 - - label: "Read the optional global attribute: FeatureMap" + - label: "Read the global attribute: FeatureMap" PICS: CONTENTLAUNCHER.S.CS || CONTENTLAUNCHER.S.UP command: "readAttribute" attribute: "FeatureMap" @@ -49,7 +49,6 @@ tests: maxValue: 3 - label: "Read the global attribute: AttributeList" - PICS: CONTENTLAUNCHER.S.A0000 && CONTENTLAUNCHER.S.A0001 command: "readAttribute" attribute: "AttributeList" response: diff --git a/src/app/tests/suites/certification/Test_TC_DA_1_3.yaml b/src/app/tests/suites/certification/Test_TC_DA_1_3.yaml index 615ae2c6cd986d..143dcc82ca8ed2 100644 --- a/src/app/tests/suites/certification/Test_TC_DA_1_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_DA_1_3.yaml @@ -439,6 +439,24 @@ tests: [1655979686.741451][22876:22881] CHIP:CTL: Commissioning stage next step: 'SendAttestationRequest' -> 'AttestationVerification' disabled: true + #Verify that DUT Completes the commissioning process successfully + - label: "TH1 responds with a well-formed AttestationResponse Command" + verification: | + Both on DUT and TH side + DUT as commissioner side: + + [1655979694.071847][22876:22881] CHIP:CTL: Received CommissioningComplete response, errorCode=0 + [1655979694.071913][22876:22881] CHIP:CTL: Successfully finished commissioning step 'SendComplete' + [1655979694.071968][22876:22881] CHIP:CTL: Commissioning stage next step: 'SendComplete' -> 'Cleanup' + [1655979694.072031][22876:22881] CHIP:CTL: Performing next commissioning step 'Cleanup' + [1655979694.072081][22876:22881] CHIP:DIS: Closing all BLE connections + [1655979694.072136][22876:22881] CHIP:IN: Clearing BLE pending packets. + [1655979694.072268][22876:22881] CHIP:BLE: Auto-closing end point's BLE connection. + [1655979694.072328][22876:22881] CHIP:DL: Closing BLE GATT connection (con 0xffffa806f3f0) + [1655979694.072477][22876:22881] CHIP:CTL: Successfully finished commissioning step 'Cleanup' + [1655979694.072547][22876:22881] CHIP:TOO: Device commissioning completed with success + disabled: true + - label: "Factory Reset TH1 so that it is commissionable again" verification: | Both on DUT and TH side @@ -716,3 +734,11 @@ tests: verification: | See above disabled: true + + #Verify that the Nonce_1 and Nonce_2 are different. + - label: + "TH1 records the AttestationNonce received in AttestationRequest as + Nonce_2" + verification: | + Verify the value of NONCE in step 9 and 3 are different + disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_10.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_10.yaml index 908777d73e20b4..fadf56f23425c4 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_1_10.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_1_10.yaml @@ -23,10 +23,12 @@ config: endpoint: 0 tests: - - label: "Power up the TH Device and put the TH Device in pairing mode" + - label: + "Power up the TH Device and put the TH Device in commissioning mode" verification: | - sudo ./chip-all-clusters-app - + 1. Launch TH that has NFC tag + $ sudo ./chip-all-clusters-app + ... [1646286638.375844][11651:11651] CHIP:DL: Device Configuration: [1646286638.375960][11651:11651] CHIP:DL: Serial Number: TEST_SN [1646286638.376016][11651:11651] CHIP:DL: Vendor Id: 65521 (0xFFF1) @@ -38,12 +40,12 @@ tests: [1646286638.377664][11651:11651] CHIP:DL: Device Type: 65535 (0xFFFF) [1646286638.377771][11651:11651] CHIP:SVR: SetupQRCode: [MT:-24J042C00KA0648G00] [1646286638.377865][11651:11651] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: - [1646286638.377915][11651:11651] CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J042C00KA0648G00 + [1646286638.377915][11651:11651] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J042C00KA0648G00 [1646286638.377986][11651:11651] CHIP:SVR: Manual pairing code: [34970112332] [1646286638.378089][11651:11651] CHIP:SVR: Long manual pairing code: [749701123365521327694] disabled: true - label: "Bring the DUT close to the NFC tag for the TH Device" verification: | - Vendor specific field testcase + Vendor specific field testcase as chip-all-clusters-app does not have an NFC tag to scan disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_11.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_11.yaml index 7df34462215563..0a3fd6db64b3fd 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_1_11.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_1_11.yaml @@ -24,64 +24,33 @@ config: tests: - label: - "If (PICS_DT_CTRL_CONCATENATED_QR_CODE_1), scan larger QR code that - will support the commissioning of all the devices" + "Scan larger QR code that will support the commissioning of all the TH + devices" PICS: MCORE.DD.CTRL_CONCATENATED_QR_CODE_1 verification: | - '' ./chip-all-clusters-app - - - [1646286638.375844][11651:11651] CHIP:DL: Device Configuration: - [1646286638.375960][11651:11651] CHIP:DL: Serial Number: TEST_SN - [1646286638.376016][11651:11651] CHIP:DL: Vendor Id: 65521 (0xFFF1) - [1646286638.376066][11651:11651] CHIP:DL: Product Id: 32769 (0x8001) - [1646286638.376153][11651:11651] CHIP:DL: Hardware Version: 0 - [1646286638.377458][11651:11651] CHIP:DL: Setup Pin Code: 20202021 - [1646286638.377541][11651:11651] CHIP:DL: Setup Discriminator: 3840 (0xF00) - [1646286638.377611][11651:11651] CHIP:DL: Manufacturing Date: (not set) - [1646286638.377664][11651:11651] CHIP:DL: Device Type: 65535 (0xFFFF) - [1646286638.377771][11651:11651] CHIP:SVR: SetupQRCode: [MT:-24J042C00KA0648G00] - [1646286638.377865][11651:11651] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: - [1646286638.377915][11651:11651] CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J042C00KA0648G00 - [1646286638.377986][11651:11651] CHIP:SVR: Manual pairing code: [34970112332] - [1646286638.378089][11651:11651] CHIP:SVR: Long manual pairing code: [749701123365521327694] - - - - - ./chip-tool payload parse-setup-payload MT:-24J042C00KA0648G00 - [1646287790.029238][8190:8190] CHIP:SPL: Parsing base38Representation: MT:-24J042C00KA0648G00 - [1646287790.029368][8190:8190] CHIP:SPL: CommissioningFlow: 0 - [1646287790.029393][8190:8190] CHIP:SPL: VendorID: 65521 - [1646287790.029413][8190:8190] CHIP:SPL: Version: 0 - [1646287790.029432][8190:8190] CHIP:SPL: ProductID: 32769 - [1646287790.029451][8190:8190] CHIP:SPL: Discriminator: 3840 - [1646287790.029469][8190:8190] CHIP:SPL: SetUpPINCode: 20202021 - [1646287790.029488][8190:8190] CHIP:SPL: RendezvousInformation: 2 - disabled: true - - - label: "If (PICS_DT_CTRL_CONCATENATED_QR_CODE_1)" - PICS: MCORE.DD.CTRL_CONCATENATED_QR_CODE_1 - verification: | - Vendor specific field testcase - disabled: true - - - label: - "If !(PICS_DT_CTRL_CONCATENATED_QR_CODE_1) && - PICS_DT_CTRL_CONCATENATED_QR_CODE_2" - PICS: - "!MCORE.DD.CTRL_CONCATENATED_QR_CODE_1 && - MCORE.DD.CTRL_CONCATENATED_QR_CODE_2" - verification: | - Vendor specific field testcase - disabled: true - - - label: - "If !(PICS_DT_CTRL_CONCATENATED_QR_CODE_1) && - !(PICS_DT_CTRL_CONCATENATED_QR_CODE_2)" - PICS: - "!MCORE.DD.CTRL_CONCATENATED_QR_CODE_1 && - !MCORE.DD.CTRL_CONCATENATED_QR_CODE_2" - verification: | - Vendor specific field testcase + Out of Scope for V1.0 as Concatenated QR codes are not supported yet + https://github.com/project-chip/connectedhomeip/issues/5331 + + 1. Lauch TH chip-all-clusters-app + ubuntu@matter-7:~/Apr18_dut/connectedhomeip/examples/all-clusters-app/linux/out/all-clusters-app$ sudo ./chip-all-clusters-app --wifi + + [13293:13293] CHIP:DL: Device Configuration: + [1653306603.740569][13293:13293] CHIP:DL: Serial Number: TEST_SN + [1653306603.740607][13293:13293] CHIP:DL: Vendor Id: 65521 (0xFFF1) + [1653306603.740644][13293:13293] CHIP:DL: Product Id: 32769 (0x8001) + [1653306603.740676][13293:13293] CHIP:DL: Hardware Version: 0 + [1653306603.740700][13293:13293] CHIP:DL: Setup Pin Code (0 for UNKNOWN/ERROR): 20202021 + [1653306603.740722][13293:13293] CHIP:DL: Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3840 (0xF00) + [1653306603.740752][13293:13293] CHIP:DL: Manufacturing Date: (not set) + [1653306603.740777][13293:13293] CHIP:DL: Device Type: 65535 (0xFFFF) + [1653306603.740798][13293:13293] CHIP:-: ==== Onboarding payload for Standard Commissioning Flow ==== + [1653306603.740846][13293:13293] CHIP:SVR: SetupQRCode: [MT:-24J042C00KA0648G00] + [1653306603.740877][13293:13293] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: + [1653306603.740898][13293:13293] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J042C00KA0648G00 + [1653306603.740929][13293:13293] CHIP:SVR: Manual pairing code: [34970112332] + [1653306603.740951][13293:13293] CHIP:-: ==== Onboarding payload for Custom Commissioning Flows ==== + [1653306603.741000][13293:13293] CHIP:SVR: SetupQRCode: [MT:-24J0YXE00KA0648G00] + [1653306603.741028][13293:13293] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: + [1653306603.741049][13293:13293] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0YXE00KA0648G00 + [1653306603.741081][13293:13293] CHIP:SVR: Manual pairing code: [749701123365521327694] disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_12.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_12.yaml index 9b46d0b310964f..49a47c61f600d7 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_1_12.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_1_12.yaml @@ -25,19 +25,31 @@ config: tests: - label: "Scan the DUTs QR code using the TH." verification: | - 1. Run DUT. Example for DUT=all-clusters app + 1. Run DUT. Example for DUT=all-clusters-app $ ./out/all-clusters-app/chip-all-clusters-app --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --custom-flow 0 --capabilities 4 --discriminator 3840 --passcode 20202021 + ... + [1657213978.633542][366513:366513] CHIP:DL: Device Configuration: + [1657213978.633637][366513:366513] CHIP:DL: Serial Number: (not set) + [1657213978.633681][366513:366513] CHIP:DL: Vendor Id: 65521 (0xFFF1) + [1657213978.633721][366513:366513] CHIP:DL: Product Id: 32769 (0x8001) + [1657213978.633773][366513:366513] CHIP:DL: Hardware Version: 0 + [1657213978.633815][366513:366513] CHIP:DL: Setup Pin Code (0 for UNKNOWN/ERROR): 20202021 + [1657213978.633875][366513:366513] CHIP:DL: Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3840 (0xF00) + [1657213978.633927][366513:366513] CHIP:DL: Manufacturing Date: (not set) + [1657213978.633985][366513:366513] CHIP:DL: Device Type: 65535 (0xFFFF) + [1657213978.634025][366513:366513] CHIP:-: ==== Onboarding payload for Standard Commissioning Flow ==== + [1657213978.634100][366513:366513] CHIP:SVR: SetupQRCode: [MT:-24J0AFN00KA0648G00] 2. Parse onboarding payload using TH=chip-tool - $ ./out/chip-tool/chip-tool payload parse-setup-payload MT:-24J0AFN00KA0648G00 - [1651193251086] [15494:447566] CHIP: [SPL] Parsing base38Representation: MT:-24J0AFN00KA0648G00 - [1651193251087] [15494:447566] CHIP: [SPL] CommissioningFlow: 0 - [1651193251087] [15494:447566] CHIP: [SPL] VendorID: 65521 - [1651193251087] [15494:447566] CHIP: [SPL] Version: 0 - [1651193251087] [15494:447566] CHIP: [SPL] ProductID: 32769 - [1651193251087] [15494:447566] CHIP: [SPL] Discriminator: 3840 - [1651193251087] [15494:447566] CHIP: [SPL] SetUpPINCode: 20202021 - [1651193251087] [15494:447566] CHIP: [SPL] RendezvousInformation: 4 + $ ./chip-tool payload parse-setup-payload MT:-24J0AFN00KA0648G00 + [1657214153060] [29000:16610528] CHIP: [SPL] Parsing base38Representation: MT:-24J0AFN00KA0648G00 + [1657214153060] [29000:16610528] CHIP: [SPL] Version: 0 + [1657214153060] [29000:16610528] CHIP: [SPL] VendorID: 65521 + [1657214153060] [29000:16610528] CHIP: [SPL] ProductID: 32769 + [1657214153060] [29000:16610528] CHIP: [SPL] Custom flow: 0 (STANDARD) + [1657214153060] [29000:16610528] CHIP: [SPL] Capabilities: 0x04 (On IP network) + [1657214153060] [29000:16610528] CHIP: [SPL] Discriminator: 3840 + [1657214153060] [29000:16610528] CHIP: [SPL] Passcode: 20202021 disabled: true - label: @@ -53,19 +65,17 @@ tests: "If CommissioningCustomFlow field in Step 2 = 0 (Standard Commissioning Flow), reboot the DUT device" verification: | - 1. Verify DUT is advertising in commissioning mode. On DUT, + 1. Verify DUT is advertising in commissioning mode. On DUT, verify through commissioning - $ ./out/chip-tool/chip-tool discover commissionables - [1651192893436] [15304:442604] CHIP: [DL] Mdns: OnNewAddress interface: 24 ip:fe80::dea6:32ff:fe8d:6e32 - [1651192893436] [15304:442604] CHIP: [DIS] Vendor ID: 65521 - [1651192893436] [15304:442604] CHIP: [DIS] Product ID: 32769 - [1651192893436] [15304:442604] CHIP: [DIS] Long Discriminator: 3840 - [1651192893436] [15304:442604] CHIP: [DIS] Pairing Hint: 33 - [1651192893436] [15304:442604] CHIP: [DIS] Hostname: DCA6328D6E320000 - [1651192893436] [15304:442604] CHIP: [DIS] Instance Name: 914762134DA8E7D1 - [1651192893436] [15304:442604] CHIP: [DIS] IP Address #1: fe80::dea6:32ff:fe8d:6e32 - [1651192893436] [15304:442604] CHIP: [DIS] Port: 5540 - [1651192893436] [15304:442604] CHIP: [DIS] Commissioning Mode: 1 - [1651192893436] [15304:442604] CHIP: [DIS] Mrp Interval idle: 5000 ms - [1651192893436] [15304:442604] CHIP: [DIS] Mrp Interval active: 300 ms + $ ./chip-tool pairing code 1 MT:-24J0AFN00KA0648G00 + ... + [1657214364908] [29006:16612760] CHIP: [CTL] Starting commissioning discovery over DNS-SD + [1657214364908] [29006:16612760] CHIP: [DL] Browsing for: _matterc._udp,_L3840 + [1657214365080] [29006:16612761] CHIP: [DL] Mdns: OnBrowseAdd name: E5EFE5FB9DC494B9, type: _matterc._udp., domain: local., interface: 7 + [1657214365080] [29006:16612761] CHIP: [DL] Resolve type=_matterc._udp name=E5EFE5FB9DC494B9 interface=7 + [1657214365080] [29006:16612761] CHIP: [DL] Mdns : OnNewInterface hostname:DCA6328D2B9F0000.local. fullname:E5EFE5FB9DC494B9._matterc._udp.local. interface: 7 + [1657214365082] [29006:16612761] CHIP: [DL] Mdns: OnNewAddress interface: 7 ip:fd54:23a1:c6de:4637:4c4:ee82:2a0f:b5e2 + [1657214365082] [29006:16612761] CHIP: [DL] Mdns: OnNewAddress interface: 7 ip:fe80::1e81:3e0:3865:2d29 + [1657214365082] [29006:16612761] CHIP: [DL] Mdns: OnNewAddress interface: 7 ip:192.168.1.10 + [1657214365082] [29006:16612761] CHIP: [CTL] Discovered device to be commissioned over DNS-SD disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_13.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_13.yaml index 7e3257491440e0..dda362c1378f00 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_1_13.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_1_13.yaml @@ -27,7 +27,7 @@ tests: verification: | 1. Verify DUT is NOT advertising in commissioning mode. On DUT, the DUT should not show up - $ ./out/chip-tool/chip-tool discover commissionables + $ ./chip-tool discover commissionables disabled: true - label: "Scan the DUTs QR code from the previous step using the TH." @@ -36,7 +36,7 @@ tests: $ ./out/all-clusters-app/chip-all-clusters-app --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --custom-flow 0 --capabilities 4 --discriminator 3840 --passcode 20202021 2. Parse onboarding payload using TH=chip-tool - $ ./out/chip-tool/chip-tool payload parse-setup-payload MT:-24J0AFN00KA0648G00 + $ ./chip-tool payload parse-setup-payload MT:-24J0AFN00KA0648G00 [1651193251086] [15494:447566] CHIP: [SPL] Parsing base38Representation: MT:-24J0AFN00KA0648G00 [1651193251087] [15494:447566] CHIP: [SPL] CommissioningFlow: 1 [1651193251087] [15494:447566] CHIP: [SPL] VendorID: 65521 @@ -64,7 +64,7 @@ tests: 2. Verify DUT is advertising in commissioning mode. On DUT, - $ ./out/chip-tool/chip-tool discover commissionables + $ ./chip-tool discover commissionables [1651192893436] [15304:442604] CHIP: [DL] Mdns: OnNewAddress interface: 24 ip:fe80::dea6:32ff:fe8d:6e32 [1651192893436] [15304:442604] CHIP: [DIS] Vendor ID: 65521 [1651192893436] [15304:442604] CHIP: [DIS] Product ID: 32769 diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_14.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_14.yaml index ac7ae83602bec6..4cbbb65801c4dc 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_1_14.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_1_14.yaml @@ -27,7 +27,7 @@ tests: verification: | 1. Verify DUT is NOT advertising in commissioning mode. On DUT, the DUT should not show up - $ ./out/chip-tool/chip-tool discover commissionables + $ ./chip-tool discover commissionables disabled: true - label: "Scan the DUTs QR code from the previous step using the TH." @@ -36,7 +36,7 @@ tests: $ ./out/all-clusters-app/chip-all-clusters-app --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --custom-flow 0 --capabilities 4 --discriminator 3840 --passcode 20202021 2. Parse onboarding payload using TH=chip-tool - $ ./out/chip-tool/chip-tool payload parse-setup-payload MT:-24J0AFN00KA0648G00 + $ ./chip-tool payload parse-setup-payload MT:-24J0AFN00KA0648G00 [1651193251086] [15494:447566] CHIP: [SPL] Parsing base38Representation: MT:-24J0AFN00KA0648G00 [1651193251087] [15494:447566] CHIP: [SPL] CommissioningFlow: 2 [1651193251087] [15494:447566] CHIP: [SPL] VendorID: 65521 @@ -52,8 +52,9 @@ tests: CommissioningCustomFlowUrl field of the DCL. Verify that the CommissioningCustomFlow field is set to a value = 2" verification: | - 1. Verify CommissioningCustomFlow=1 - 2. Verify CommissioningModeInitialStepsHint contains a valid, non-zero integer + 1. Verify CommissioningCustomFlow=2 + 2. Verify CommissioningModeInitialStepsHint has bit 0 (Power Cycle) set to 0 and bit 1 (Device Manufacturer URL) set to 1 + 3. Verify CommissioningModeInitialStepsHint contains a valid, non-zero integer disabled: true - label: @@ -64,7 +65,7 @@ tests: 2. Verify DUT is advertising in commissioning mode. On DUT, - $ ./out/chip-tool/chip-tool discover commissionables + $ ./chip-tool discover commissionables [1651192893436] [15304:442604] CHIP: [DL] Mdns: OnNewAddress interface: 24 ip:fe80::dea6:32ff:fe8d:6e32 [1651192893436] [15304:442604] CHIP: [DIS] Vendor ID: 65521 [1651192893436] [15304:442604] CHIP: [DIS] Product ID: 32769 diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_15.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_15.yaml index 7b141c0887ce64..afd18c0f80739d 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_1_15.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_1_15.yaml @@ -29,7 +29,7 @@ tests: verification: | 1. Parse payload for DUT1 - $ ./out/chip-tool/chip-tool payload parse-setup-payload MT:-24J0AFN00KA0648G00 + $ ./chip-tool payload parse-setup-payload MT:-24J0AFN00KA0648G00 [1651194471211] [16050:465158] CHIP: [SPL] Parsing base38Representation: MT:-24J0AFN00KA0648G00 [1651194471211] [16050:465158] CHIP: [SPL] CommissioningFlow: 0 [1651194471211] [16050:465158] CHIP: [SPL] VendorID: 65521 @@ -42,7 +42,7 @@ tests: - label: "Using the TH, parse the Onboarding payload from previous step and - verify that the Descriminator and Passcode for DUT1 are present." + verify that the Discriminator and Passcode for DUT1 are present." verification: | DUT1 Descriminator: 3840 DUT1 Passcode: 20202021 @@ -54,7 +54,7 @@ tests: verification: | 1. Parse payload for DUT2 - $ ./out/chip-tool/chip-tool payload parse-setup-payload MT:-24J0IRV01WCCN68G00 + $ ./chip-tool payload parse-setup-payload MT:-24J0IRV01WCCN68G00 [1651194577916] [16053:466154] CHIP: [SPL] Parsing base38Representation: MT:-24J0IRV01WCCN68G00 [1651194577916] [16053:466154] CHIP: [SPL] CommissioningFlow: 0 [1651194577916] [16053:466154] CHIP: [SPL] VendorID: 65521 @@ -67,21 +67,21 @@ tests: - label: "Using the TH, parse the Onboarding payload from previous step and - verify that the Descriminator and Passcode for DUT2 are present." + verify that the Discriminator and Passcode for DUT2 are present." verification: | DUT2 Descriminator: 3841 DUT2 Passcode: 20212022 disabled: true - label: - "Compare the Descriminator values for DUT1 (Step 1.b) and DUT2 (Step + "Compare the Discriminator values for DUT1 (Step 1.b) and DUT2 (Step 2.b)" verification: | - 1. Verify DUT1 Descriminator does not equal DUT2 Descriminator + 1. Verify DUT1 Descriminator in Step 1.b is NOT equal to DUT2 Descriminator in Step 2.b disabled: true - label: "Compare the Passcode values for DUT1 (Step 1.b) and DUT2 (Step 2.b)" verification: | - 1. Verify DUT1 Passcode does not equal DUT2 Passcode + Verify DUT1 Passcode in step 1b is not equal DUT2 Passcode in step 2b disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_8.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_8.yaml index 63830076c49f14..1041553a11821c 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_1_8.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_1_8.yaml @@ -41,12 +41,12 @@ tests: [1653306603.740798][13293:13293] CHIP:-: ==== Onboarding payload for Standard Commissioning Flow ==== [1653306603.740846][13293:13293] CHIP:SVR: SetupQRCode: [MT:-24J042C00KA0648G00] [1653306603.740877][13293:13293] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: - [1653306603.740898][13293:13293] CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J042C00KA0648G00 + [1653306603.740898][13293:13293] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J042C00KA0648G00 [1653306603.740929][13293:13293] CHIP:SVR: Manual pairing code: [34970112332] [1653306603.740951][13293:13293] CHIP:-: ==== Onboarding payload for Custom Commissioning Flows ==== [1653306603.741000][13293:13293] CHIP:SVR: SetupQRCode: [MT:-24J0YXE00KA0648G00] [1653306603.741028][13293:13293] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: - [1653306603.741049][13293:13293] CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0YXE00KA0648G00 + [1653306603.741049][13293:13293] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0YXE00KA0648G00 [1653306603.741081][13293:13293] CHIP:SVR: Manual pairing code: [749701123365521327694] CHIP:DL: Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3841 (0xF01) @@ -54,17 +54,18 @@ tests: CHIP:DL: Device Type: 65535 (0xFFFF) CHIP:SVR: SetupQRCode: [MT:-24J0CEK01KA0648G00] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: - CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0CEK01KA0648G00 + CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0CEK01KA0648G00 CHIP:SVR: Manual pairing code: [34970112332] CHIP:SVR: SetupQRCode: [MT:-24J048N01KA0648G00] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: - CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J048N01KA0648G00 + CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J048N01KA0648G00 2. Parse the DUT's QR Code using the TH commissioner: chip-tool ubuntu@matter-7:~/Apr18_cntrl/connectedhomeip/examples/chip-tool/out/debug$ ./chip-tool payload parse-setup-payload MT:-24J048N01KA0648G00 + Verify in DUT as client side: [1650266365.939678][10146:10146] CHIP:SPL: CommissioningFlow: 2 [1650266365.939704][10146:10146] CHIP:SPL: VendorID: 65521 [1650266365.939724][10146:10146] CHIP:SPL: Version: 0 @@ -80,6 +81,7 @@ tests: verification: | ./chip-tool pairing code 1 MT:-24J042C00KA0648G00 + Verify in DUT as client side: CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0005 CHIP:CTL: Received CommissioningComplete response, errorCode=0 CHIP:CTL: Successfully finished commissioning step 'SendComplete' @@ -89,3 +91,36 @@ tests: CHIP:TOO: Device commissioning completed with success CHIP:DMG: ICR moving to [AwaitingDe] disabled: true + + - label: + 'Scan the TH Devices QR code (that includes the additional TLV data) + using DUT. Using the example provided above, the payload would be + "MT:-24J029Q00KA064IJ3P0IXZB0DK5N1K8SQ1RYCU1-A40".' + PICS: MCORE.DD.SCAN_QR_CODE + verification: | + 1. Get QR code from TH as server side: + $ ./out/all-clusters-app/chip-all-clusters-app + ... + [1657211128.302755][365927:365927] CHIP:SVR: SetupQRCode: [MT:-24J029Q00KA0648G00] + [1657211128.302783][365927:365927] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: + [1657211128.302804][365927:365927] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J029Q00KA0648G00 + + 2. Build TLV Data into TH's QR code + $ ./chip-tool payload generate-qrcode --existing-payload MT:-24J029Q00KA0648G00 --tlvBytes hex:152C000A3132333435363738393018 + [1657211213125] [28612:16578643] CHIP: [TOO] QR Code: MT:-24J029Q00KA064IJ3P0IXZB0DK5N1K8SQ1RYCU1-A40 + disabled: true + + - label: + "Using the DUT, parse the THs QR code to onboard the TH Device onto + the Matter network." + verification: | + ./chip-tool pairing code 1 MT:-24J0AFN00KA064IJ3P0IXZB0DK5N1K8SQ1RYCU1-A40 + + Verify in DUT as client side: + [1657210956708] [28601:16575811] CHIP: [CTL] Received CommissioningComplete response, errorCode=0 + [1657210956708] [28601:16575811] CHIP: [CTL] Successfully finished commissioning step 'SendComplete' + [1657210956708] [28601:16575811] CHIP: [CTL] Commissioning stage next step: 'SendComplete' -> 'Cleanup' + [1657210956708] [28601:16575811] CHIP: [CTL] Performing next commissioning step 'Cleanup' + [1657210956708] [28601:16575811] CHIP: [CTL] Successfully finished commissioning step 'Cleanup' + [1657210956709] [28601:16575811] CHIP: [TOO] Device commissioning completed with success + disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_9.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_9.yaml index 9f3d1c65ffc459..19f9ae2248436d 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_1_9.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_1_9.yaml @@ -27,31 +27,35 @@ tests: "Provide the 11-digit/21-digit Manual Pairing Code from the TH Device in text, speech or any format supported by DUT" verification: | - 1. Launch all-clusters-app on the raspi , get the Manual Pairing code from the log, Controller should be able to parse the Manual Pairing code + 1. Launch all-clusters-app on the raspi , get the Manual Pairing code from the log - ubuntu@matter-7:~/Apr18_dut/connectedhomeip/examples/all-clusters-app/linux/out/all-clusters-app$ sudo ./chip-all-clusters-app --wifi --discriminator 3841 + ubuntu@matter-7:~/Apr18_dut/connectedhomeip/examples/all-clusters-app/linux/out/all-clusters-app$ sudo ./chip-all-clusters-app --wifi - CHIP:SPT: PASE PBKDF iterations set to 1000 - CHIP:SPT: LinuxCommissionableDataProvider didn't get a PASE salt, generating one. - CHIP:DL: Device Configuration: - CHIP:DL: Serial Number: TEST_SN - CHIP:DL: Vendor Id: 65521 (0xFFF1) - CHIP:DL: Product Id: 32769 (0x8001) - CHIP:DL: Hardware Version: 0 - CHIP:DL: Setup Pin Code (0 for UNKNOWN/ERROR): 20202021 - CHIP:DL: Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3841 (0xF01) - CHIP:DL: Manufacturing Date: (not set) - CHIP:DL: Device Type: 65535 (0xFFFF) - CHIP:SVR: SetupQRCode: [MT:-24J0CEK01KA0648G00] - CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: - CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0CEK01KA0648G00 - CHIP:SVR: Manual pairing code: [34970112332] - CHIP:SVR: SetupQRCode: [MT:-24J048N01KA0648G00] - CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: - CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J048N01KA0648G00 + [13293:13293] CHIP:DL: Device Configuration: + [1653306603.740569][13293:13293] CHIP:DL: Serial Number: TEST_SN + [1653306603.740607][13293:13293] CHIP:DL: Vendor Id: 65521 (0xFFF1) + [1653306603.740644][13293:13293] CHIP:DL: Product Id: 32769 (0x8001) + [1653306603.740676][13293:13293] CHIP:DL: Hardware Version: 0 + [1653306603.740700][13293:13293] CHIP:DL: Setup Pin Code (0 for UNKNOWN/ERROR): 20202021 + [1653306603.740722][13293:13293] CHIP:DL: Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3840 (0xF00) + [1653306603.740752][13293:13293] CHIP:DL: Manufacturing Date: (not set) + [1653306603.740777][13293:13293] CHIP:DL: Device Type: 65535 (0xFFFF) + [1653306603.740798][13293:13293] CHIP:-: ==== Onboarding payload for Standard Commissioning Flow ==== + [1653306603.740846][13293:13293] CHIP:SVR: SetupQRCode: [MT:-24J042C00KA0648G00] + [1653306603.740877][13293:13293] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: + [1653306603.740898][13293:13293] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J042C00KA0648G00 + [1653306603.740929][13293:13293] CHIP:SVR: Manual pairing code: [34970112332] + [1653306603.740951][13293:13293] CHIP:-: ==== Onboarding payload for Custom Commissioning Flows ==== + [1653306603.741000][13293:13293] CHIP:SVR: SetupQRCode: [MT:-24J0YXE00KA0648G00] + [1653306603.741028][13293:13293] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: + [1653306603.741049][13293:13293] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0YXE00KA0648G00 + [1653306603.741081][13293:13293] CHIP:SVR: Manual pairing code: [749701123365521327694] + 2. Parse 11-digit Manual Pairing code ubuntu@matter-7:~/Apr18_cntrl/connectedhomeip/examples/chip-tool/out/debug$ ./chip-tool payload parse-setup-payload 34970112332 + + Verify in DUT as client side: CHIP:SPL: Parsing decimalRepresentation: 34970112332 CHIP:SPL: CommissioningFlow: 0 CHIP:SPL: VendorID: 0 @@ -61,7 +65,10 @@ tests: CHIP:SPL: SetUpPINCode: 20202021 CHIP:SPL: RendezvousInformation: 0 + 3. Parse 21-digit Manual Pairing code ubuntu@matter-7:~/Apr18_cntrl/connectedhomeip/examples/chip-tool/out/debug$ ./chip-tool payload parse-setup-payload 749701123365521327694 + + Verify in DUT as client side: CHIP:SPL: Parsing decimalRepresentation: 749701123365521327694 CHIP:SPL: CommissioningFlow: 2 CHIP:SPL: VendorID: 65521 @@ -70,4 +77,18 @@ tests: CHIP:SPL: Discriminator: 3840 CHIP:SPL: SetUpPINCode: 20202021 CHIP:SPL: RendezvousInformation: 0 + + 4. Parse payload by commissioning the TH + ./chip-tool pairing code 1 34970112332 + + Verify in DUT as client side: + [1653556303.582797][4071:4076] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0005 + [1653556303.582850][4071:4076] CHIP:CTL: Received CommissioningComplete response, errorCode=0 + [1653556303.582891][4071:4076] CHIP:CTL: Successfully finished commissioning step 'SendComplete' + [1653556303.582927][4071:4076] CHIP:CTL: Commissioning stage next step: 'SendComplete' -> 'Cleanup' + [1653556303.582964][4071:4076] CHIP:CTL: Performing next commissioning step 'Cleanup' + [1653556303.583040][4071:4076] CHIP:CTL: Successfully finished commissioning step 'Cleanup' + [1653556303.583110][4071:4076] CHIP:TOO: Device commissioning completed with success + [1653556303.583209][4071:4076] CHIP:DMG: ICR moving to [AwaitingDe] + [1653556303.583255][4071:4076] CHIP:EM: Sending Standalone Ack for MessageCounter:9735725 on exchange 24476i disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_1.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_1.yaml index 18c6edcbc079f2..d97e50beb3830a 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_1.yaml @@ -41,12 +41,12 @@ tests: [1653471956.972509][10713:10713] CHIP:-: ==== Onboarding payload for Standard Commissioning Flow ==== [1653471956.972546][10713:10713] CHIP:SVR: SetupQRCode: [MT:-24J0CEK01KA0648G00] [1653471956.972579][10713:10713] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: - [1653471956.972600][10713:10713] CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0CEK01KA0648G00 + [1653471956.972600][10713:10713] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0CEK01KA0648G00 [1653471956.972632][10713:10713] CHIP:SVR: Manual pairing code: [34970112332] [1653471956.972654][10713:10713] CHIP:-: ==== Onboarding payload for Custom Commissioning Flows ==== [1653471956.972715][10713:10713] CHIP:SVR: SetupQRCode: [MT:-24J048N01KA0648G00] [1653471956.972748][10713:10713] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: - [1653471956.972769][10713:10713] CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J048N01KA0648G00 + [1653471956.972769][10713:10713] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J048N01KA0648G00 [1653471956.972803][10713:10713] CHIP:SVR: Manual pairing code: [749701123365521327694] @@ -244,8 +244,8 @@ tests: disabled: true - label: - "If (PICS_WIFI) or (PICS_THREAD), Commissioner SHALL configure - regulatory information in the Commissionee." + "Commissioner SHALL configure regulatory information in the + Commissionee." PICS: MCORE.DD.WIRELESS verification: | Verify on TH Log: diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_10.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_10.yaml index 2bc80b4dc717f8..936e6943fe2c1b 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_10.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_10.yaml @@ -29,16 +29,16 @@ tests: verification: | 1. Parse the TH Onboarding Payload using the DUT commissioner - Example using chip-too as a DUT: - $ ./out/chip-tool/chip-tool payload parse-setup-payload MT:-24J029Q00KA0648G00 - [1651077458589] [91233:65331701] CHIP: [SPL] Parsing base38Representation: MT:-24J029Q00KA0648G00 - [1651077458590] [91233:65331701] CHIP: [SPL] CommissioningFlow: 2 - [1651077458590] [91233:65331701] CHIP: [SPL] VendorID: 65521 - [1651077458590] [91233:65331701] CHIP: [SPL] Version: 0 - [1651077458590] [91233:65331701] CHIP: [SPL] ProductID: 32769 - [1651077458590] [91233:65331701] CHIP: [SPL] Discriminator: 3840 - [1651077458590] [91233:65331701] CHIP: [SPL] SetUpPINCode: 20202021 - [1651077458590] [91233:65331701] CHIP: [SPL] RendezvousInformation: 4 + Example using chip-tool as a DUT: + $ ./chip-tool payload parse-setup-payload MT:-24J029Q00KA0648G00 + [1657230447725] [31078:16782733] CHIP: [SPL] Parsing base38Representation: MT:-24J029Q00KA0648G00 + [1657230447725] [31078:16782733] CHIP: [SPL] Version: 0 + [1657230447725] [31078:16782733] CHIP: [SPL] VendorID: 65521 + [1657230447725] [31078:16782733] CHIP: [SPL] ProductID: 32769 + [1657230447725] [31078:16782733] CHIP: [SPL] Custom flow: 2 (CUSTOM) + [1657230447725] [31078:16782733] CHIP: [SPL] Capabilities: 0x04 (On IP network) + [1657230447725] [31078:16782733] CHIP: [SPL] Discriminator: 3840 + [1657230447725] [31078:16782733] CHIP: [SPL] Passcode: 20202021 2. Verify that the Commissioning Flow is set to 2 (Custom Flow) disabled: true @@ -53,26 +53,15 @@ tests: - label: "Using the instructions located at the CommissioningCustomFlowURL from the DCL, DUT guides the user in next steps to prepare the commissionee - (TH) for commisssioning" + (TH) for commissioning" verification: | 1. Follow instructions for commissioning using the URL contained in the DCL disabled: true - label: "DUT commissions TH" verification: | - 1. Verify commissioning was successful + $ ./chip-tool pairing code 1 MT:-24J029Q00KA0648G00 - TH all-clusters-app: - [1651103591.176135][8940:8940] CHIP:SVR: Commissioning completed successfully - [1651103591.176179][8940:8940] CHIP:DIS: Updating services using commissioning mode 0 - - DUT chip-tool: - $ ./out/chip-tool/chip-tool pairing qrcode 1 MT:-24J029Q00KA0648G00 - - [1651103591085] [94586:65580481] CHIP: [CTL] Received CommissioningComplete response - [1651103591085] [94586:65580481] CHIP: [CTL] Successfully finished commissioning step 'SendComplete' - [1651103591085] [94586:65580481] CHIP: [CTL] Commissioning stage next step: 'SendComplete' -> 'Cleanup' - [1651103591085] [94586:65580481] CHIP: [CTL] Performing next commissioning step 'Cleanup' - [1651103591085] [94586:65580481] CHIP: [CTL] Successfully finished commissioning step 'Cleanup' - [1651103591085] [94586:65580481] CHIP: [TOO] Device commissioning completed with success + [1657578523795] [9610:351965] CHIP: [CTL] Successfully finished commissioning step 'Cleanup' + [1657578523795] [9610:351965] CHIP: [TOO] Device commissioning completed with success disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_11.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_11.yaml index 85e9e0c6f4dbee..8d65d3338b3e5e 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_11.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_11.yaml @@ -28,62 +28,53 @@ tests: has the Custom Flow field set to 0 and supports BLE for its Discovery Capability. Ensure the Version bit string follows the current Matter spec. documentation." - PICS: MCORE.DD.DT_BLE + PICS: MCORE.DD.DISCOVERY_BLE verification: | - $ ./out/ble/all-clusters-app/chip-all-clusters-app --capabilities 2 + $ ./out/ble/all-clusters-app/chip-all-clusters-app --capabilities 2 --ble-device 1 ... - [1651101335.714230][22353:22353] CHIP:DL: Device Configuration: - [1651101335.722064][22353:22353] CHIP:DL: Serial Number: TEST_SN - [1651101335.722638][22353:22353] CHIP:DL: Vendor Id: 65521 (0xFFF1) - [1651101335.723167][22353:22353] CHIP:DL: Product Id: 32769 (0x8001) - [1651101335.723712][22353:22353] CHIP:DL: Hardware Version: 0 - [1651101335.724228][22353:22353] CHIP:DL: Setup Pin Code (0 for UNKNOWN/ERROR): 20202021 - [1651101335.724756][22353:22353] CHIP:DL: Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3840 (0xF00) - [1651101335.725226][22353:22353] CHIP:DL: Manufacturing Date: (not set) - [1651101335.725721][22353:22353] CHIP:DL: Device Type: 65535 (0xFFFF) - [1651101335.733693][22353:22353] CHIP:-: ==== Onboarding payload for Standard Commissioning Flow ==== - [1651101335.734598][22353:22353] CHIP:SVR: SetupQRCode: [MT:-24J042C00KA0648G00] - [1651101335.735182][22353:22353] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: - [1651101335.735618][22353:22353] CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J042C00KA0648G00 - - - ubuntu@ubuntu:~/apps$ ./chip-tool payload parse-setup-payload MT:-24J0YXE00KA0648G00 - [1653562354.037031][4312:4312] CHIP:SPL: Parsing base38Representation: MT:-24J0YXE00KA0648G00 - [1653562354.037218][4312:4312] CHIP:SPL: Version: 0 - [1653562354.037243][4312:4312] CHIP:SPL: VendorID: 65521 - [1653562354.037263][4312:4312] CHIP:SPL: ProductID: 32769 - [1653562354.037283][4312:4312] CHIP:SPL: Custom flow: 2 (CUSTOM) - [1653562354.037337][4312:4312] CHIP:SPL: Capabilities: 0x02 (BLE) - [1653562354.037359][4312:4312] CHIP:SPL: Discriminator: 3840 - [1653562354.037378][4312:4312] CHIP:SPL: Passcode: 20202021 + [1657232267.387816][370320:370320] CHIP:DL: Device Configuration: + [1657232267.387853][370320:370320] CHIP:DL: Serial Number: (not set) + [1657232267.387907][370320:370320] CHIP:DL: Vendor Id: 65521 (0xFFF1) + [1657232267.387942][370320:370320] CHIP:DL: Product Id: 32769 (0x8001) + [1657232267.387974][370320:370320] CHIP:DL: Hardware Version: 0 + [1657232267.387996][370320:370320] CHIP:DL: Setup Pin Code (0 for UNKNOWN/ERROR): 20202021 + [1657232267.388017][370320:370320] CHIP:DL: Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3840 (0xF00) + [1657232267.388045][370320:370320] CHIP:DL: Manufacturing Date: (not set) + [1657232267.388067][370320:370320] CHIP:DL: Device Type: 65535 (0xFFFF) + [1657232267.388101][370320:370320] CHIP:SVR: SetupQRCode: [MT:-24J0YXE00KA0648G00] + [1657232267.388128][370320:370320] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: + [1657232267.388148][370320:370320] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0YXE00KA0648G00 + [1657232267.388182][370320:370320] CHIP:SVR: Manual pairing code: [749701123365521327694] disabled: true - label: "Scan the QR code from the previous step using the DUT." PICS: MCORE.DD.SCAN_QR_CODE verification: | - 1. Verify the QR code is scanned by DUT, chip-tool does not support physically scanning QR codes + 1. Verify the QR code is scanned by DUT. + Note: chip-tool does not support physically scanning QR codes disabled: true - label: "Using the DUT, parse the THs QR code and follow any steps needed for the Commissioner/Commissionee to complete the commissioning process using BLE" - PICS: MCORE.DD.DT_BLE + PICS: MCORE.DD.DISCOVERY_BLE verification: | TH Commissionee: - [1651101510.975272][22353:22353] CHIP:SVR: Commissioning completed successfully - [1651101510.975318][22353:22353] CHIP:DIS: Updating services using commissioning mode 0 + [1657232374.956508][370357:370357] CHIP:DL: HandlePlatformSpecificBLEEvent 32784 + [1657232374.956534][370357:370357] CHIP:SVR: Commissioning completed successfully + [1657232374.956577][370357:370357] CHIP:DIS: Updating services using commissioning mode 0 DUT Commissioner: - $ ./out/chip-tool/chip-tool pairing qrcode 1 MT:-24J042C00KA0648G00 - - [1651101510810] [94338:65557180] CHIP: [CTL] Received CommissioningComplete response - [1651101510810] [94338:65557180] CHIP: [CTL] Successfully finished commissioning step 'SendComplete' - [1651101510810] [94338:65557180] CHIP: [CTL] Commissioning stage next step: 'SendComplete' -> 'Cleanup' - [1651101510810] [94338:65557180] CHIP: [CTL] Performing next commissioning step 'Cleanup' - [1651101510810] [94338:65557180] CHIP: [CTL] Successfully finished commissioning step 'Cleanup' - [1651101510810] [94338:65557180] CHIP: [TOO] Device commissioning completed with success + $ ./chip-tool pairing code 1 MT:-24J0YXE00KA0648G00 + + [1657232374820] [31379:16804218] CHIP: [CTL] Received CommissioningComplete response, errorCode=0 + [1657232374820] [31379:16804218] CHIP: [CTL] Successfully finished commissioning step 'SendComplete' + [1657232374820] [31379:16804218] CHIP: [CTL] Commissioning stage next step: 'SendComplete' -> 'Cleanup' + [1657232374820] [31379:16804218] CHIP: [CTL] Performing next commissioning step 'Cleanup' + [1657232374820] [31379:16804218] CHIP: [CTL] Successfully finished commissioning step 'Cleanup' + [1657232374820] [31379:16804218] CHIP: [TOO] Device commissioning completed with success disabled: true - label: @@ -92,7 +83,7 @@ tests: Discovery Capability and is already on the same IP network as the DUT commissioner. Ensure the Version bit string follows the current Matter spec. documentation." - PICS: MCORE.DD.DT_IP + PICS: MCORE.DD.DISCOVERY_IP verification: | $ ./out/all-clusters-app/chip-all-clusters-app --custom-flow 0 --capabilities 4 @@ -107,18 +98,6 @@ tests: [1651105420.610886][27312:27312] CHIP:DL: Device Type: 65535 (0xFFFF) [1651105420.610907][27312:27312] CHIP:-: ==== Onboarding payload for Standard Commissioning Flow ==== [1651105420.610962][27312:27312] CHIP:SVR: SetupQRCode: [MT:-24J0AFN00KA0648G00] - - - ubuntu@ubuntu:~/may30_cntrl/connectedhomeip/examples/chip-tool/out/debug$ ./chip-tool payload parse-setup-payload MT:-24J0AFN00KA0648G00 - [1653998998.287050][2941:2941] CHIP:SPL: Parsing base38Representation: MT:-24J0AFN00KA0648G00 - [1653998998.287266][2941:2941] CHIP:SPL: Version: 0 - [1653998998.287293][2941:2941] CHIP:SPL: VendorID: 65521 - [1653998998.287313][2941:2941] CHIP:SPL: ProductID: 32769 - [1653998998.287332][2941:2941] CHIP:SPL: Custom flow: 0 (STANDARD) - [1653998998.287354][2941:2941] CHIP:SPL: Capabilities: 0x04 (On IP network) - [1653998998.287374][2941:2941] CHIP:SPL: Discriminator: 3840 - [1653998998.287394][2941:2941] CHIP:SPL: Passcode: 20202021 - ubuntu@ubuntu:~/may30_cntrl/connectedhomeip/examples/chip-tool/out/debug$ disabled: true - label: "Scan the QR code from the previous step using the DUT." @@ -131,7 +110,7 @@ tests: "Using the DUT, parse the THs QR code and follow any steps needed for the Commissioner/Commissionee to complete the commissioning process using IP Network" - PICS: MCORE.DD.DT_IP + PICS: MCORE.DD.DISCOVERY_IP verification: | TH Commissionee: @@ -139,7 +118,7 @@ tests: [1651105530.973215][27371:27371] CHIP:DIS: Updating services using commissioning mode 0 DUT Commissioner: - $ ./out/chip-tool/chip-tool pairing qrcode 1 MT:-24J0AFN00KA0648G00 + $ ./chip-tool pairing code 1 MT:-24J0AFN00KA0648G00 [1651105530854] [95067:65607294] CHIP: [CTL] Received CommissioningComplete response [1651105530854] [95067:65607294] CHIP: [CTL] Successfully finished commissioning step 'SendComplete' @@ -154,14 +133,17 @@ tests: has the Custom Flow field set to 0 and supports SoftAP for its Discovery Capability. Ensure the Version bit string follows the current Matter spec. documentation." - PICS: MCORE.DD.DT_SOFTAP + PICS: MCORE.DD.DISCOVERY_SOFTAP verification: | - BLOCKED: SoftAP commissioning not currently supported + Out of Scope for V1.0 + SoftAP commissioning not currently supported disabled: true - label: "Scan the QR code from the previous step using the DUT." PICS: MCORE.DD.SCAN_QR_CODE verification: | + Out of Scope for V1.0 + SoftAP commissioning not currently supported 1. Verify the QR code is scanned by DUT, chip-tool does not support physically scanning QR codes disabled: true @@ -169,7 +151,8 @@ tests: "Using the DUT, parse the THs QR code and follow any steps needed for the Commissioner/Commissionee to complete the commissioning process using SoftAP" - PICS: MCORE.DD.DT_SOFTAP + PICS: MCORE.DD.DISCOVERY_SOFTAP verification: | - BLOCKED: SoftAP commissioning not currently supported + Out of Scope for V1.0 + SoftAP commissioning not currently supported disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_12.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_12.yaml index 47a5969efc6af6..5565421d5de04e 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_12.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_12.yaml @@ -29,74 +29,56 @@ tests: Discovery Capability. Commissionee is NOT in commissioning mode. Ensure the Version bit string follows the current Matter spec. documentation." - PICS: MCORE.DD.DT_BLE + PICS: MCORE.DD.DISCOVERY_BLE verification: | - $ ./out/ble/all-clusters-app/chip-all-clusters-app --capabilities 2 --custom-flow 1 + $ ./out/ble/all-clusters-app/chip-all-clusters-app --capabilities 2 --custom-flow 1 --ble-device 1 ... - [1651101726.415743][23212:23212] CHIP:DL: Device Configuration: - [1651101726.415810][23212:23212] CHIP:DL: Serial Number: TEST_SN - [1651101726.415845][23212:23212] CHIP:DL: Vendor Id: 65521 (0xFFF1) - [1651101726.415880][23212:23212] CHIP:DL: Product Id: 32769 (0x8001) - [1651101726.415911][23212:23212] CHIP:DL: Hardware Version: 0 - [1651101726.415933][23212:23212] CHIP:DL: Setup Pin Code (0 for UNKNOWN/ERROR): 20202021 - [1651101726.415954][23212:23212] CHIP:DL: Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3840 (0xF00) - [1651101726.415983][23212:23212] CHIP:DL: Manufacturing Date: (not set) - [1651101726.416004][23212:23212] CHIP:DL: Device Type: 65535 (0xFFFF) - [1651101726.416046][23212:23212] CHIP:-: ==== Onboarding payload for Standard Commissioning Flow ==== - [1651101726.416115][23212:23212] CHIP:SVR: SetupQRCode: [MT:-24J00ID00KA0648G00] - - - ubuntu@ubuntu:~/may30_cntrl/connectedhomeip/examples/chip-tool/out/debug$ ./chip-tool payload parse-setup-payload MT:-24J00ID00KA0648G00 - [1653992397.769301][2532:2532] CHIP:SPL: Parsing base38Representation: MT:-24J00ID00KA0648G00 - [1653992397.769449][2532:2532] CHIP:SPL: Version: 0 - [1653992397.769476][2532:2532] CHIP:SPL: VendorID: 65521 - [1653992397.769496][2532:2532] CHIP:SPL: ProductID: 32769 - [1653992397.769515][2532:2532] CHIP:SPL: Custom flow: 1 (USER ACTION REQUIRED) - [1653992397.769537][2532:2532] CHIP:SPL: Capabilities: 0x02 (BLE) - [1653992397.769558][2532:2532] CHIP:SPL: Discriminator: 3840 - [1653992397.769577][2532:2532] CHIP:SPL: Passcode: 20202021 + [1657234110.765139][370717:370717] CHIP:-: ==== Onboarding payload for Custom Commissioning Flows ==== + [1657234110.765249][370717:370717] CHIP:SVR: SetupQRCode: [MT:-24J0YXE00KA0648G00] + [1657234110.765314][370717:370717] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: + [1657234110.765364][370717:370717] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0YXE00KA0648G00 disabled: true - label: "Scan the QR code from the previous step using the DUT." PICS: MCORE.DD.SCAN_QR_CODE verification: | - 1. Verify the QR code is scanned by DUT, chip-tool does not support physically scanning QR codes + 1. Verify the QR code is scanned by DUT + Note: chip-tool does not support physically scanning QR codes disabled: true - - label: "DUT parses QR code and DUT presents User with a pairing hint." - PICS: MCORE.DD.DT_BLE + - label: "DUT parses QR code." + PICS: MCORE.DD.DISCOVERY_BLE verification: | 1. Follow the steps given in the TH's pairing hint to allow for commissioning to happen. TH should not be commissioned until these steps were followed and indicate DUT can proceed with commissioning the TH to the Matter network - ./chip-tool pairing code 1 MT:-24J00ID00KA0648G00 - - [1653992449.765427][2535:2540] CHIP:-: ../../third_party/connectedhomeip/src/platform/Linux/BLEManagerImpl.cpp:748: CHIP Error 0x0000002D: Not Implemented at ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:450 - [1653992449.765485][2535:2540] CHIP:CTL: Stopping commissioning discovery over DNS-SD - [1653992449.765541][2535:2540] CHIP:TOO: Secure Pairing Failed + On DUT=chip-tool: + ./chip-tool pairing code 1 MT:-24J0YXE00KA0648G00 + [1657234147237] [31454:16822562] CHIP: [CTL] Successfully finished commissioning step 'SendComplete' + [1657234147237] [31454:16822562] CHIP: [CTL] Commissioning stage next step: 'SendComplete' -> 'Cleanup' + [1657234147237] [31454:16822562] CHIP: [CTL] Performing next commissioning step 'Cleanup' + [1657234147237] [31454:16822562] CHIP: [CTL] Successfully finished commissioning step 'Cleanup' + [1657234147237] [31454:16822562] CHIP: [TOO] Device commissioning completed with success disabled: true - label: - "Follow any steps from the resources provided by the pairing hint for - putting the TH Commissionee into commissioning mode and to complete - the commissioning process using BLE." - PICS: MCORE.DD.DT_BLE + "Follow any steps from the resources provided by the pairing hint or + by the THs manufacturer for putting the TH Commissionee device into + commissioning mode and to complete the commissioning process using + BLE." + PICS: MCORE.DD.DISCOVERY_BLE verification: | TH Commissionee: [1651101988.943015][23212:23212] CHIP:SVR: Commissioning completed successfully [1651101988.943058][23212:23212] CHIP:DIS: Updating services using commissioning mode 0 - DUT Commissioner: - ubuntu@ubuntu:~/may30_cntrl/connectedhomeip/examples/chip-tool/out/debug$ ./chip-tool pairing ble-wifi 1 zigbee-thread matter123 20202021 3840 - - - - [1651101988809] [94439:65564515] CHIP: [CTL] Received CommissioningComplete response - [1651101988809] [94439:65564515] CHIP: [CTL] Successfully finished commissioning step 'SendComplete' - [1651101988809] [94439:65564515] CHIP: [CTL] Commissioning stage next step: 'SendComplete' -> 'Cleanup' - [1651101988809] [94439:65564515] CHIP: [CTL] Performing next commissioning step 'Cleanup' - [1651101988809] [94439:65564515] CHIP: [CTL] Successfully finished commissioning step 'Cleanup' - [1651101988809] [94439:65564515] CHIP: [TOO] Device commissioning completed with success + On DUT Commissioner=chip-tool: + ./chip-tool pairing code 1 MT:-24J0YXE00KA0648G00 + [1657234147237] [31454:16822562] CHIP: [CTL] Successfully finished commissioning step 'SendComplete' + [1657234147237] [31454:16822562] CHIP: [CTL] Commissioning stage next step: 'SendComplete' -> 'Cleanup' + [1657234147237] [31454:16822562] CHIP: [CTL] Performing next commissioning step 'Cleanup' + [1657234147237] [31454:16822562] CHIP: [CTL] Successfully finished commissioning step 'Cleanup' + [1657234147237] [31454:16822562] CHIP: [TOO] Device commissioning completed with success disabled: true - label: @@ -105,63 +87,55 @@ tests: its Discovery Capability. Commissionee is NOT in commissioning mode. Ensure the Version bit string follows the current Matter spec. documentation." - PICS: MCORE.DD.DT_IP + PICS: MCORE.DD.DISCOVERY_IP verification: | $ ./out/all-clusters-app/chip-all-clusters-app --custom-flow 1 --capabilities 4 - [1651105004.718882][27096:27096] CHIP:DL: Device Configuration: - [1651105004.718943][27096:27096] CHIP:DL: Serial Number: TEST_SN - [1651105004.718975][27096:27096] CHIP:DL: Vendor Id: 65521 (0xFFF1) - [1651105004.719010][27096:27096] CHIP:DL: Product Id: 32769 (0x8001) - [1651105004.719040][27096:27096] CHIP:DL: Hardware Version: 0 - [1651105004.719062][27096:27096] CHIP:DL: Setup Pin Code (0 for UNKNOWN/ERROR): 20202021 - [1651105004.719083][27096:27096] CHIP:DL: Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3840 (0xF00) - [1651105004.719111][27096:27096] CHIP:DL: Manufacturing Date: (not set) - [1651105004.719133][27096:27096] CHIP:DL: Device Type: 65535 (0xFFFF) - [1651105004.719153][27096:27096] CHIP:-: ==== Onboarding payload for Standard Commissioning Flow ==== - [1651105004.719209][27096:27096] CHIP:SVR: SetupQRCode: [MT:-24J06VO00KA0648G00] - - ubuntu@ubuntu:~/may30_cntrl/connectedhomeip/examples/chip-tool/out/debug$ ./chip-tool payload parse-setup-payload MT:-24J06VO00KA0648G00 - [1653996764.810698][2819:2819] CHIP:SPL: Parsing base38Representation: MT:-24J06VO00KA0648G00 - [1653996764.810876][2819:2819] CHIP:SPL: Version: 0 - [1653996764.810903][2819:2819] CHIP:SPL: VendorID: 65521 - [1653996764.810923][2819:2819] CHIP:SPL: ProductID: 32769 - [1653996764.810943][2819:2819] CHIP:SPL: Custom flow: 1 (USER ACTION REQUIRED) - [1653996764.810966][2819:2819] CHIP:SPL: Capabilities: 0x04 (On IP network) - [1653996764.810987][2819:2819] CHIP:SPL: Discriminator: 3840 - [1653996764.811006][2819:2819] CHIP:SPL: Passcode: 20202021 - ubuntu@ubuntu:~/may30_cntrl/connectedhomeip/examples/chip-tool/out/debug$ + [1657234233.898170][370755:370755] CHIP:-: ==== Onboarding payload for Custom Commissioning Flows ==== + [1657234233.898195][370755:370755] CHIP:SVR: SetupQRCode: [MT:-24J029Q00KA0648G00] + [1657234233.898227][370755:370755] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: + [1657234233.898248][370755:370755] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J029Q00KA0648G00 disabled: true - label: "Scan the QR code from the previous step using the DUT." PICS: MCORE.DD.SCAN_QR_CODE verification: | - 1. Verify the QR code is scanned by DUT, chip-tool does not support physically scanning QR codes + 1. Verify the QR code is scanned by DUT + Note: chip-tool does not support physically scanning QR codes disabled: true - - label: "DUT parses QR code and DUT presents User with a pairing hint." - PICS: MCORE.DD.DT_IP + - label: "DUT parses QR code." + PICS: MCORE.DD.DISCOVERY_IP verification: | 1. Follow the steps given in the TH's pairing hint to allow for commissioning to happen. TH should not be commissioned until these steps were followed and indicate DUT can proceed with commissioning the TH to the Matter network + + + On DUT=chip-tool: + ./chip-tool pairing code 1 MT:-24J029Q00KA0648G00 + [1657234324847] [31475:16824564] CHIP: [CTL] Successfully finished commissioning step 'SendComplete' + [1657234324847] [31475:16824564] CHIP: [CTL] Commissioning stage next step: 'SendComplete' -> 'Cleanup' + [1657234324847] [31475:16824564] CHIP: [CTL] Performing next commissioning step 'Cleanup' + [1657234324847] [31475:16824564] CHIP: [CTL] Successfully finished commissioning step 'Cleanup' + [1657234324847] [31475:16824564] CHIP: [TOO] Device commissioning completed with success disabled: true - label: - "Follow any steps from the resources provided by the pairing hint for - putting the TH Commissionee into commissioning mode and to complete - the commissioning process using IP Network." - PICS: MCORE.DD.DT_IP + "Follow any steps from the resources provided by the pairing hint or + by the THs manufacturer for putting the TH Commissionee device into + commissioning mode and to complete the commissioning process using IP + Network." + PICS: MCORE.DD.DISCOVERY_IP verification: | TH all-clusters-app: - [1651105158.168056][27096:27096] CHIP:SVR: Commissioning completed successfully - [1651105158.168100][27096:27096] CHIP:DIS: Updating services using commissioning mode 0 - - DUT chip-tool: - $ ./out/chip-tool/chip-tool pairing qrcode 1 MT:-24J06VO00KA0648G00 - [1651105158065] [95045:65602272] CHIP: [CTL] Received CommissioningComplete response - [1651105158065] [95045:65602272] CHIP: [CTL] Successfully finished commissioning step 'SendComplete' - [1651105158065] [95045:65602272] CHIP: [CTL] Commissioning stage next step: 'SendComplete' -> 'Cleanup' - [1651105158065] [95045:65602272] CHIP: [CTL] Performing next commissioning step 'Cleanup' - [1651105158065] [95045:65602272] CHIP: [CTL] Successfully finished commissioning step 'Cleanup' - [1651105158065] [95045:65602272] CHIP: [TOO] Device commissioning completed with success + [1657234324.992098][370755:370755] CHIP:SVR: Commissioning completed successfully + [1657234324.992146][370755:370755] CHIP:DIS: Updating services using commissioning mode 0 + + On DUT=chip-tool: + ./chip-tool pairing code 1 MT:-24J029Q00KA0648G00 + [1657234324847] [31475:16824564] CHIP: [CTL] Successfully finished commissioning step 'SendComplete' + [1657234324847] [31475:16824564] CHIP: [CTL] Commissioning stage next step: 'SendComplete' -> 'Cleanup' + [1657234324847] [31475:16824564] CHIP: [CTL] Performing next commissioning step 'Cleanup' + [1657234324847] [31475:16824564] CHIP: [CTL] Successfully finished commissioning step 'Cleanup' + [1657234324847] [31475:16824564] CHIP: [TOO] Device commissioning completed with success disabled: true - label: @@ -170,28 +144,33 @@ tests: Discovery Capability. Commissionee is NOT in commissioning mode. Ensure the Version bit string follows the current Matter spec. documentation." - PICS: MCORE.DD.DT_SOFTAP + PICS: MCORE.DD.DISCOVERY_SOFTAP verification: | - BLOCKED: SoftAP commissioning not currently supported + Out of Scope for V1.0 + SoftAP commissioning not currently supported disabled: true - label: "Scan the QR code from the previous step using the DUT." PICS: MCORE.DD.SCAN_QR_CODE verification: | - 1. Verify the QR code is scanned by DUT, chip-tool does not support physically scanning QR codes + Out of Scope for V1.0 + SoftAP commissioning not currently supported disabled: true - - label: "DUT parses QR code and DUT presents User with a pairing hint." - PICS: MCORE.DD.DT_SOFTAP + - label: "DUT parses QR code." + PICS: MCORE.DD.DISCOVERY_SOFTAP verification: | - 1. Follow the steps given in the TH's pairing hint to allow for commissioning to happen. TH should not be commissioned until these steps were followed and indicate DUT can proceed with commissioning the TH to the Matter network + Out of Scope for V1.0 + SoftAP commissioning not currently supported disabled: true - label: - "Follow any steps from the resources provided by the pairing hint for - putting the TH Commissionee into commissioning mode and to complete - the commissioning process using SoftAP." - PICS: MCORE.DD.DT_SOFTAP + "Follow any steps from the resources provided by the pairing hint or + by the THs manufacturer for putting the TH Commissionee device into + commissioning mode and to complete the commissioning process using + SoftAP." + PICS: MCORE.DD.DISCOVERY_SOFTAP verification: | - BLOCKED: SoftAP commissioning not currently supported + Out of Scope for V1.0 + SoftAP commissioning not currently supported disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_13.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_13.yaml index b1e3b486e9e2eb..8bce578a417fc0 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_13.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_13.yaml @@ -28,66 +28,49 @@ tests: the Custom Flow field set to 2 and supports BLE for its Discovery Capability. Commissionee is NOT in commissioning mode. Ensure the Version bit string follows the current Matter spec. documentation." - PICS: MCORE.DD.DT_BLE + PICS: MCORE.DD.DISCOVERY_BLE verification: | $ ./out/ble/all-clusters-app/chip-all-clusters-app --custom-flow 2 --capabilities 2 - [1651103874.314141][26507:26507] CHIP:DL: Device Configuration: - [1651103874.314196][26507:26507] CHIP:DL: Serial Number: TEST_SN - [1651103874.314264][26507:26507] CHIP:DL: Vendor Id: 65521 (0xFFF1) - [1651103874.314305][26507:26507] CHIP:DL: Product Id: 32769 (0x8001) - [1651103874.314337][26507:26507] CHIP:DL: Hardware Version: 0 - [1651103874.314362][26507:26507] CHIP:DL: Setup Pin Code (0 for UNKNOWN/ERROR): 20202021 - [1651103874.314383][26507:26507] CHIP:DL: Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3840 (0xF00) - [1651103874.314412][26507:26507] CHIP:DL: Manufacturing Date: (not set) - [1651103874.314434][26507:26507] CHIP:DL: Device Type: 65535 (0xFFFF) - [1651103874.314502][26507:26507] CHIP:SVR: SetupQRCode: [MT:-24J0YXE00KA0648G00] - - ubuntu@ubuntu:~/may30_cntrl/connectedhomeip/examples/chip-tool/out/debug$ ./chip-tool payload parse-setup-payload MT:-24J0YXE00KA0648G00 - [1653997840.457937][2875:2875] CHIP:SPL: Parsing base38Representation: MT:-24J0YXE00KA0648G00 - [1653997840.458108][2875:2875] CHIP:SPL: Version: 0 - [1653997840.458134][2875:2875] CHIP:SPL: VendorID: 65521 - [1653997840.458155][2875:2875] CHIP:SPL: ProductID: 32769 - [1653997840.458175][2875:2875] CHIP:SPL: Custom flow: 2 (CUSTOM) - [1653997840.458197][2875:2875] CHIP:SPL: Capabilities: 0x02 (BLE) - [1653997840.458218][2875:2875] CHIP:SPL: Discriminator: 3840 - [1653997840.458237][2875:2875] CHIP:SPL: Passcode: 20202021 - ubuntu@ubuntu:~/may30_cntrl/connectedhomeip/examples/chip-tool/out/debug$ + [1657235055.253604][370941:370941] CHIP:-: ==== Onboarding payload for Custom Commissioning Flows ==== + [1657235055.253688][370941:370941] CHIP:SVR: SetupQRCode: [MT:-24J0YXE00KA0648G00] + [1657235055.253736][370941:370941] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: + [1657235055.253774][370941:370941] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0YXE00KA0648G00 disabled: true - label: "Scan the QR code from the previous step using the DUT." PICS: MCORE.DD.SCAN_QR_CODE verification: | - 1. Verify the QR code is scanned by DUT, chip-tool does not support physically scanning QR codes + 1. Verify the QR code is scanned by DUT + Note: chip-tool does not support physically scanning QR codes disabled: true - - label: - "DUT parses QR code and DUT presents User with a URL in the pairing - hint." - PICS: MCORE.DD.DT_BLE + - label: "DUT parses QR code." + PICS: MCORE.DD.DISCOVERY_BLE verification: | 1. Follow the steps given in the TH's URL to allow for commissioning to happen. TH should not be commissioned until these steps were followed and indicate DUT can proceed with commissioning the TH to the Matter network + + On DUT=chip-tool: + ./chip-tool pairing code 1 MT:-24J0YXE00KA0648G00 + [1657235087918] [31502:16832693] CHIP: [CTL] Successfully finished commissioning step 'Cleanup' + [1657235087918] [31502:16832693] CHIP: [TOO] Device commissioning completed with success disabled: true - label: - "Follow any steps from the URL provided by the pairing hint for - putting the TH Commissionee into commissioning mode, for triggering - the DUT Commissioner for commissioning, and for completing the - commissioning process using BLE." - PICS: MCORE.DD.DT_BLE + "User should follow any steps from the CommissioningCustomFlowUrl + within the THs DCL, unless the DUT has alternative means to guide the + user to successful commissioning, for putting the TH Commissionee into + commissioning mode, for triggering the DUT Commissioner for + commissioning, and for completing the commissioning process using BLE." + PICS: MCORE.DD.DISCOVERY_BLE verification: | TH all-clusters-app: - [1651104141.533461][26507:26507] CHIP:SVR: Commissioning completed successfully - [1651104141.533498][26507:26507] CHIP:DIS: Updating services using commissioning mode 0 + [1657235088.040328][370941:370941] CHIP:SVR: Commissioning completed successfully + [1657235088.040371][370941:370941] CHIP:DIS: Updating services using commissioning mode 0 - DUT chip-tool: $ ./out/chip-tool/chip-tool pairing qrcode 1 MT:-24J0YXE00KA0648G00 - - [1651104141454] [94607:65586111] CHIP: [CTL] Received CommissioningComplete response - [1651104141454] [94607:65586111] CHIP: [CTL] Successfully finished commissioning step 'SendComplete' - [1651104141454] [94607:65586111] CHIP: [CTL] Commissioning stage next step: 'SendComplete' -> 'Cleanup' - [1651104141454] [94607:65586111] CHIP: [CTL] Performing next commissioning step 'Cleanup' - [1651104141454] [94607:65586111] CHIP: [CTL] Successfully finished commissioning step 'Cleanup' - [1651104141454] [94607:65586111] CHIP: [TOO] Device commissioning completed with success + DUT chip-tool: $ ./chip-tool pairing code 1 MT:-24J0YXE00KA0648G00 + [1657235087918] [31502:16832693] CHIP: [CTL] Successfully finished commissioning step 'Cleanup' + [1657235087918] [31502:16832693] CHIP: [TOO] Device commissioning completed with success disabled: true - label: @@ -96,70 +79,51 @@ tests: Discovery Capability. Commissionee is NOT in commissioning mode. Ensure the Version bit string follows the current Matter spec. documentation." - PICS: MCORE.DD.DT_IP + PICS: MCORE.DD.DISCOVERY_IP verification: | $ ./out/all-clusters-app/chip-all-clusters-app --custom-flow 2 --capabilities 4 - [1651103447.175705][8940:8940] CHIP:DL: Device Configuration: - [1651103447.175762][8940:8940] CHIP:DL: Serial Number: TEST_SN - [1651103447.175804][8940:8940] CHIP:DL: Vendor Id: 65521 (0xFFF1) - [1651103447.175846][8940:8940] CHIP:DL: Product Id: 32769 (0x8001) - [1651103447.175883][8940:8940] CHIP:DL: Hardware Version: 0 - [1651103447.175911][8940:8940] CHIP:DL: Setup Pin Code (0 for UNKNOWN/ERROR): 20202021 - [1651103447.175937][8940:8940] CHIP:DL: Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3840 (0xF00) - [1651103447.175971][8940:8940] CHIP:DL: Manufacturing Date: (not set) - [1651103447.175998][8940:8940] CHIP:DL: Device Type: 65535 (0xFFFF) - [1651103447.176023][8940:8940] CHIP:-: ==== Onboarding payload for Standard Commissioning Flow ==== - [1651103447.176084][8940:8940] CHIP:SVR: SetupQRCode: [MT:-24J029Q00KA0648G00] - - - ubuntu@ubuntu:~/may30_cntrl/connectedhomeip/examples/chip-tool/out/debug$ ./chip-tool payload parse-setup-payload MT:-24J029Q00KA0648G00 - [1653998683.950764][2924:2924] CHIP:SPL: Parsing base38Representation: MT:-24J029Q00KA0648G00 - [1653998683.951071][2924:2924] CHIP:SPL: Version: 0 - [1653998683.951203][2924:2924] CHIP:SPL: VendorID: 65521 - [1653998683.951256][2924:2924] CHIP:SPL: ProductID: 32769 - [1653998683.951305][2924:2924] CHIP:SPL: Custom flow: 2 (CUSTOM) - [1653998683.951357][2924:2924] CHIP:SPL: Capabilities: 0x04 (On IP network) - [1653998683.951451][2924:2924] CHIP:SPL: Discriminator: 3840 - [1653998683.951498][2924:2924] CHIP:SPL: Passcode: 20202021 - ubuntu@ubuntu:~/may30_cntrl/connectedhomeip/examples/chip-tool/out/debug$ - " + [1657235141.663008][370963:370963] CHIP:-: ==== Onboarding payload for Custom Commissioning Flows ==== + [1657235141.663082][370963:370963] CHIP:SVR: SetupQRCode: [MT:-24J029Q00KA0648G00] + [1657235141.663133][370963:370963] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: + [1657235141.663189][370963:370963] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J029Q00KA0648G00 disabled: true - label: "Scan the QR code from the previous step using the DUT." PICS: MCORE.DD.SCAN_QR_CODE verification: | - 1. Verify the QR code is scanned by DUT, chip-tool does not support physically scanning QR codes + 1. Verify the QR code is scanned by DUT + Note: chip-tool does not support physically scanning QR codes disabled: true - - label: - "DUT parses QR code and DUT presents User with a URL in the pairing - hint." - PICS: MCORE.DD.DT_IP + - label: "DUT parses QR code." + PICS: MCORE.DD.DISCOVERY_IP verification: | 1. Follow the steps given in the TH's URL to allow for commissioning to happen. TH should not be commissioned until these steps were followed and indicate DUT can proceed with commissioning the TH to the Matter network + + On DUT=chip-tool: + ./chip-tool pairing code 1 MT:-24J029Q00KA0648G00 + [1657235198856] [31506:16834043] CHIP: [CTL] Successfully finished commissioning step 'Cleanup' + [1657235198856] [31506:16834043] CHIP: [TOO] Device commissioning completed with success disabled: true - label: - "Follow any steps from the URL provided by the pairing hint for - putting the TH Commissionee into commissioning mode, for triggering - the DUT Commissioner for commissioning, and for completing the - commissioning process using IP Network." - PICS: MCORE.DD.DT_IP + "User should follow any steps from the CommissioningCustomFlowUrl + within the THs DCL, unless the DUT has alternative means to guide the + user to successful commissioning, for putting the TH Commissionee into + commissioning mode, for triggering the DUT Commissioner for + commissioning, and for completing the commissioning process using IP + Network." + PICS: MCORE.DD.DISCOVERY_IP verification: | TH all-clusters-app: - [1651103591.176135][8940:8940] CHIP:SVR: Commissioning completed successfully - [1651103591.176179][8940:8940] CHIP:DIS: Updating services using commissioning mode 0 + [1657235198.977848][370963:370963] CHIP:SVR: Commissioning completed successfully + [1657235198.977943][370963:370963] CHIP:DIS: Updating services using commissioning mode 0 DUT chip-tool: - $ ./out/chip-tool/chip-tool pairing qrcode 1 MT:-24J029Q00KA0648G00 - - [1651103591085] [94586:65580481] CHIP: [CTL] Received CommissioningComplete response - [1651103591085] [94586:65580481] CHIP: [CTL] Successfully finished commissioning step 'SendComplete' - [1651103591085] [94586:65580481] CHIP: [CTL] Commissioning stage next step: 'SendComplete' -> 'Cleanup' - [1651103591085] [94586:65580481] CHIP: [CTL] Performing next commissioning step 'Cleanup' - [1651103591085] [94586:65580481] CHIP: [CTL] Successfully finished commissioning step 'Cleanup' - [1651103591085] [94586:65580481] CHIP: [TOO] Device commissioning completed with success + $ ./chip-tool pairing code 1 MT:-24J029Q00KA0648G00 + [1657235198856] [31506:16834043] CHIP: [CTL] Successfully finished commissioning step 'Cleanup' + [1657235198856] [31506:16834043] CHIP: [TOO] Device commissioning completed with success disabled: true - label: @@ -167,31 +131,35 @@ tests: the Custom Flow field set to 2 and supports SoftAP for its Discovery Capability. Commissionee is NOT in commissioning mode. Ensure the Version bit string follows the current Matter spec. documentation." - PICS: MCORE.DD.DT_SOFTAP + PICS: MCORE.DD.DISCOVERY_SOFTAP verification: | - BLOCKED: SoftAP commissioning not currently supported + Out of Scope for V1.0 + SoftAP commissioning not currently supported disabled: true - label: "Scan the QR code from the previous step using the DUT." PICS: MCORE.DD.SCAN_QR_CODE verification: | - 1. Verify the QR code is scanned by DUT, chip-tool does not support physically scanning QR codes + Out of Scope for V1.0 + SoftAP commissioning not currently supported disabled: true - - label: - "DUT parses QR code and DUT presents User with a URL in the pairing - hint." - PICS: MCORE.DD.DT_SOFTAP + - label: "DUT parses QR code." + PICS: MCORE.DD.DISCOVERY_SOFTAP verification: | - 1. Follow the steps given in the TH's URL to allow for commissioning to happen. TH should not be commissioned until these steps were followed and indicate DUT can proceed with commissioning the TH to the Matter network + Out of Scope for V1.0 + SoftAP commissioning not currently supported disabled: true - label: - "Follow any steps from the URL provided by the pairing hint for - putting the TH Commissionee into commissioning mode, for triggering - the DUT Commissioner for commissioning, and for completing the - commissioning process using SoftAP." - PICS: MCORE.DD.DT_SOFTAP + "User should follow any steps from the CommissioningCustomFlowUrl + within the THs DCL, unless the DUT has alternative means to guide the + user to successful commissioning, for putting the TH Commissionee into + commissioning mode, for triggering the DUT Commissioner for + commissioning, and for completing the commissioning process using + SoftAP." + PICS: MCORE.DD.DISCOVERY_SOFTAP verification: | - BLOCKED: SoftAP commissioning not currently supported + Out of Scope for V1.0 + SoftAP commissioning not currently supported disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_14.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_14.yaml index 9deb8df0c00e28..bedb54e49c8399 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_14.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_14.yaml @@ -27,17 +27,19 @@ tests: verification: | $ ./out/all-clusters-app/chip-all-clusters-app --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --custom-flow 2 --capabilities 4 --discriminator 3840 --passcode 20202021 - [1654000392.120361][3962:3962] CHIP:DL: Device Configuration: - [1654000392.120522][3962:3962] CHIP:DL: Serial Number: (not set) - [1654000392.120578][3962:3962] CHIP:DL: Vendor Id: 65521 (0xFFF1) - [1654000392.120631][3962:3962] CHIP:DL: Product Id: 32769 (0x8001) - [1654000392.120677][3962:3962] CHIP:DL: Hardware Version: 0 - [1654000392.120711][3962:3962] CHIP:DL: Setup Pin Code (0 for UNKNOWN/ERROR): 20202021 - [1654000392.120742][3962:3962] CHIP:DL: Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3840 (0xF00) - [1654000392.120783][3962:3962] CHIP:DL: Manufacturing Date: (not set) - [1654000392.120816][3962:3962] CHIP:DL: Device Type: 65535 (0xFFFF) - [1654000392.120846][3962:3962] CHIP:-: ==== Onboarding payload for Standard Commissioning Flow ==== - [1654000392.120891][3962:3962] CHIP:SVR: SetupQRCode: [MT:-24J0YXE00KA0648G00] + [1657235470.970680][371041:371041] CHIP:DL: Device Configuration: + [1657235470.970772][371041:371041] CHIP:DL: Serial Number: (not set) + [1657235470.970811][371041:371041] CHIP:DL: Vendor Id: 65521 (0xFFF1) + [1657235470.970845][371041:371041] CHIP:DL: Product Id: 32769 (0x8001) + [1657235470.970892][371041:371041] CHIP:DL: Hardware Version: 0 + [1657235470.970929][371041:371041] CHIP:DL: Setup Pin Code (0 for UNKNOWN/ERROR): 20202021 + [1657235470.970984][371041:371041] CHIP:DL: Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3840 (0xF00) + [1657235470.971031][371041:371041] CHIP:DL: Manufacturing Date: (not set) + [1657235470.971095][371041:371041] CHIP:DL: Device Type: 65535 (0xFFFF) + [1657235470.971147][371041:371041] CHIP:-: ==== Onboarding payload for Standard Commissioning Flow ==== + [1657235470.971199][371041:371041] CHIP:SVR: SetupQRCode: [MT:-24J029Q00KA0648G00] + [1657235470.971258][371041:371041] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: + [1657235470.971293][371041:371041] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J029Q00KA0648G00 disabled: true - label: @@ -45,120 +47,42 @@ tests: but substituting out the current Version String with an invalid Version String (i.e. '010' or any non-zero 3-bit value)" verification: | - MT:034J029Q00KA0648G00 + 1. Use chip-tool's "payload generate-qrcode" command to help generate the new, invalid QR code + $ ./chip-tool payload generate-qrcode --existing-payload MT:-24J029Q00KA0648G00 --allow-invalid-payload 1 --version 2 + [1657235626568] [31698:16839018] CHIP: [TOO] QR Code: MT:034J029Q00KA0648G00 disabled: true - label: "Scan/read the QR code, generated in the previous step, using the DUT" verification: | - $ ./out/chip-tool/chip-tool pairing code 1 MT:034J029Q00KA0648G00 + TH all-clusters-app: + [1657235198.977848][370963:370963] CHIP:SVR: Commissioning completed successfully + [1657235198.977943][370963:370963] CHIP:DIS: Updating services using commissioning mode 0 - ERROR: Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:50: CHIP Error 0x0000002F: Invalid argument + DUT chip-tool: + $ ./chip-tool pairing code 1 MT:034J029Q00KA0648G00 + [1657235198856] [31506:16834043] CHIP: [CTL] Successfully finished commissioning step 'Cleanup' + [1657235198856] [31506:16834043] CHIP: [TOO] Device commissioning completed with success disabled: true - label: - "Using the QR code from Step 1, generate a new QR code using all the - same Onboarding Payload components except for the Custom Flow field, - set it to 1: User-Intent Commissioning Flow" - PICS: MCORE.DD.USER_INTENT_COMM_FLOW + "Using the QR code from Step 1, ensure the THs Discovery Capability + bit string is NOT set to BLE for discovery (i.e. set to OnNetwork + discovery capability)" + PICS: MCORE.DD.DISCOVERY_BLE verification: | - MT:-24J06VO00KA0648G00 + 1. Use chip-tool's "payload generate-qrcode" command to help generate the new, invalid QR code + $ ./chip-tool payload generate-qrcode --existing-payload MT:-24J029Q00KA0648G00 --allow-invalid-payload 1 --rendezvous 4 + [1657235754393] [31702:16840391] CHIP: [TOO] QR Code: MT:-24J029Q00KA0648G00 disabled: true - - label: - "Scan/read the QR code, generated in the previous step, using the DUT" - PICS: MCORE.DD.USER_INTENT_COMM_FLOW - verification: | - ERROR: chip-tool allows pairing to all-clusters-app when QR code contains user-intent flow but device uses custom commissioning flow - - $ ./out/chip-tool/chip-tool pairing qrcode 1 MT:-24J06VO00KA0648G00 - disabled: true - - - label: - "Using the QR code from Step 1, generate a new QR code using all the - same Onboarding Payload components except for the Custom Flow field, - set it to 2: Custom Commissioning Flow" - PICS: MCORE.DD.CUSTOM_COMM_FLOW - verification: | - MT:-24J029Q00KA0648G00 - disabled: true - - - label: - "Scan/read the QR code, generated in the previous step, using the DUT" - PICS: MCORE.DD.CUSTOM_COMM_FLOW - verification: | - ERROR: chip-tool allows pairing to all-clusters-app when QR code contains custom commissioning flow but device uses standard commissioning flow - - $ ./out/chip-tool/chip-tool pairing qrcode 1 MT:-24J029Q00KA0648G00 - disabled: true - - - label: - "Commissioning Flow - Reserved: Using the QR code from Step 1, - generate a new QR code using all the same Onboarding Payload - components except for the Custom Flow field, set it to 3: Reserved" - verification: | - MT:-24J0-OR00KA0648G00 - disabled: true - - - label: - "Scan/read the QR code, generated in the previous step, using the DUT" - verification: | - $ ./out/chip-tool/chip-tool pairing code 1 MT:-24J0-OR00KA0648G00 - - ERROR: Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:50: CHIP Error 0x0000002F: Invalid argument - disabled: true - - - label: - "Using the QR code from Step 1, generate a new QR code using all the - same Onboarding Payload components except for the Discovery Capability - bit string, set it to BLE for discovery" - PICS: MCORE.DD.DT_BLE + - label: "Scan/read the QR code of the TH device using the DUT" + PICS: MCORE.DD.DISCOVERY_BLE verification: | - MT:-24J0YXE00KA0648G00 - disabled: true - - - label: - "Scan/read the QR code, generated in the previous step, using the DUT" - PICS: MCORE.DD.DT_BLE - verification: | - ERROR: chip-tool allows pairing to all-clusters-app when QR code contains BLE Discovery but device uses IP Discovery - - $ ./out/chip-tool/chip-tool pairing code 1 MT:-24J0YXE00KA0648G00 - disabled: true - - - label: - "Using the QR code from Step 1, generate a new QR code using all the - same Onboarding Payload components except for the Discovery Capability - bit string, set it to IP Network for discovery" - PICS: MCORE.DD.DT_IP - verification: | - MT:-24J029Q00KA0648G00 - disabled: true - - - label: - "Scan/read the QR code, generated in the previous step, using the DUT" - PICS: MCORE.DD.DT_IP - verification: | - ERROR: chip-tool allows pairing to all-clusters-app when QR code contains IP Discovery but device uses BLE Discovery - - $ ./out/chip-tool/chip-tool pairing code 1 MT:-24J029Q00KA0648G00 - disabled: true - - - label: - "Discovery Capability - Reserved: Using the QR code from Step 1, - generate a new QR code using all the same Onboarding Payload - components except for the Discovery Capability bit string, set it to - non-zeros" - verification: | - MT:-24J0EZA10KA0648G00 - disabled: true - - - label: - "Scan/read the QR code, generated in the previous step, using the DUT" - verification: | - $ ./out/chip-tool/chip-tool pairing code 1 MT:-24J0EZA10KA0648G00 - - ERROR: Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:50: CHIP Error 0x0000002F: Invalid argument + ./chip-tool pairing code 1 MT:-24J029Q00KA0648G00 + [1657235905214] [31706:16841970] CHIP: [CTL] Discovered device to be commissioned over DNS-SD + ... + [1657235906071] [31706:16841969] CHIP: [TOO] Device commissioning completed with success disabled: true - label: @@ -194,51 +118,51 @@ tests: Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:50: CHIP Error 0x0000002F: Invalid argument - $ ./out/chip-tool/chip-tool pairing code 1 MT:-24J029Q00OC0000000 + $ ./chip-tool pairing code 1 MT:-24J029Q00OC0000000 Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:50: CHIP Error 0x0000002F: Invalid argument - $ ./out/chip-tool/chip-tool pairing code 1 MT:-24J029Q00KMSP0Z800 + $ ./chip-tool pairing code 1 MT:-24J029Q00KMSP0Z800 Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:50: CHIP Error 0x0000002F: Invalid argument - $ ./out/chip-tool/chip-tool pairing code 1 MT:-24J029Q00GWID1WH00 + $ ./chip-tool pairing code 1 MT:-24J029Q00GWID1WH00 Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:50: CHIP Error 0x0000002F: Invalid argument - $ ./out/chip-tool/chip-tool pairing code 1 MT:-24J029Q00C4912TQ00 + $ ./chip-tool pairing code 1 MT:-24J029Q00C4912TQ00 Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:50: CHIP Error 0x0000002F: Invalid argument - $ ./out/chip-tool/chip-tool pairing code 1 MT:-24J029Q008E.Q2QZ00 + $ ./chip-tool pairing code 1 MT:-24J029Q008E.Q2QZ00 Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:50: CHIP Error 0x0000002F: Invalid argument - $ ./out/chip-tool/chip-tool pairing code 1 MT:-24J029Q004ORE3N610 + $ ./chip-tool pairing code 1 MT:-24J029Q004ORE3N610 Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:50: CHIP Error 0x0000002F: Invalid argument - $ ./out/chip-tool/chip-tool pairing code 1 MT:-24J029Q000YH24KF10 + $ ./chip-tool pairing code 1 MT:-24J029Q000YH24KF10 Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:50: CHIP Error 0x0000002F: Invalid argument - $ ./out/chip-tool/chip-tool pairing code 1 MT:-24J029Q00Y58S4HO10 + $ ./chip-tool pairing code 1 MT:-24J029Q00Y58S4HO10 Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:50: CHIP Error 0x0000002F: Invalid argument - $ ./out/chip-tool/chip-tool pairing code 1 MT:-24J029Q00UF-F5EX10 + $ ./chip-tool pairing code 1 MT:-24J029Q00UF-F5EX10 Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:50: CHIP Error 0x0000002F: Invalid argument - $ ./out/chip-tool/chip-tool pairing code 1 MT:-24J029Q00QPQ36B420 + $ ./chip-tool pairing code 1 MT:-24J029Q00QPQ36B420 Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:50: CHIP Error 0x0000002F: Invalid argument - $ ./out/chip-tool/chip-tool pairing code 1 MT:-24J029Q004QG46Y900 + $ ./chip-tool pairing code 1 MT:-24J029Q004QG46Y900 Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:50: CHIP Error 0x0000002F: Invalid argument - $ ./out/chip-tool/chip-tool pairing code 1 MT:-24J029Q00YX018EW10 + $ ./chip-tool pairing code 1 MT:-24J029Q00YX018EW10 Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:50: CHIP Error 0x0000002F: Invalid argument disabled: true @@ -253,6 +177,6 @@ tests: - label: "Scan/read the QR code, generated in the previous step, using the DUT" verification: | - $ ./out/chip-tool/chip-tool pairing code 1 AB:-24J029Q00KA0648G00 - [1651179728083] [11173:253719] CHIP: [TOO] Run command failure: ../../examples/chip-tool/third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:50: CHIP Error 0x00000013: Integrity check failed + $ ./chip-tool pairing code 1 AB:-24J029Q00KA0648G00 + [1657236169984] [31732:16844455] CHIP: [TOO] Run command failure: ../../examples/chip-tool/third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:50: CHIP Error 0x00000013: Integrity check failed disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_15.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_15.yaml index 711fe24a9b3434..8a6326fd83ebd2 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_15.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_15.yaml @@ -29,6 +29,7 @@ tests: Matter spec. documentation - VID_PID_PRESENT bit string set to 0" PICS: MCORE.DD.11_MANUAL_PC verification: | + On TH Commissionee: $ ./out/ble/all-clusters-app/chip-all-clusters-app [1651108891.390266][30833:30833] CHIP:DL: Device Configuration: [1651108891.390455][30833:30833] CHIP:DL: Serial Number: TEST_SN @@ -42,7 +43,7 @@ tests: [1651108891.390744][30833:30833] CHIP:-: ==== Onboarding payload for Standard Commissioning Flow ==== [1651108891.390809][30833:30833] CHIP:SVR: SetupQRCode: [MT:-24J0AFN00KA0648G00] [1651108891.390848][30833:30833] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: - [1651108891.390876][30833:30833] CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0AFN00KA0648G00 + [1651108891.390876][30833:30833] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0AFN00KA0648G00 [1651108891.390917][30833:30833] CHIP:SVR: Manual pairing code: [34970112332] disabled: true @@ -53,12 +54,12 @@ tests: process." PICS: MCORE.DD.11_MANUAL_PC verification: | - TH Commissionee: + On TH Commissionee: [1651109112.909458][30833:30833] CHIP:SVR: Commissioning completed successfully [1651109112.909503][30833:30833] CHIP:DIS: Updating services using commissioning mode 0 - DUT Commissioner: - $ ./out/chip-tool/chip-tool pairing manualcode 1 34970112332 + On DUT Commissioner: + $ ./chip-tool pairing code 1 34970112332 [1651109112823] [95528:65650355] CHIP: [CTL] Received CommissioningComplete response [1651109112823] [95528:65650355] CHIP: [CTL] Successfully finished commissioning step 'SendComplete' @@ -77,6 +78,7 @@ tests: Identifier")' PICS: MCORE.DD.21_MANUAL_PC verification: | + On TH Commissionee: $ ./out/ble/all-clusters-app/chip-all-clusters-app [1651109167.022364][30980:30980] CHIP:DL: Device Configuration: @@ -91,12 +93,12 @@ tests: [1651109167.022753][30980:30980] CHIP:-: ==== Onboarding payload for Standard Commissioning Flow ==== [1651109167.022825][30980:30980] CHIP:SVR: SetupQRCode: [MT:-24J0AFN00KA0648G00] [1651109167.022868][30980:30980] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: - [1651109167.022898][30980:30980] CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0AFN00KA0648G00 + [1651109167.022898][30980:30980] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0AFN00KA0648G00 [1651109167.022942][30980:30980] CHIP:SVR: Manual pairing code: [34970112332] [1651109167.022974][30980:30980] CHIP:-: ==== Onboarding payload for Custom Commissioning Flows ==== [1651109167.023050][30980:30980] CHIP:SVR: SetupQRCode: [MT:-24J029Q00KA0648G00] [1651109167.023090][30980:30980] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: - [1651109167.023120][30980:30980] CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J029Q00KA0648G00 + [1651109167.023120][30980:30980] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J029Q00KA0648G00 [1651109167.023167][30980:30980] CHIP:SVR: Manual pairing code: [749701123365521327694] disabled: true @@ -107,12 +109,12 @@ tests: process." PICS: MCORE.DD.21_MANUAL_PC verification: | - TH Commissionee: + On TH Commissionee: [1651109219.100167][30980:30980] CHIP:SVR: Commissioning completed successfully [1651109219.100213][30980:30980] CHIP:DIS: Updating services using commissioning mode 0 - DUT Commissioner: - $ ./out/chip-tool/chip-tool pairing manualcode 1 749701123365521327694 + On DUT Commissioner: + $ ./chip-tool pairing code 1 749701123365521327694 [1651109219028] [95536:65652322] CHIP: [CTL] Received CommissioningComplete response [1651109219028] [95536:65652322] CHIP: [CTL] Successfully finished commissioning step 'SendComplete' diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_16.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_16.yaml index 50230bea87e811..210dff6fb66575 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_16.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_16.yaml @@ -28,6 +28,7 @@ tests: DUT in any format supported by DUT" PICS: MCORE.DD.11_MANUAL_PC verification: | + On TH: $ ./out/all-clusters-app/chip-all-clusters-app --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --custom-flow 0 --capabilities 4 --discriminator 3840 --passcode 20202021 [1651180718.960383][13218:13218] CHIP:DL: Device Configuration: @@ -42,7 +43,7 @@ tests: [1651180718.960671][13218:13218] CHIP:-: ==== Onboarding payload for Standard Commissioning Flow ==== [1651180718.960729][13218:13218] CHIP:SVR: SetupQRCode: [MT:-24J0AFN00KA0648G00] [1651180718.960760][13218:13218] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: - [1651180718.960781][13218:13218] CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0AFN00KA0648G00 + [1651180718.960781][13218:13218] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0AFN00KA0648G00 [1651180718.960814][13218:13218] CHIP:SVR: Manual pairing code: [34970112332] disabled: true @@ -52,7 +53,9 @@ tests: 2" PICS: MCORE.DD.11_MANUAL_PC verification: | - $ ./out/chip-tool/chip-tool payload verhoeff-generate 8497011233 + 1. Use chip-tool's "payload verhoeff-generate" command to help generate the new, invalid Manual code + + $ ./chip-tool payload verhoeff-generate 8497011233 [1651186243492] [13415:349553] CHIP: [SPL] Generating Character for: 84970112331 [1651186243492] [13415:349553] CHIP: [SPL] Generated Char: 1 Manual Code: 84970112331 @@ -63,7 +66,7 @@ tests: the DUT in any format supported by the DUT" PICS: MCORE.DD.11_MANUAL_PC verification: | - $ ./out/chip-tool/chip-tool pairing code 1 84970112331 + $ ./chip-tool pairing code 1 84970112331 Run command failure: ../../third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:137: CHIP Error 0x0000002F: Invalid argument disabled: true @@ -74,7 +77,7 @@ tests: invalid VID_PID_PRESENT set to 1" PICS: MCORE.DD.11_MANUAL_PC verification: | - $ ./out/chip-tool/chip-tool payload generate-manualcode --discriminator 0xF00 --setup-pin-code 20202021 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 2 --force-short-code 1 + $ ./chip-tool payload generate-manualcode --discriminator 0xF00 --setup-pin-code 20202021 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 2 --force-short-code 1 [1651181048462] [11611:269469] CHIP: [TOO] Manual Code: 74970112334 disabled: true @@ -83,7 +86,7 @@ tests: the DUT in any format supported by the DUT" PICS: MCORE.DD.11_MANUAL_PC verification: | - $ ./out/chip-tool/chip-tool pairing code 1 74970112334 + $ ./chip-tool pairing code 1 74970112334 [1651184274318] [12512:321250] CHIP: [SPL] Failed decoding base10. Input length 10 was not expected length 20 ... @@ -100,6 +103,11 @@ tests: "Discriminator value")' PICS: MCORE.DD.11_MANUAL_PC verification: | + 1. Use chip-tool's "payload generate-manualcode" command to help generate the new, invalid Manual code + + $ ./chip-tool payload generate-manualcode --existing-payload 34970112332 --discriminator 0xE00 + [1657236763262] [31784:16850989] CHIP: [TOO] Manual Code: 33331712336 + Manual Code: 33331712336 disabled: true @@ -108,7 +116,8 @@ tests: the DUT in any format supported by the DUT" PICS: MCORE.DD.11_MANUAL_PC verification: | - $ ./out/chip-tool/chip-tool pairing code 1 33331712336 + On DUT=chip-tool: + $ ./chip-tool pairing code 1 33331712336 [1654001605.517505][3200:3205] CHIP:-: ../../third_party/connectedhomeip/src/platform/Linux/BLEManagerImpl.cpp:748: CHIP Error 0x0000002D: Not Implemented at ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:450 [1654001605.517563][3200:3205] CHIP:CTL: Stopping commissioning discovery over DNS-SD @@ -128,51 +137,51 @@ tests: 1. Use these as examples of how to generate manual codes with invalid passcodes "34915200008" (00000000), - $ ./out/chip-tool/chip-tool payload generate-manualcode --discriminator 3840 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 0 --allow-invalid-payload 1 --setup-pin-code 00000000 + $ ./chip-tool payload generate-manualcode --discriminator 3840 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 0 --allow-invalid-payload 1 --setup-pin-code 00000000 [1651182185732] [11790:282099] CHIP: [TOO] Manual Code: 34915200008 "35191106788" (11111111), - $ ./out/chip-tool/chip-tool payload generate-manualcode --discriminator 3840 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 0 --allow-invalid-payload 1 --setup-pin-code 11111111 + $ ./chip-tool payload generate-manualcode --discriminator 3840 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 0 --allow-invalid-payload 1 --setup-pin-code 11111111 [1651182284292] [11799:283222] CHIP: [TOO] Manual Code: 35191106788 "35467013565" (22222222), - $ ./out/chip-tool/chip-tool payload generate-manualcode --discriminator 3840 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 0 --allow-invalid-payload 1 --setup-pin-code 22222222 + $ ./chip-tool payload generate-manualcode --discriminator 3840 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 0 --allow-invalid-payload 1 --setup-pin-code 22222222 [1651182331458] [11817:283904] CHIP: [TOO] Manual Code: 35467013565 "35742920344" (33333333), - $ ./out/chip-tool/chip-tool payload generate-manualcode --discriminator 3840 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 0 --allow-invalid-payload 1 --setup-pin-code 33333333 + $ ./chip-tool payload generate-manualcode --discriminator 3840 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 0 --allow-invalid-payload 1 --setup-pin-code 33333333 [1651182345419] [11876:284294] CHIP: [TOO] Manual Code: 35742920344 "36018827124" (44444444), - $ ./out/chip-tool/chip-tool payload generate-manualcode --discriminator 3840 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 0 --allow-invalid-payload 1 --setup-pin-code 44444444 + $ ./chip-tool payload generate-manualcode --discriminator 3840 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 0 --allow-invalid-payload 1 --setup-pin-code 44444444 [1651182362963] [11944:284816] CHIP: [TOO] Manual Code: 36018827124 "36294733900" (55555555), - $ ./out/chip-tool/chip-tool payload generate-manualcode --discriminator 3840 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 0 --allow-invalid-payload 1 --setup-pin-code 55555555 + $ ./chip-tool payload generate-manualcode --discriminator 3840 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 0 --allow-invalid-payload 1 --setup-pin-code 55555555 [1651182375363] [11945:284938] CHIP: [TOO] Manual Code: 36294733900 "34932240691" (66666666), - $ ./out/chip-tool/chip-tool payload generate-manualcode --discriminator 3840 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 0 --allow-invalid-payload 1 --setup-pin-code 66666666 + $ ./chip-tool payload generate-manualcode --discriminator 3840 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 0 --allow-invalid-payload 1 --setup-pin-code 66666666 [1651182395140] [11958:285261] CHIP: [TOO] Manual Code: 34932240691 "35208147474" (77777777), - $ ./out/chip-tool/chip-tool payload generate-manualcode --discriminator 3840 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 0 --allow-invalid-payload 1 --setup-pin-code 77777777 + $ ./chip-tool payload generate-manualcode --discriminator 3840 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 0 --allow-invalid-payload 1 --setup-pin-code 77777777 [1651182411341] [11966:285478] CHIP: [TOO] Manual Code: 35208147474 "35484054250" (88888888), - $ ./out/chip-tool/chip-tool payload generate-manualcode --discriminator 3840 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 0 --allow-invalid-payload 1 --setup-pin-code 88888888 + $ ./chip-tool payload generate-manualcode --discriminator 3840 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 0 --allow-invalid-payload 1 --setup-pin-code 88888888 [1651182422264] [11967:285581] CHIP: [TOO] Manual Code: 35484054250 "35759961037" (99999999), - $ ./out/chip-tool/chip-tool payload generate-manualcode --discriminator 3840 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 0 --allow-invalid-payload 1 --setup-pin-code 99999999 + $ ./chip-tool payload generate-manualcode --discriminator 3840 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 0 --allow-invalid-payload 1 --setup-pin-code 99999999 [1651182431755] [11968:285672] CHIP: [TOO] Manual Code: 35759961037 "35767807533" (12345678), - $ ./out/chip-tool/chip-tool payload generate-manualcode --discriminator 3840 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 0 --allow-invalid-payload 1 --setup-pin-code 12345678 + $ ./chip-tool payload generate-manualcode --discriminator 3840 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 0 --allow-invalid-payload 1 --setup-pin-code 12345678 [1651182443511] [11969:285786] CHIP: [TOO] Manual Code: 35767807533 "36545753496" (87654321), - $ ./out/chip-tool/chip-tool payload generate-manualcode --discriminator 3840 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 0 --allow-invalid-payload 1 --setup-pin-code 87654321 + $ ./chip-tool payload generate-manualcode --discriminator 3840 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 0 --allow-invalid-payload 1 --setup-pin-code 87654321 [1651182459737] [11970:285960] CHIP: [TOO] Manual Code: 36545753496 disabled: true @@ -182,51 +191,51 @@ tests: PICS: MCORE.DD.11_MANUAL_PC verification: | (00000000) - $ ./out/chip-tool/chip-tool pairing code 1 34915200008 + $ ./chip-tool pairing code 1 34915200008 Run command failure: ../../third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:137: CHIP Error 0x0000002F: Invalid argument (11111111) - $ ./out/chip-tool/chip-tool pairing code 1 35191106788 + $ ./chip-tool pairing code 1 35191106788 Run command failure: ../../third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:137: CHIP Error 0x0000002F: Invalid argument (22222222) - $ ./out/chip-tool/chip-tool pairing code 1 35467013565 + $ ./chip-tool pairing code 1 35467013565 Run command failure: ../../third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:137: CHIP Error 0x0000002F: Invalid argument (33333333) - $ ./out/chip-tool/chip-tool pairing code 1 35742920344 + $ ./chip-tool pairing code 1 35742920344 Run command failure: ../../third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:137: CHIP Error 0x0000002F: Invalid argument (44444444) - $ ./out/chip-tool/chip-tool pairing code 1 36018827124 + $ ./chip-tool pairing code 1 36018827124 Run command failure: ../../third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:137: CHIP Error 0x0000002F: Invalid argument (55555555) - $ ./out/chip-tool/chip-tool pairing code 1 36294733900 + $ ./chip-tool pairing code 1 36294733900 Run command failure: ../../third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:137: CHIP Error 0x0000002F: Invalid argument (66666666) - $ ./out/chip-tool/chip-tool pairing code 1 34932240691 + $ ./chip-tool pairing code 1 34932240691 Run command failure: ../../third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:137: CHIP Error 0x0000002F: Invalid argument (77777777) - $ ./out/chip-tool/chip-tool pairing code 1 35208147474 + $ ./chip-tool pairing code 1 35208147474 Run command failure: ../../third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:137: CHIP Error 0x0000002F: Invalid argument (88888888) - $ ./out/chip-tool/chip-tool pairing code 1 35484054250 + $ ./chip-tool pairing code 1 35484054250 Run command failure: ../../third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:137: CHIP Error 0x0000002F: Invalid argument (99999999) - $ ./out/chip-tool/chip-tool pairing code 1 35759961037 + $ ./chip-tool pairing code 1 35759961037 Run command failure: ../../third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:137: CHIP Error 0x0000002F: Invalid argument (12345678) - $ ./out/chip-tool/chip-tool pairing code 1 35767807533 + $ ./chip-tool pairing code 1 35767807533 Run command failure: ../../third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:137: CHIP Error 0x0000002F: Invalid argument (87654321) - $ ./out/chip-tool/chip-tool pairing code 1 36545753496 + $ ./chip-tool pairing code 1 36545753496 Run command failure: ../../third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:137: CHIP Error 0x0000002F: Invalid argument disabled: true @@ -238,6 +247,8 @@ tests: and Product IDs (VID_PID_Present == 0))" PICS: MCORE.DD.11_MANUAL_PC verification: | + 1. Change the last digit of the manual pairing code to a different digit + Manual Code: 34970112331 disabled: true @@ -246,7 +257,7 @@ tests: the DUT in any format supported by the DUT" PICS: MCORE.DD.11_MANUAL_PC verification: | - $ ./out/chip-tool/chip-tool pairing code 1 34970112331 - - [1651184084907] [12271:316118] CHIP: [TOO] Run command failure: ../../examples/chip-tool/third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:50: CHIP Error 0x00000013: Integrity check failed + On DUT=chip-tool: + $ ./chip-tool pairing code 1 34970112331 + [1657586218401] [10710:465838] CHIP: [TOO] Run command failure: ../../third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:50: CHIP Error 0x00000013: Integrity check failed disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_17.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_17.yaml index 736f05ce0804ba..afe697535574b4 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_17.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_17.yaml @@ -28,18 +28,28 @@ tests: DUT in any format supported by DUT" PICS: MCORE.DD.21_MANUAL_PC verification: | - $ ./out/all-clusters-app/chip-all-clusters-app --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --custom-flow 2 --capabilities 4 --discriminator 3840 --passcode 20202021 - - [1651165486.365306][4112:4112] CHIP:DL: Device Configuration: - [1651165486.365374][4112:4112] CHIP:DL: Serial Number: TEST_SN - [1651165486.365415][4112:4112] CHIP:DL: Vendor Id: 65521 (0xFFF1) - [1651165486.365449][4112:4112] CHIP:DL: Product Id: 32769 (0x8001) - [1651165486.365479][4112:4112] CHIP:DL: Hardware Version: 0 - [1651165486.365502][4112:4112] CHIP:DL: Setup Pin Code (0 for UNKNOWN/ERROR): 20202021 - [1651165486.365522][4112:4112] CHIP:DL: Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3840 (0xF00) - [1651165486.365549][4112:4112] CHIP:DL: Manufacturing Date: (not set) - [1651165486.365570][4112:4112] CHIP:DL: Device Type: 65535 (0xFFFF) - [1651165486.365646][4112:4112] CHIP:SVR: SetupQRCode: [MT:-24J029Q00KA0648G00] + On TH: + $ ./out/all-clusters-app/chip-all-clusters-app + + [1657203632.334400][13827:13827] CHIP:DL: Device Configuration: + [1657203632.334663][13827:13827] CHIP:DL: Serial Number: (not set) + [1657203632.334724][13827:13827] CHIP:DL: Vendor Id: 65521 (0xFFF1) + [1657203632.334801][13827:13827] CHIP:DL: Product Id: 32769 (0x8001) + [1657203632.334879][13827:13827] CHIP:DL: Hardware Version: 0 + [1657203632.334934][13827:13827] CHIP:DL: Setup Pin Code (0 for UNKNOWN/ERROR): 20202021 + [1657203632.334983][13827:13827] CHIP:DL: Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3840 (0xF00) + [1657203632.335054][13827:13827] CHIP:DL: Manufacturing Date: (not set) + [1657203632.335109][13827:13827] CHIP:DL: Device Type: 65535 (0xFFFF) + [1657203632.335158][13827:13827] CHIP:-: ==== Onboarding payload for Standard Commissioning Flow ==== + [1657203632.335234][13827:13827] CHIP:SVR: SetupQRCode: [MT:-24J042C00KA0648G00] + [1657203632.335298][13827:13827] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: + [1657203632.335348][13827:13827] CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J042C00KA0648G00 + [1657203632.335420][13827:13827] CHIP:SVR: Manual pairing code: [34970112332] + [1657203632.335470][13827:13827] CHIP:-: ==== Onboarding payload for Custom Commissioning Flows ==== + [1657203632.335532][13827:13827] CHIP:SVR: SetupQRCode: [MT:-24J0YXE00KA0648G00] + [1657203632.335589][13827:13827] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: + [1657203632.335637][13827:13827] CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0YXE00KA0648G00 + [1657203632.335712][13827:13827] CHIP:SVR: Manual pairing code: [749701123365521327694] disabled: true - label: @@ -48,10 +58,13 @@ tests: 2" PICS: MCORE.DD.21_MANUAL_PC verification: | - $ chip-tool/out/debug$ ./chip-tool payload verhoeff-generate 849701123365521327693 - [1652423715.746979][23816:23816] CHIP:SPL: Generating Character for: 849701123365521327693 - [1652423715.747112][23816:23816] CHIP:SPL: Generated Char: 0 - $ chip-tool/out/debug$ + 1. Use chip-tool's "payload verhoeff-generate" command to help generate the new, invalid Manual code + + $ ./chip-tool payload verhoeff-generate 84970112336552132769 + [1657238290868] [31968:16868160] CHIP: [SPL] Generating Character for: 84970112336552132769 + [1657238290868] [31968:16868160] CHIP: [SPL] Generated Char: 3 + + Manual code: 8497011233655213276930 disabled: true - label: @@ -59,12 +72,9 @@ tests: the DUT in any format supported by the DUT" PICS: MCORE.DD.21_MANUAL_PC verification: | - $ ./out/chip-tool/chip-tool pairing code 1 849701123365521327693 - - [1651186987544] [13533:359998] CHIP: [SPL] Failed decoding base10. Input length 20 was not expected length 10 - ... + $ ./chip-tool pairing code 1 849701123365521327693 - Run command failure: ../../third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:137: CHIP Error 0x0000002F: Invalid argument + [1657238348848] [31971:16868925] CHIP: [TOO] Run command failure: ../../examples/chip-tool/third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:137: CHIP Error 0x0000002F: Invalid argument disabled: true - label: @@ -73,7 +83,8 @@ tests: invalid VID_PID_PRESENT set to 0" PICS: MCORE.DD.21_MANUAL_PC verification: | - $ ./out/chip-tool/chip-tool payload verhoeff-generate 34970112336552132769 + 1. Use chip-tool's "payload verhoeff-generate" command to help generate the new, invalid Manual code + $ ./chip-tool payload verhoeff-generate 34970112336552132769 [1651186492744] [13434:353094] CHIP: [SPL] Generating Character for: 34970112336552132769 [1651186492744] [13434:353094] CHIP: [SPL] Generated Char: 6 @@ -85,11 +96,11 @@ tests: the DUT in any format supported by the DUT" PICS: MCORE.DD.21_MANUAL_PC verification: | - $ ./out/chip-tool/chip-tool pairing code 1 349701123365521327696 + $ ./chip-tool pairing code 1 349701123365521327696 - [1651187185899] [13557:362337] CHIP: [SPL] Failed decoding base10. Input length 20 was not expected length 10 + [1657238541643] [31975:16871084] CHIP: [SPL] Failed decoding base10. Input length 20 was not expected length 10 ... - [1651187185900] [13557:362333] CHIP: [TOO] Run command failure: ../../examples/chip-tool/third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:63: CHIP Error 0x0000001E: Invalid string length + [1657238541644] [31975:16871079] CHIP: [TOO] Run command failure: ../../examples/chip-tool/third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:63: CHIP Error 0x0000001E: Invalid string length disabled: true - label: @@ -102,10 +113,10 @@ tests: "Discriminator value")' PICS: MCORE.DD.21_MANUAL_PC verification: | - $ ./out/chip-tool/chip-tool payload verhoeff-generate 733317123365521327692 - [1651186243492] [13415:349553] CHIP: [SPL] Generating Character for: 8497011233 - [1651186243492] [13415:349553] CHIP: [SPL] Generated Char: 1 - Manual Code: 733317123365521327692 + 1. Use chip-tool's "payload generate-manualcode" command to help generate the new, invalid Manual code + + $ ./chip-tool payload generate-manualcode --existing-payload 749701123365521327694 --allow-invalid-payload 1 --discriminator 3584 + [1657238783501] [31989:16873588] CHIP: [TOO] Manual Code: 733317123365521327692 disabled: true - label: @@ -113,7 +124,7 @@ tests: the DUT in any format supported by the DUT" PICS: MCORE.DD.21_MANUAL_PC verification: | - $ ./out/chip-tool/chip-tool pairing code 1 733317123365521327692 + $ ./chip-tool pairing code 1 733317123365521327692 [1655814152.716988][3723:3726] CHIP:CTL: Commissioning discovery over BLE failed: ../../third_party/connectedhomeip/src/platform/Linux/BLEManagerImpl.cpp:829: CHIP Error 0x00000032: Timeout [1655814152.717099][3723:3726] CHIP:-: ../../third_party/connectedhomeip/src/platform/Linux/BLEManagerImpl.cpp:829: CHIP Error 0x00000032: Timeout at ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:270 @@ -132,10 +143,12 @@ tests: 55555555, 66666666, 77777777, 88888888, 99999999, 12345678, 87654321" PICS: MCORE.DD.21_MANUAL_PC verification: | - 1. Use this as an example of how to generate a manual code with an invalid passcode + 1. Use this as an example of how to generate a manual code with an invalid passcode. In this example the invalid passcode=00000000 + + Use chip-tool's "payload generate-manualcode" command to help generate the new, invalid Manual code - $ ./out/chip-tool/chip-tool payload generate-manualcode --discriminator 3840 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 1 --allow-invalid-payload 1 --setup-pin-code 00000000 - [1651188323732] [14068:388953] CHIP: [TOO] Manual Code: 749152000065521327698 + $ ./chip-tool payload generate-manualcode --existing-payload 749701123365521327694 --allow-invalid-payload 1 --setup-pin-code 00000000 + [1657239062245] [32164:16876812] CHIP: [TOO] Manual Code: 749152000065521327698 disabled: true - label: @@ -144,61 +157,61 @@ tests: PICS: MCORE.DD.21_MANUAL_PC verification: | (00000000) - $ ./out/chip-tool/chip-tool pairing code 1 749152000065521327698 + $ ./chip-tool pairing code 1 749152000065521327698 [1651187937232] [13896:372977] CHIP: [TOO] Run command failure: ../../examples/chip-tool/third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:161: CHIP Error 0x0000002F: Invalid argument (11111111) - $ ./out/chip-tool/chip-tool pairing code 1 751911067865521327698 + $ ./chip-tool pairing code 1 751911067865521327698 [1655814240.531424][3747:3747] CHIP:TOO: Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:55: CHIP Error 0x0000002F: Invalid argument (22222222) - $ ./out/chip-tool/chip-tool pairing code 1 754670135665521327694 + $ ./chip-tool pairing code 1 754670135665521327694 [1655814269.264731][3754:3754] CHIP:TOO: Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:55: CHIP Error 0x0000002F: Invalid argument (33333333) - $ ./out/chip-tool/chip-tool pairing code 1 757429203465521327699 + $ ./chip-tool pairing code 1 757429203465521327699 [1655814269.264731][3754:3754] CHIP:TOO: Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:55: CHIP Error 0x0000002F: Invalid argument (44444444) - $ ./out/chip-tool/chip-tool pairing code 1 760188271265521327697 + $ ./chip-tool pairing code 1 760188271265521327697 [1655814269.264731][3754:3754] CHIP:TOO: Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:55: CHIP Error 0x0000002F: Invalid argument (55555555) - $ ./out/chip-tool/chip-tool pairing code 1 762947339065521327695 + $ ./chip-tool pairing code 1 762947339065521327695 [1655814269.264731][3754:3754] CHIP:TOO: Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:55: CHIP Error 0x0000002F: Invalid argument (66666666) - $ ./out/chip-tool/chip-tool pairing code 1 749322406965521327695 + $ ./chip-tool pairing code 1 749322406965521327695 [1655814269.264731][3754:3754] CHIP:TOO: Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:55: CHIP Error 0x0000002F: Invalid argument (77777777) - $ ./out/chip-tool/chip-tool pairing code 1 752081474765521327697 + $ ./chip-tool pairing code 1 752081474765521327697 [1655814269.264731][3754:3754] CHIP:TOO: Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:55: CHIP Error 0x0000002F: Invalid argument (88888888) - $ ./out/chip-tool/chip-tool pairing code 1 754840542565521327693 + $ ./chip-tool pairing code 1 754840542565521327693 [1655814269.264731][3754:3754] CHIP:TOO: Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:55: CHIP Error 0x0000002F: Invalid argument (99999999) - $ ./out/chip-tool/chip-tool pairing code 1 757599610365521327695 + $ ./chip-tool pairing code 1 757599610365521327695 [1655814269.264731][3754:3754] CHIP:TOO: Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:55: CHIP Error 0x0000002F: Invalid argument (12345678) - $ ./out/chip-tool/chip-tool pairing code 1 757678075365521327695 + $ ./chip-tool pairing code 1 757678075365521327695 [1655814269.264731][3754:3754] CHIP:TOO: Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:55: CHIP Error 0x0000002F: Invalid argument (87654321) - $ ./out/chip-tool/chip-tool pairing code 1 765457534965521327696 + $ ./chip-tool pairing code 1 765457534965521327696 [1655814323.718122][3761:3761] CHIP:TOO: Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:55: CHIP Error 0x0000002F: Invalid argument disabled: true @@ -213,7 +226,7 @@ tests: verification: | 1. Use this as an example of how to generate a manual code with an invalid vendor IDs - $ ./out/chip-tool/chip-tool payload generate-manualcode --discriminator 3840 --setup-pin-code 20202021 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 1 + $ ./chip-tool payload generate-manualcode --discriminator 3840 --setup-pin-code 20202021 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 1 [1651189120686] [14218:398626] CHIP: [TOO] Manual Code: 749701123365521327694 disabled: true @@ -223,22 +236,18 @@ tests: PICS: MCORE.DD.21_MANUAL_PC verification: | (0xFFF1) - $ ./out/chip-tool/chip-tool pairing manualcode 1 749701123365521327694 - Error: chip-tool pairs to chip-all-clusters-app with this invalid vendor ID but that is expected of chip-tool + $ ./chip-tool pairing code 1 749701123365521327694 (0xFFF2) - $ ./out/chip-tool/chip-tool pairing manualcode 1 749701123365522327692 - Error: chip-tool pairs to chip-all-clusters-app with this invalid vendor ID but that is expected of chip-tool + $ ./chip-tool pairing code 1 749701123365522327692 (0xFFF3) - $ ./out/chip-tool/chip-tool pairing manualcode 1 749701123365523327697 - Error: chip-tool pairs to chip-all-clusters-app with this invalid vendor ID but that is expected of chip-tool + $ ./chip-tool pairing code 1 749701123365523327697 (0xFFF4) - $ ./out/chip-tool/chip-tool pairing manualcode 1 749701123365524327693 - Error: chip-tool pairs to chip-all-clusters-app with this invalid vendor ID but that is expected of chip-tool + $ ./chip-tool pairing code 1 749701123365524327693 disabled: true - label: @@ -248,8 +257,10 @@ tests: Identifier")' PICS: MCORE.DD.21_MANUAL_PC verification: | - $ ./out/chip-tool/chip-tool payload generate-manualcode --discriminator 3840 --setup-pin-code 20202021 --version 0 --vendor-id 0xFFF1 --product-id 0x0000 --commissioning-mode 1 --allow-invalid-payload 1 - [1651187401077] [13610:366251] CHIP: [TOO] Manual Code: 749701123365521000006 + 1. Use chip-tool's "payload generate-manualcode" command to help generate the new, invalid Manual code + + $ ./chip-tool payload generate-manualcode --existing-payload 749701123365521327694 --allow-invalid-payload 1 --product-id 0x0000 + [1657239418656] [32180:16880488] CHIP: [TOO] Manual Code: 749701123365521000006 disabled: true - label: @@ -257,9 +268,10 @@ tests: the DUT in any format supported by the DUT" PICS: MCORE.DD.21_MANUAL_PC verification: | - $ ./out/chip-tool/chip-tool pairing manualcode 1 749701123365521000006 + On DUT: + $ ./chip-tool pairing code 1 749701123365521000006 - [1655380389.096806][35861:35861] CHIP:TOO: Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:55: CHIP Error 0x0000002F: Invalid argument + [1657239565895] [32193:16881922] CHIP: [TOO] Run command failure: ../../examples/chip-tool/third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:55: CHIP Error 0x0000002F: Invalid argument disabled: true - label: @@ -270,7 +282,9 @@ tests: Product IDs included (VID_PID_Present == 1))" PICS: MCORE.DD.21_MANUAL_PC verification: | - $ ./out/chip-tool/chip-tool payload verhoeff-verify 749701123365521327693 20 + 1. Use chip-tool's "payload verhoeff-verify" command to help verify that the check-digit is invalid + + $ ./chip-tool payload verhoeff-verify 749701123365521327693 20 [1651187504088] [13629:367627] CHIP: [SPL] Verifying Manual Code: 74970112336552132769 [1651187504088] [13629:367627] CHIP: [SPL] 749701123365521327693 is INVALID at position 20 disabled: true @@ -280,7 +294,7 @@ tests: the DUT in any format supported by the DUT" PICS: MCORE.DD.21_MANUAL_PC verification: | - $ ./out/chip-tool/chip-tool pairing code 1 749701123365521327693 + $ ./chip-tool pairing code 1 749701123365521327693 [1651187528666] [13631:367920] CHIP: [TOO] Run command failure: ../../examples/chip-tool/third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:50: CHIP Error 0x00000013: Integrity check failed disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_18.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_18.yaml index 198e053c05ee6d..1b901be800df83 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_18.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_18.yaml @@ -27,74 +27,37 @@ tests: "Place TH1 into commissioning mode using the TH manufacturers means to be discovered by a commissioner" verification: | - After launching all-clusters-app using discriminator 3841 using below command - sudo ./chip-all-clusters-app --wifi --discriminator 3841 - - ./chip-tool discover commissionables - [1654068872.283184][8000:8005] CHIP:DL: Avahi resolve found - [1654068872.283316][8000:8005] CHIP:DIS: Hostname: E45F010F19FF0000 - [1654068872.283374][8000:8005] CHIP:DIS: IP Address #1: fe80::e65f:1ff:fe0f:19ff - [1654068872.283419][8000:8005] CHIP:DIS: Port: 5540 - [1654068872.283460][8000:8005] CHIP:DIS: Mrp Interval idle: 5000 ms - [1654068872.283503][8000:8005] CHIP:DIS: Mrp Interval active: 300 ms - [1654068872.283563][8000:8005] CHIP:DIS: Vendor ID: 65521 - [1654068872.283605][8000:8005] CHIP:DIS: Product ID: 32769 - [1654068872.283646][8000:8005] CHIP:DIS: Long Discriminator: 3844 - [1654068872.283687][8000:8005] CHIP:DIS: Pairing Hint: 33 - [1654068872.283728][8000:8005] CHIP:DIS: Instance Name: C50FE94C4952D393 - [1654068872.283768][8000:8005] CHIP:DIS: Commissioning Mode: 1 - [1654068872.285052][8000:8005] CHIP:DL: Avahi resolve found - [1654068872.285156][8000:8005] CHIP:DIS: Hostname: E45F010F27530000 - [1654068872.285211][8000:8005] CHIP:DIS: IP Address #1: fe80::e65f:1ff:fe0f:2755 - [1654068872.285254][8000:8005] CHIP:DIS: Port: 5540 - [1654068872.285296][8000:8005] CHIP:DIS: Mrp Interval idle: 5000 ms - [1654068872.285337][8000:8005] CHIP:DIS: Mrp Interval active: 300 ms - [1654068872.285378][8000:8005] CHIP:DIS: Vendor ID: 65521 - [1654068872.285418][8000:8005] CHIP:DIS: Product ID: 32769 - [1654068872.285458][8000:8005] CHIP:DIS: Long Discriminator: 3841 - [1654068872.285498][8000:8005] CHIP:DIS: Pairing Hint: 33 - [1654068872.285538][8000:8005] CHIP:DIS: Instance Name: DC47D37251924E87 - [1654068872.285579][8000:8005] CHIP:DIS: Commissioning Mode: 1 + 1. After launching all-clusters-app using discriminator 3841 using below command + $ ./out/all-clusters-app/chip-all-clusters-app --wifi --discriminator 3841 + + $ dns-sd -B _matterc._udp,_L3841 + Browsing for _matterc._udp,_L3841 + DATE: ---Thu 07 Jul 2022--- + 17:39:06.762 ...STARTING... + Timestamp A/R Flags if Domain Service Type Instance Name + 17:39:06.764 Add 2 7 local. _matterc._udp. 930430C7C701B844 disabled: true - label: "Place TH2 into commissioning mode using the TH manufacturers means to be discovered by a commissioner" verification: | - After launching all-clusters-app using discriminator 3844 using below command + 1. After launching all-clusters-app using discriminator 3844 using below command sudo ./chip-all-clusters-app --wifi --discriminator 3844 - ./chip-tool discover commissionables - [1654068872.283184][8000:8005] CHIP:DL: Avahi resolve found - [1654068872.283316][8000:8005] CHIP:DIS: Hostname: E45F010F19FF0000 - [1654068872.283374][8000:8005] CHIP:DIS: IP Address #1: fe80::e65f:1ff:fe0f:19ff - [1654068872.283419][8000:8005] CHIP:DIS: Port: 5540 - [1654068872.283460][8000:8005] CHIP:DIS: Mrp Interval idle: 5000 ms - [1654068872.283503][8000:8005] CHIP:DIS: Mrp Interval active: 300 ms - [1654068872.283563][8000:8005] CHIP:DIS: Vendor ID: 65521 - [1654068872.283605][8000:8005] CHIP:DIS: Product ID: 32769 - [1654068872.283646][8000:8005] CHIP:DIS: Long Discriminator: 3844 - [1654068872.283687][8000:8005] CHIP:DIS: Pairing Hint: 33 - [1654068872.283728][8000:8005] CHIP:DIS: Instance Name: C50FE94C4952D393 - [1654068872.283768][8000:8005] CHIP:DIS: Commissioning Mode: 1 - [1654068872.285052][8000:8005] CHIP:DL: Avahi resolve found - [1654068872.285156][8000:8005] CHIP:DIS: Hostname: E45F010F27530000 - [1654068872.285211][8000:8005] CHIP:DIS: IP Address #1: fe80::e65f:1ff:fe0f:2755 - [1654068872.285254][8000:8005] CHIP:DIS: Port: 5540 - [1654068872.285296][8000:8005] CHIP:DIS: Mrp Interval idle: 5000 ms - [1654068872.285337][8000:8005] CHIP:DIS: Mrp Interval active: 300 ms - [1654068872.285378][8000:8005] CHIP:DIS: Vendor ID: 65521 - [1654068872.285418][8000:8005] CHIP:DIS: Product ID: 32769 - [1654068872.285458][8000:8005] CHIP:DIS: Long Discriminator: 3841 - [1654068872.285498][8000:8005] CHIP:DIS: Pairing Hint: 33 - [1654068872.285538][8000:8005] CHIP:DIS: Instance Name: DC47D37251924E87 - [1654068872.285579][8000:8005] CHIP:DIS: Commissioning Mode: 1 + $ dns-sd -B _matterc._udp,_L3844 + Browsing for _matterc._udp,_L3844 + DATE: ---Thu 07 Jul 2022--- + 17:39:35.265 ...STARTING... + Timestamp A/R Flags if Domain Service Type Instance Name + 17:40:17.959 Add 2 7 local. _matterc._udp. 8F1FEB734CE46129 disabled: true - label: "Scan TH1s QR code using the DUT Commissioner." PICS: MCORE.DD.SCAN_QR_CODE verification: | - 1. Verify the QR code is scanned by DUT, chip-tool does not support physically scanning QR codes + 1. Verify the QR code is scanned by DUT + Note: chip-tool does not support physically scanning QR codes disabled: true - label: @@ -103,24 +66,21 @@ tests: the TH Commissionees method of device discovery" verification: | TH1 Commissionee: - [1651109784.452770][31207:31207] CHIP:SVR: Commissioning completed successfully - [1651109784.452813][31207:31207] CHIP:DIS: Updating services using commissioning mode 0 + [1657240914.891250][372173:372173] CHIP:SVR: Commissioning completed successfully + [1657240914.891297][372173:372173] CHIP:DIS: Updating services using commissioning mode 0 DUT Commissioner: - $ ./out/chip-tool/chip-tool pairing qrcode 1 MT:-24J0AFN00KA0648G00 - - [1651109784376] [95553:65657838] CHIP: [CTL] Received CommissioningComplete response - [1651109784376] [95553:65657838] CHIP: [CTL] Successfully finished commissioning step 'SendComplete' - [1651109784376] [95553:65657838] CHIP: [CTL] Commissioning stage next step: 'SendComplete' -> 'Cleanup' - [1651109784376] [95553:65657838] CHIP: [CTL] Performing next commissioning step 'Cleanup' - [1651109784376] [95553:65657838] CHIP: [CTL] Successfully finished commissioning step 'Cleanup' - [1651109784376] [95553:65657838] CHIP: [TOO] Device commissioning completed with success + $ ./chip-tool pairing code 1 MT:-24J0IRV01KA0648G00 + + [1657240914764] [32262:16895870] CHIP: [CTL] Successfully finished commissioning step 'Cleanup' + [1657240914764] [32262:16895870] CHIP: [TOO] Device commissioning completed with success disabled: true - label: "Scan TH2s QR code using the DUT Commissioner." PICS: MCORE.DD.SCAN_QR_CODE verification: | - 1. Verify the QR code is scanned by DUT, chip-tool does not support physically scanning QR codes + 1. Verify the QR code is scanned by DUT + Note: chip-tool does not support physically scanning QR codes disabled: true - label: @@ -129,34 +89,30 @@ tests: the TH Commissionees method of device discovery" verification: | TH2 Commissionee: - [1651109919.159014][11588:11588] CHIP:SVR: Commissioning completed successfully - [1651109919.159067][11588:11588] CHIP:DIS: Updating services using commissioning mode 0 + [1657240985.801360][112581:112581] CHIP:SVR: Commissioning completed successfully + [1657240985.801406][112581:112581] CHIP:DIS: Updating services using commissioning mode 0 DUT Commissioner: - $ ./out/chip-tool/chip-tool pairing qrcode 2 MT:-24J04QI14KA0648G00 - - [1651109919079] [95563:65659558] CHIP: [CTL] Received CommissioningComplete response - [1651109919079] [95563:65659558] CHIP: [CTL] Successfully finished commissioning step 'SendComplete' - [1651109919079] [95563:65659558] CHIP: [CTL] Commissioning stage next step: 'SendComplete' -> 'Cleanup' - [1651109919079] [95563:65659558] CHIP: [CTL] Performing next commissioning step 'Cleanup' - [1651109919079] [95563:65659558] CHIP: [CTL] Successfully finished commissioning step 'Cleanup' - [1651109919079] [95563:65659558] CHIP: [TOO] Device commissioning completed with success + $ ./chip-tool pairing code 2 MT:-24J04QI14KA0648G00 + + [1657240985682] [32264:16896797] CHIP: [CTL] Successfully finished commissioning step 'Cleanup' + [1657240985682] [32264:16896797] CHIP: [TOO] Device commissioning completed with success disabled: true - label: "Verify the Commissioner can still interact with TH1 (ex: Read any clusters attribute from TH1)" verification: | - $ ./out/chip-tool/chip-tool basic read reachable 1 0 - [1651110057235] [95634:65662038] CHIP: [TOO] Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0011 DataVersion: 3647361086 - [1651110057235] [95634:65662038] CHIP: [TOO] Reachable: TRUE + $ ./chip-tool basic read reachable 1 0 + [1657241043430] [32266:16897416] CHIP: [TOO] Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0011 DataVersion: 131004400 + [1657241043432] [32266:16897416] CHIP: [TOO] Reachable: TRUE disabled: true - label: "Verify the Commissioner can still interact with TH2 (ex: Read any clusters attribute from TH2)" verification: | - $ ./out/chip-tool/chip-tool basic read reachable 2 0 - [1651110080978] [95636:65662333] CHIP: [TOO] Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0011 DataVersion: 3234420698 - [1651110080978] [95636:65662333] CHIP: [TOO] Reachable: TRUE + $ ./chip-tool basic read reachable 2 0 + [1657241066927] [32267:16897671] CHIP: [TOO] Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0011 DataVersion: 2450774961 + [1657241066927] [32267:16897671] CHIP: [TOO] Reachable: TRUE disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_19.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_19.yaml index 62f2f9ba508e9d..5e98def66a667d 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_19.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_19.yaml @@ -42,7 +42,7 @@ tests: [1651111142.370760][32024:32024] CHIP:SVR: SetupQRCode: [MT:-24J0ALY01KA0648G00] TH Commissioner: - $ ./out/chip-tool/chip-tool discover commissionables + $ ./chip-tool discover commissionables [1651111150395] [95835:65674062] CHIP: [DL] Mdns: OnNewAddress interface: 7 ip:192.168.1.2 [1651111150395] [95835:65674062] CHIP: [DIS] Vendor ID: 65521 @@ -70,7 +70,7 @@ tests: [1651111335.475204][32130:32130] CHIP:DIS: Updating services using commissioning mode 0 TH Commissioner: - $ ./out/chip-tool/chip-tool pairing qrcode 1 MT:-24J0ALY01KA0648G00 + $ ./chip-tool pairing code 1 MT:-24J0ALY01KA0648G00 [1651111335378] [95843:65675989] CHIP: [CTL] Received CommissioningComplete response [1651111335378] [95843:65675989] CHIP: [CTL] Successfully finished commissioning step 'SendComplete' @@ -84,6 +84,7 @@ tests: "Using TH Commissioner, unpair the DUT Commissionee from the Matter network." verification: | + TH Commissioner: ./chip-tool operationalcredentials remove-fabric 1 1 0 CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0008 @@ -103,7 +104,7 @@ tests: 2. On RasPi DUT $ ./out/all-clusters-app/chip-all-clusters-app --discriminator 3841 On TH chip-tool: - $ ./out/chip-tool/chip-tool discover commissionables + $ ./chip-tool discover commissionables [1651111576350] [95850:65678872] CHIP: [DL] Mdns: OnNewAddress interface: 7 ip:192.168.1.2 [1651111576350] [95850:65678872] CHIP: [DIS] Vendor ID: 65521 [1651111576350] [95850:65678872] CHIP: [DIS] Product ID: 32769 @@ -130,7 +131,7 @@ tests: [1651111614.006893][32259:32259] CHIP:DIS: Updating services using commissioning mode 0 TH Commissioner: - $ ./out/chip-tool/chip-tool pairing qrcode 1 MT:-24J0ALY01KA0648G00 + $ ./chip-tool pairing code 1 MT:-24J0ALY01KA0648G00 [1651111613912] [95856:65679504] CHIP: [CTL] Received CommissioningComplete response [1651111613912] [95856:65679504] CHIP: [CTL] Successfully finished commissioning step 'SendComplete' diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_2.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_2.yaml index 6689e63f294300..f05fba9c1d176b 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_2.yaml @@ -51,8 +51,8 @@ tests: disabled: true - label: - "If (PICS_WIFI) or (PICS_THREAD), Commissioner SHALL configure - regulatory information in the Commissionee." + "Commissioner SHALL configure regulatory information in the + Commissionee." PICS: MCORE.DD.WIRELESS verification: | On TH: @@ -337,7 +337,7 @@ tests: "Commissioning channel between the Commissioner and Commissionee is terminated." verification: | - + 1. Terminate the connection between the Commissionee and the Commissioner. (i.e. remove network access or terminate commissioning process) disabled: true - label: "Commissioner starts discovery of DUT using Operational Discovery" diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_20.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_20.yaml index 64d2ad99a54fb2..bc6adc2aa8c083 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_20.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_20.yaml @@ -45,7 +45,8 @@ tests: - label: "Scan THs QR code using the DUT Commissioner." PICS: MCORE.DD.SCAN_QR_CODE verification: | - 1. Verify the QR code is scanned by DUT, chip-tool does not support physically scanning QR codes + 1. Verify the QR code is scanned by DUT + Note: chip-tool does not support physically scanning QR codes disabled: true - label: @@ -58,7 +59,7 @@ tests: [1651109784.452813][31207:31207] CHIP:DIS: Updating services using commissioning mode 0 DUT Commissioner: - $ ./out/chip-tool/chip-tool pairing qrcode 1 MT:-24J0AFN00KA0648G00 + $ ./chip-tool pairing code 1 MT:-24J0AFN00KA0648G00 [1651109784376] [95553:65657838] CHIP: [CTL] Received CommissioningComplete response [1651109784376] [95553:65657838] CHIP: [CTL] Successfully finished commissioning step 'SendComplete' @@ -105,7 +106,8 @@ tests: - label: "Scan THs QR code using the DUT Commissioner." PICS: MCORE.DD.SCAN_QR_CODE verification: | - 1. Verify the QR code is scanned by DUT, chip-tool does not support physically scanning QR codes + 1. Verify the QR code is scanned by DUT + Note: chip-tool does not support physically scanning QR codes disabled: true - label: @@ -118,7 +120,7 @@ tests: [1651110724.759869][31791:31791] CHIP:DIS: Updating services using commissioning mode 0 DUT Commissioner: - $ ./out/chip-tool/chip-tool pairing qrcode 1 MT:-24J0AFN00KA0648G00 + $ ./chip-tool pairing code 1 MT:-24J0AFN00KA0648G00 [1651110724689] [95810:65669790] CHIP: [CTL] Received CommissioningComplete response [1651110724689] [95810:65669790] CHIP: [CTL] Successfully finished commissioning step 'SendComplete' diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_21.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_21.yaml new file mode 100644 index 00000000000000..17a468d0c195b7 --- /dev/null +++ b/src/app/tests/suites/certification/Test_TC_DD_3_21.yaml @@ -0,0 +1,105 @@ +# Copyright (c) 2021 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default + +name: + 3.3.21. [TC-DD-3.21] Commissioning Flow - Commission Multiple-Endpoint + Device [DUT - Commissioner] + +config: + nodeId: 0x12344321 + cluster: "Basic" + endpoint: 0 + +tests: + - label: + "Place TH into commissioning mode using the TH manufacturers means to + be discovered by the DUT Commissioner" + verification: | + $ ./out/all-clusters-app/chip-all-clusters-app --discriminator 3840 + + [1651109580.413197][31207:31207] CHIP:DL: Device Configuration: + [1651109580.413259][31207:31207] CHIP:DL: Serial Number: TEST_SN + [1651109580.413294][31207:31207] CHIP:DL: Vendor Id: 65521 (0xFFF1) + [1651109580.413327][31207:31207] CHIP:DL: Product Id: 32769 (0x8001) + [1651109580.413358][31207:31207] CHIP:DL: Hardware Version: 0 + [1651109580.413380][31207:31207] CHIP:DL: Setup Pin Code (0 for UNKNOWN/ERROR): 20202021 + [1651109580.413401][31207:31207] CHIP:DL: Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3840 (0xF00) + [1651109580.413428][31207:31207] CHIP:DL: Manufacturing Date: (not set) + [1651109580.413450][31207:31207] CHIP:DL: Device Type: 65535 (0xFFFF) + [1651109580.413470][31207:31207] CHIP:-: ==== Onboarding payload for Standard Commissioning Flow ==== + [1651109580.413525][31207:31207] CHIP:SVR: SetupQRCode: [MT:-24J0AFN00KA0648G00] + disabled: true + + - label: "Scan THs QR code using the DUT Commissioner." + PICS: MCORE.DD.SCAN_QR_CODE + verification: | + 1. Verify the QR code is scanned by DUT + Note: chip-tool does not support physically scanning QR codes + disabled: true + + - label: + "DUT parses THs QR code. Follow any steps needed for the + Commissioner/Commissionee to complete the commissioning process over + the TH Commissionees method of device discovery" + verification: | + TH Commissionee: + [1651109784.452770][31207:31207] CHIP:SVR: Commissioning completed successfully + [1651109784.452813][31207:31207] CHIP:DIS: Updating services using commissioning mode 0 + + DUT Commissioner: + $ ./chip-tool pairing code 1 MT:-24J0AFN00KA0648G00 + + [1651109784376] [95553:65657838] CHIP: [CTL] Received CommissioningComplete response + [1651109784376] [95553:65657838] CHIP: [CTL] Successfully finished commissioning step 'SendComplete' + [1651109784376] [95553:65657838] CHIP: [CTL] Commissioning stage next step: 'SendComplete' -> 'Cleanup' + [1651109784376] [95553:65657838] CHIP: [CTL] Performing next commissioning step 'Cleanup' + [1651109784376] [95553:65657838] CHIP: [CTL] Successfully finished commissioning step 'Cleanup' + [1651109784376] [95553:65657838] CHIP: [TOO] Device commissioning completed with success + disabled: true + + - label: + "For each TH Endpoint that implements the On/Off light device, verify + that the DUT acknowledges the existence of the Endpoint through DUT + issuing an On command to the respective Endpoint (e.g. through some + user action to trigger such command)." + verification: | + 1. Send 'on' command from Commissioner to TH Endpoint 1 + On DUT=chip-tool: + $ ./chip-tool onoff on 1 1 + [...] + [1657930715416] [56399:2451384] CHIP: [DMG] Received Command Response Status for Endpoint=1 Cluster=0x0000_0006 Command=0x0000_0001 Status=0x0 + + On TH=all-clusters-app: + [...] + [1657930715.432295][2911:2911] CHIP:ZCL: On/Off set value: 1 1 + [1657930715.432341][2911:2911] CHIP:ZCL: Toggle on/off from 0 to 1 + [1657930715.432383][2911:2911] CHIP:ZCL: On Command - OffWaitTime : 0 + [1657930715.432422][2911:2911] CHIP:DMG: Endpoint 1, Cluster 0x0000_0006 update version to ce1d8e1f + [1657930715.432468][2911:2911] CHIP:ZCL: On/Toggle Command - Stop Timer + [1657930715.432509][2911:2911] CHIP:DMG: Endpoint 1, Cluster 0x0000_0006 update version to ce1d8e20 + + + 2. Send 'on' command from Commissioner to TH Endpoint 2 + On DUT=chip-tool: + $ ./chip-tool onoff on 1 2 + [...] + [1657930953792] [56404:2453640] CHIP: [DMG] Received Command Response Status for Endpoint=2 Cluster=0x0000_0006 Command=0x0000_0001 Status=0x0 + + On TH=all-clusters-app: + [...] + [1657930953.816805][2911:2911] CHIP:ZCL: On/Off set value: 2 1 + [1657930953.816841][2911:2911] CHIP:ZCL: Toggle on/off from 0 to 1 + [1657930953.816870][2911:2911] CHIP:DMG: Endpoint 2, Cluster 0x0000_0006 update version to 6475f591 + disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_3.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_3.yaml index f328055332e329..8ef9bcd4ab55bb 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_3.yaml @@ -76,16 +76,29 @@ tests: - label: "DUT is instructed to start the commissioning procedure with the TH - found at step 2" + found at Step 3" verification: | - This particular step is Out of scope for V1.0 + Out of scope for V1.0 - IDM functionality - https://github.com/CHIP-Specifications/chip-test-plans/issues/1312 + https://github.com/project-chip/connectedhomeip/issues/11004 disabled: true - label: "TH verifies the Identification Declaration message" verification: | - This particular step is Out of scope for V1.0 + Out of scope for V1.0 - IDM functionality - https://github.com/CHIP-Specifications/chip-test-plans/issues/1312 + https://github.com/project-chip/connectedhomeip/issues/11004 + disabled: true + + - label: "TH start the commissioning procedure with DUT" + verification: | + ./chip-tool pairing ethernet 1 20202021 3840 fe80::e65f:1ff:fe0f:2755 5640 + + [1653559159.021348][4240:4246] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0005 + [1653559159.021432][4240:4246] CHIP:CTL: Received CommissioningComplete response, errorCode=0 + [1653559159.021499][4240:4246] CHIP:CTL: Successfully finished commissioning step 'SendComplete' + [1653559159.021554][4240:4246] CHIP:CTL: Commissioning stage next step: 'SendComplete' -> 'Cleanup' + [1653559159.021611][4240:4246] CHIP:CTL: Performing next commissioning step 'Cleanup' + [1653559159.021725][4240:4246] CHIP:CTL: Successfully finished commissioning step 'Cleanup' + [1653559159.021790][4240:4246] CHIP:TOO: Device commissioning completed with success disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_4.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_4.yaml index c2e2d53dfa8054..770b44590833f3 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_4.yaml @@ -32,7 +32,7 @@ tests: disabled: true - label: - "TH start scanning for available commissioners using Commissioner + "TH starts scanning for available commissioners using Commissioner Discovery" verification: | ubuntu@ubuntu:~/may23_cntrl/connectedhomeip/examples/chip-tool/out/debug$ avahi-browse -rt _matterd._udp @@ -53,26 +53,26 @@ tests: - label: "TH is instructed to start the commissioning procedure with the DUT - found at step 2" + found at Step 2" verification: | - This particular step is Out of scope for V1.0 + Out of scope for V1.0 - IDM functionality - https://github.com/CHIP-Specifications/chip-test-plans/issues/1312 + https://github.com/project-chip/connectedhomeip/issues/11004 disabled: true - - label: "DUT verify the Identification Declaration message" + - label: "DUT verifies the Identification Declaration message" verification: | - This particular step is Out of scope for V1.0 + Out of scope for V1.0 - IDM functionality - https://github.com/CHIP-Specifications/chip-test-plans/issues/1312 + https://github.com/project-chip/connectedhomeip/issues/11004 disabled: true - - label: "By any means DUT prompt user for onboarding payload" + - label: "By any means, DUT prompts user for onboarding payload" verification: | disabled: true - - label: "DUT start the commissioning procedure with TH" + - label: "DUT starts the commissioning procedure with TH" verification: | ./chip-tool pairing ethernet 1 20202021 3840 fe80::e65f:1ff:fe0f:2755 5640 diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_5.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_5.yaml index fcebf4f8047175..7fc5d4dbbc766c 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_5.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_5.yaml @@ -25,7 +25,8 @@ tests: "Commissioner has regulatory and fabric information available and has accurate date, time and timezone" verification: | - On DUT: sudo ./chip-all-clusters-app --wifi --discriminator 3841 + On TH: + sudo ./chip-all-clusters-app --wifi --discriminator 3841 [1653471956.966855][10713:10713] CHIP:SPT: PASE PBKDF iterations set to 1000 [1653471956.966887][10713:10713] CHIP:SPT: LinuxCommissionableDataProvider didn't get a PASE salt, generating one. @@ -41,162 +42,24 @@ tests: [1653471956.972509][10713:10713] CHIP:-: ==== Onboarding payload for Standard Commissioning Flow ==== [1653471956.972546][10713:10713] CHIP:SVR: SetupQRCode: [MT:-24J0CEK01KA0648G00] [1653471956.972579][10713:10713] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: - [1653471956.972600][10713:10713] CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0CEK01KA0648G00 + [1653471956.972600][10713:10713] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0CEK01KA0648G00 [1653471956.972632][10713:10713] CHIP:SVR: Manual pairing code: [34970112332] [1653471956.972654][10713:10713] CHIP:-: ==== Onboarding payload for Custom Commissioning Flows ==== [1653471956.972715][10713:10713] CHIP:SVR: SetupQRCode: [MT:-24J048N01KA0648G00] [1653471956.972748][10713:10713] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: - [1653471956.972769][10713:10713] CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J048N01KA0648G00 + [1653471956.972769][10713:10713] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J048N01KA0648G00 [1653471956.972803][10713:10713] CHIP:SVR: Manual pairing code: [749701123365521327694] - - connectedhomeip/examples/chip-tool/out/debug$ ./chip-tool discover commissionables - Waiting for device responses... - CHIP:CTL: Generating ICAC - CHIP:DL: AUDIT: ===== RANDOM NUMBER GENERATOR AUDIT START ==== - CHIP:DL: AUDIT: * Validate buf1 and buf2 are <<>> - CHIP:DL: AUDIT: * Validate r1 and r2 are <<>> - CHIP:DL: AUDIT: * buf1: 3BE3E264C0A0A053248E93609D22044A - CHIP:DL: AUDIT: * buf2: E69C8767AD6B60907AD3633E774F38EB - CHIP:DL: AUDIT: * r1: 0x2A0E6454 r2: 0x16315893 - CHIP:DL: AUDIT: ===== RANDOM NUMBER GENERATOR AUDIT END ==== - CHIP:DL: writing settings to file (/tmp/chip_counters.ini-9yXPat) - CHIP:DL: renamed tmp file to file (/tmp/chip_counters.ini) - CHIP:DL: NVS set: chip-counters/reboot-count = 23 (0x17) - CHIP:DL: Got Ethernet interface: eth0 - CHIP:DL: Found the primary Ethernet interface:eth0 - CHIP:DL: Got WiFi interface: wlan0 - CHIP:DL: Failed to reset WiFi statistic counts - CHIP:IN: UDP::Init bind&listen port=5541 - CHIP:IN: UDP::Init bound to port=5541 - CHIP:IN: UDP::Init bind&listen port=5541 - CHIP:IN: UDP::Init bound to port=5541 - CHIP:IN: TransportMgr initialized - CHIP:DIS: Init fabric pairing table with server storage - CHIP:DL: writing settings to file (/tmp/chip_counters.ini-zgCtZd) - CHIP:DL: renamed tmp file to file (/tmp/chip_counters.ini) - CHIP:DL: NVS set: chip-counters/GlobalMCTR = 25000 (0x61A8) - CHIP:CTL: System State Initialized... - CHIP:DL: MDNS failed to join multicast group on veth5731933 for address type IPv4: ../th - CHIP:DL: MDNS failed to join multicast group on vethbf7bfa6 for address type IPv4: ../th - CHIP:DL: MDNS failed to join multicast group on vethcf434e5 for address type IPv4: ../th - CHIP:ZCL: Using ZAP configuration... - CHIP:DIS: Verifying the received credentials - CHIP:IN: Generating compressed fabric ID using uncompressed fabric ID 0x0000000000000000 - CHIP:IN: 0x04, 0x66, 0xd6, 0xcf, 0x4c, 0x1e, 0x11, 0xc3, - CHIP:IN: 0x52, 0x4f, 0xa6, 0x8c, 0x6e, 0x65, 0x46, 0xdc, - CHIP:IN: 0x90, 0x1b, 0x5f, 0x42, 0x9f, 0x69, 0xd1, 0xb7, - CHIP:IN: 0x7d, 0xf3, 0x6b, 0x54, 0x12, 0x6c, 0x12, 0x59, - CHIP:IN: 0x5b, 0xc3, 0x07, 0x1c, 0x5c, 0xf4, 0x4e, 0x5f, - CHIP:IN: 0x71, 0x06, 0x9a, 0xbb, 0x2f, 0xef, 0x20, 0x0d, - CHIP:IN: 0x0e, 0x9b, 0x26, 0x3e, 0x8d, 0x46, 0x09, 0xd8, - CHIP:IN: 0xfd, 0xa1, 0xc0, 0x10, 0x4f, 0x05, 0x14, 0x99, - CHIP:IN: 0x22, - CHIP:IN: Generated compressed fabric ID - CHIP:IN: 0x4a, 0x53, 0x1e, 0x52, 0x06, 0xed, 0x06, 0xda, - CHIP:DIS: Added new fabric at index: 1, Initialized: 1 - CHIP:DIS: Assigned compressed fabric ID: 0x4A531E5206ED06DA, node ID: 0x000000000001B669 - CHIP:CTL: Joined the fabric at index 1. Compressed fabric ID is: 0x4A531E5206ED06DA - CHIP:DL: CHIP task running - CHIP:DIS: Attempt to mDNS broadcast failed: ../third_party/connectedhomeip/src/inet/UDP - CHIP:DIS: Attempt to mDNS broadcast failed: ../third_party/connectedhomeip/src/inet/UDP - CHIP:DIS: Attempt to mDNS broadcast failed: ../third_party/connectedhomeip/src/inet/UDP - CHIP:DIS: Attempt to mDNS broadcast failed: ../third_party/connectedhomeip/src/inet/UDP - CHIP:DIS: Discovered Node: - CHIP:DIS: Host name: EEAABADABAD0DDCA - CHIP:DIS: Port: 5540 - CHIP:DIS: Long discriminator: 3840 - CHIP:DIS: Vendor ID: 9050 - CHIP:DIS: Product ID: 65279 - CHIP:DIS: Commissioning Mode 1 - CHIP:DIS: Device Type 0 - CHIP:DIS: Device Name - CHIP:DIS: Rotating Id 00007C5F6E176CD40F68685D100A1CF8A98B - CHIP:DIS: Pairing Instruction - CHIP:DIS: Pairing Hint 0x21 - CHIP:DIS: Address 0: 2402:e280:2108:181:dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 1: fe80::dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 2: 192.168.1.12 - CHIP:DIS: Discovered Node: - CHIP:DIS: Host name: EEAABADABAD0DDCA - CHIP:DIS: Port: 5540 - CHIP:DIS: Long discriminator: 3840 - CHIP:DIS: Vendor ID: 9050 - CHIP:DIS: Product ID: 65279 - CHIP:DIS: Commissioning Mode 1 - CHIP:DIS: Device Type 0 - CHIP:DIS: Device Name - CHIP:DIS: Rotating Id 00007C5F6E176CD40F68685D100A1CF8A98B - CHIP:DIS: Pairing Instruction - CHIP:DIS: Pairing Hint 0x21 - CHIP:DIS: Address 0: 2402:e280:2108:181:dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 1: fe80::dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 2: 192.168.1.12 - CHIP:DIS: Discovered Node: - CHIP:DIS: Host name: EEAABADABAD0DDCA - CHIP:DIS: Port: 5540 - CHIP:DIS: Long discriminator: 3840 - CHIP:DIS: Vendor ID: 9050 - CHIP:DIS: Product ID: 65279 - CHIP:DIS: Commissioning Mode 1 - CHIP:DIS: Device Type 0 - CHIP:DIS: Device Name - CHIP:DIS: Rotating Id 00007C5F6E176CD40F68685D100A1CF8A98B - CHIP:DIS: Pairing Instruction - CHIP:DIS: Pairing Hint 0x21 - CHIP:DIS: Address 0: 2402:e280:2108:181:dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 1: fe80::dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 2: 192.168.1.12 - CHIP:DIS: Discovered Node: - CHIP:DIS: Host name: EEAABADABAD0DDCA - CHIP:DIS: Port: 5540 - CHIP:DIS: Long discriminator: 3840 - CHIP:DIS: Vendor ID: 9050 - CHIP:DIS: Product ID: 65279 - CHIP:DIS: Commissioning Mode 1 - CHIP:DIS: Device Type 0 - CHIP:DIS: Device Name - CHIP:DIS: Rotating Id 00007C5F6E176CD40F68685D100A1CF8A98B - CHIP:DIS: Pairing Instruction - CHIP:DIS: Pairing Hint 0x21 - CHIP:DIS: Address 0: 2402:e280:2108:181:dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 1: fe80::dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 2: 192.168.1.12 - CHIP:DIS: Discovered Node: - CHIP:DIS: Host name: EEAABADABAD0DDCA - CHIP:DIS: Port: 5540 - CHIP:DIS: Long discriminator: 3840 - CHIP:DIS: Vendor ID: 9050 - CHIP:DIS: Product ID: 65279 - CHIP:DIS: Commissioning Mode 1 - CHIP:DIS: Device Type 0 - CHIP:DIS: Device Name - CHIP:DIS: Rotating Id 00007C5F6E176CD40F68685D100A1CF8A98B - CHIP:DIS: Pairing Instruction - CHIP:DIS: Pairing Hint 0x21 - CHIP:DIS: Address 0: 2402:e280:2108:181:dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 1: fe80::dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 2: 192.168.1.12 - CHIP:DIS: Discovered Node: - CHIP:DIS: Host name: EEAABADABAD0DDCA - CHIP:DIS: Port: 5540 - CHIP:DIS: Long discriminator: 3840 - CHIP:DIS: Vendor ID: 9050 - CHIP:DIS: Product ID: 65279 - CHIP:DIS: Commissioning Mode 1 - CHIP:DIS: Device Type 0 - CHIP:DIS: Device Name - CHIP:DIS: Rotating Id 00007C5F6E176CD40F68685D100A1CF8A98B - CHIP:DIS: Pairing Instruction - CHIP:DIS: Pairing Hint 0x21 - CHIP:DIS: Address 0: 2402:e280:2108:181:dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 1: fe80::dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 2: 192.168.1.12 - - - connectedhomeip/examples/chip-tool/out/debug$ ./chip-tool pairing ble-wifi 1 zigbee-thread matter123 20202021 3841 - - connectedhomeip/examples/chip-tool/out/debug$ sudo ./chip-tool basic read product-name 1 0 + On DUT: + ./chip-tool pairing code 1 MT:-24J0CEK01KA0648G00 + ... + [1657226543861] [30621:16744161] CHIP: [IN] SecureSession[0x6000007cc000]: Activated - Type:1 LSID:47293 + [1657226543861] [30621:16744161] CHIP: [IN] New secure session activated for device , LSID:47293 PSID:201! + [1657226543861] [30621:16744161] CHIP: [CTL] Remote device completed SPAKE2+ handshake + [1657226543861] [30621:16744161] CHIP: [CTL] Stopping commissioning discovery over DNS-SD + [1657226543861] [30621:16744161] CHIP: [TOO] Pairing Success + [1657226543861] [30621:16744161] CHIP: [TOO] PASE establishment successful + [1657226543861] [30621:16744161] CHIP: [CTL] Commissioning stage next step: 'SecurePairing' -> 'ReadCommissioningInfo' disabled: true - label: @@ -204,152 +67,26 @@ tests: discovery mode applicable for the DUT. If (MCORE.DD.DT_IP), TH device is advertising over IP Network using DNS-based Service Discovery (DNS-SD)" - PICS: MCORE.DD.DT_IP + PICS: MCORE.DD.DISCOVERY_IP verification: | - Verify on DUT: - - ./chip-tool discover commissionables - Waiting for device responses... - CHIP:CTL: Generating ICAC - CHIP:DL: AUDIT: ===== RANDOM NUMBER GENERATOR AUDIT START ==== - CHIP:DL: AUDIT: * Validate buf1 and buf2 are <<>> - CHIP:DL: AUDIT: * Validate r1 and r2 are <<>> - CHIP:DL: AUDIT: * buf1: 3BE3E264C0A0A053248E93609D22044A - CHIP:DL: AUDIT: * buf2: E69C8767AD6B60907AD3633E774F38EB - CHIP:DL: AUDIT: * r1: 0x2A0E6454 r2: 0x16315893 - CHIP:DL: AUDIT: ===== RANDOM NUMBER GENERATOR AUDIT END ==== - CHIP:DL: writing settings to file (/tmp/chip_counters.ini-9yXPat) - CHIP:DL: renamed tmp file to file (/tmp/chip_counters.ini) - CHIP:DL: NVS set: chip-counters/reboot-count = 23 (0x17) - CHIP:DL: Got Ethernet interface: eth0 - CHIP:DL: Found the primary Ethernet interface:eth0 - CHIP:DL: Got WiFi interface: wlan0 - CHIP:DL: Failed to reset WiFi statistic counts - CHIP:IN: UDP::Init bind&listen port=5541 - CHIP:IN: UDP::Init bound to port=5541 - CHIP:IN: UDP::Init bind&listen port=5541 - CHIP:IN: UDP::Init bound to port=5541 - CHIP:IN: TransportMgr initialized - CHIP:DIS: Init fabric pairing table with server storage - CHIP:DL: writing settings to file (/tmp/chip_counters.ini-zgCtZd) - CHIP:DL: renamed tmp file to file (/tmp/chip_counters.ini) - CHIP:DL: NVS set: chip-counters/GlobalMCTR = 25000 (0x61A8) - CHIP:CTL: System State Initialized... - CHIP:DL: MDNS failed to join multicast group on veth5731933 for address type IPv4: ../th - CHIP:DL: MDNS failed to join multicast group on vethbf7bfa6 for address type IPv4: ../th - CHIP:DL: MDNS failed to join multicast group on vethcf434e5 for address type IPv4: ../th - CHIP:ZCL: Using ZAP configuration... - CHIP:DIS: Verifying the received credentials - CHIP:IN: Generating compressed fabric ID using uncompressed fabric ID 0x0000000000000000 - CHIP:IN: 0x04, 0x66, 0xd6, 0xcf, 0x4c, 0x1e, 0x11, 0xc3, - CHIP:IN: 0x52, 0x4f, 0xa6, 0x8c, 0x6e, 0x65, 0x46, 0xdc, - CHIP:IN: 0x90, 0x1b, 0x5f, 0x42, 0x9f, 0x69, 0xd1, 0xb7, - CHIP:IN: 0x7d, 0xf3, 0x6b, 0x54, 0x12, 0x6c, 0x12, 0x59, - CHIP:IN: 0x5b, 0xc3, 0x07, 0x1c, 0x5c, 0xf4, 0x4e, 0x5f, - CHIP:IN: 0x71, 0x06, 0x9a, 0xbb, 0x2f, 0xef, 0x20, 0x0d, - CHIP:IN: 0x0e, 0x9b, 0x26, 0x3e, 0x8d, 0x46, 0x09, 0xd8, - CHIP:IN: 0xfd, 0xa1, 0xc0, 0x10, 0x4f, 0x05, 0x14, 0x99, - CHIP:IN: 0x22, - CHIP:IN: Generated compressed fabric ID - CHIP:IN: 0x4a, 0x53, 0x1e, 0x52, 0x06, 0xed, 0x06, 0xda, - CHIP:DIS: Added new fabric at index: 1, Initialized: 1 - CHIP:DIS: Assigned compressed fabric ID: 0x4A531E5206ED06DA, node ID: 0x000000000001B669 - CHIP:CTL: Joined the fabric at index 1. Compressed fabric ID is: 0x4A531E5206ED06DA - CHIP:DL: CHIP task running - CHIP:DIS: Attempt to mDNS broadcast failed: ../third_party/connectedhomeip/src/inet/UDP - CHIP:DIS: Attempt to mDNS broadcast failed: ../third_party/connectedhomeip/src/inet/UDP - CHIP:DIS: Attempt to mDNS broadcast failed: ../third_party/connectedhomeip/src/inet/UDP - CHIP:DIS: Attempt to mDNS broadcast failed: ../third_party/connectedhomeip/src/inet/UDP - CHIP:DIS: Discovered Node: - CHIP:DIS: Host name: EEAABADABAD0DDCA - CHIP:DIS: Port: 5540 - CHIP:DIS: Long discriminator: 3840 - CHIP:DIS: Vendor ID: 9050 - CHIP:DIS: Product ID: 65279 - CHIP:DIS: Commissioning Mode 1 - CHIP:DIS: Device Type 0 - CHIP:DIS: Device Name - CHIP:DIS: Rotating Id 00007C5F6E176CD40F68685D100A1CF8A98B - CHIP:DIS: Pairing Instruction - CHIP:DIS: Pairing Hint 0x21 - CHIP:DIS: Address 0: 2402:e280:2108:181:dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 1: fe80::dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 2: 192.168.1.12 - CHIP:DIS: Discovered Node: - CHIP:DIS: Host name: EEAABADABAD0DDCA - CHIP:DIS: Port: 5540 - CHIP:DIS: Long discriminator: 3840 - CHIP:DIS: Vendor ID: 9050 - CHIP:DIS: Product ID: 65279 - CHIP:DIS: Commissioning Mode 1 - CHIP:DIS: Device Type 0 - CHIP:DIS: Device Name - CHIP:DIS: Rotating Id 00007C5F6E176CD40F68685D100A1CF8A98B - CHIP:DIS: Pairing Instruction - CHIP:DIS: Pairing Hint 0x21 - CHIP:DIS: Address 0: 2402:e280:2108:181:dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 1: fe80::dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 2: 192.168.1.12 - CHIP:DIS: Discovered Node: - CHIP:DIS: Host name: EEAABADABAD0DDCA - CHIP:DIS: Port: 5540 - CHIP:DIS: Long discriminator: 3840 - CHIP:DIS: Vendor ID: 9050 - CHIP:DIS: Product ID: 65279 - CHIP:DIS: Commissioning Mode 1 - CHIP:DIS: Device Type 0 - CHIP:DIS: Device Name - CHIP:DIS: Rotating Id 00007C5F6E176CD40F68685D100A1CF8A98B - CHIP:DIS: Pairing Instruction - CHIP:DIS: Pairing Hint 0x21 - CHIP:DIS: Address 0: 2402:e280:2108:181:dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 1: fe80::dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 2: 192.168.1.12 - CHIP:DIS: Discovered Node: - CHIP:DIS: Host name: EEAABADABAD0DDCA - CHIP:DIS: Port: 5540 - CHIP:DIS: Long discriminator: 3840 - CHIP:DIS: Vendor ID: 9050 - CHIP:DIS: Product ID: 65279 - CHIP:DIS: Commissioning Mode 1 - CHIP:DIS: Device Type 0 - CHIP:DIS: Device Name - CHIP:DIS: Rotating Id 00007C5F6E176CD40F68685D100A1CF8A98B - CHIP:DIS: Pairing Instruction - CHIP:DIS: Pairing Hint 0x21 - CHIP:DIS: Address 0: 2402:e280:2108:181:dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 1: fe80::dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 2: 192.168.1.12 - CHIP:DIS: Discovered Node: - CHIP:DIS: Host name: EEAABADABAD0DDCA - CHIP:DIS: Port: 5540 - CHIP:DIS: Long discriminator: 3840 - CHIP:DIS: Vendor ID: 9050 - CHIP:DIS: Product ID: 65279 - CHIP:DIS: Commissioning Mode 1 - CHIP:DIS: Device Type 0 - CHIP:DIS: Device Name - CHIP:DIS: Rotating Id 00007C5F6E176CD40F68685D100A1CF8A98B - CHIP:DIS: Pairing Instruction - CHIP:DIS: Pairing Hint 0x21 - CHIP:DIS: Address 0: 2402:e280:2108:181:dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 1: fe80::dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 2: 192.168.1.12 - CHIP:DIS: Discovered Node: - CHIP:DIS: Host name: EEAABADABAD0DDCA - CHIP:DIS: Port: 5540 - CHIP:DIS: Long discriminator: 3840 - CHIP:DIS: Vendor ID: 9050 - CHIP:DIS: Product ID: 65279 - CHIP:DIS: Commissioning Mode 1 - CHIP:DIS: Device Type 0 - CHIP:DIS: Device Name - CHIP:DIS: Rotating Id 00007C5F6E176CD40F68685D100A1CF8A98B - CHIP:DIS: Pairing Instruction - CHIP:DIS: Pairing Hint 0x21 - CHIP:DIS: Address 0: 2402:e280:2108:181:dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 1: fe80::dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 2: 192.168.1.12 + On DUT: + ./chip-tool pairing code 1 MT:-24J0AFN00KA0648G00 + ... + [1657226543861] [30621:16744161] CHIP: [IN] SecureSession[0x6000007cc000]: Activated - Type:1 LSID:47293 + [1657226543861] [30621:16744161] CHIP: [IN] New secure session activated for device , LSID:47293 PSID:201! + [1657226543861] [30621:16744161] CHIP: [CTL] Remote device completed SPAKE2+ handshake + [1657226543861] [30621:16744161] CHIP: [CTL] Stopping commissioning discovery over DNS-SD + [1657226543861] [30621:16744161] CHIP: [TOO] Pairing Success + [1657226543861] [30621:16744161] CHIP: [TOO] PASE establishment successful + [1657226543861] [30621:16744161] CHIP: [CTL] Commissioning stage next step: 'SecurePairing' -> 'ReadCommissioningInfo' + + + On TH: + $ ./out/all-clusters-app/chip-all-clusters-app + ... + [1657226543.948995][369114:369114] CHIP:IN: SecureSession[0xaaaab60788e0]: Activated - Type:1 LSID:201 + [1657226543.949023][369114:369114] CHIP:IN: New secure session created for device , LSID:201 PSID:47293! + [1657226543.949048][369114:369114] CHIP:SVR: Commissioning completed session establishment step disabled: true - label: diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_6.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_6.yaml index 10590e2df572f6..22c1fafbdceb5f 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_6.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_6.yaml @@ -26,7 +26,7 @@ tests: "Commissioner has regulatory and fabric information available and has accurate date, time and timezone" verification: | - + 1. Manually verify that the time, date and timezone is accurate for the DUT Commissioner disabled: true - label: @@ -38,7 +38,6 @@ tests: On DUT: start commissioning process(need to obtain the Thread dataset first) ./chip-tool pairing ble-thread 1 hex:0e080000000000010000000300000f35060004001fffe0020811111111222222220708fd27e57b1b1e22d9051000112233445566778899aabbccddeeff030e4f70656e54687265616444656d6f01021234041061e1206d2c2b46e079eb775f41fc72190c0402a0fff8 20202021 3840 - ,, disabled: true - label: @@ -62,7 +61,14 @@ tests: Commissionee." PICS: MCORE.DD.WIRELESS verification: | - Need chip-tool implementation + Verify on DUT Log: + + Performing next commissioning step 'ConfigRegulatory' + [1653471968.202645][30157:30162] CHIP:CTL: Setting Regulatory Config + [1653471968.202666][30157:30162] CHIP:CTL: No regulatory config supplied by controller, leaving as device default (0) + + Verify on TH: + NVS set: chip-config/regulatory-location = 0 (0x0) disabled: true - label: diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_7.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_7.yaml index 6948b45f5b129b..0ab2c671825069 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_7.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_7.yaml @@ -27,321 +27,65 @@ tests: "Commissioner has regulatory and fabric information available and has accurate date, time and timezone" verification: | - On DUT: sudo ./chip-all-clusters-app - - - On Controller: ./chip-tool discover commissionables - - 1. Connect the device to Ethernet - 2. Disover the device using CHIP Tool . ./chip-tool discover commissionables - 3. connect -ip , - 4. Once device is provisioned, read 'Product Name' attribute from the Basic cluster. Example:./chip-tool basic read product-name 1 0 - - Reference : below Full log for the above commands (click on this cell if you like to see complete log) - - - connectedhomeip/examples/chip-tool/out/debug$ ./chip-tool discover commissionables - Waiting for device responses... - CHIP:CTL: Generating ICAC - CHIP:DL: AUDIT: ===== RANDOM NUMBER GENERATOR AUDIT START ==== - CHIP:DL: AUDIT: * Validate buf1 and buf2 are <<>> - CHIP:DL: AUDIT: * Validate r1 and r2 are <<>> - CHIP:DL: AUDIT: * buf1: 3BE3E264C0A0A053248E93609D22044A - CHIP:DL: AUDIT: * buf2: E69C8767AD6B60907AD3633E774F38EB - CHIP:DL: AUDIT: * r1: 0x2A0E6454 r2: 0x16315893 - CHIP:DL: AUDIT: ===== RANDOM NUMBER GENERATOR AUDIT END ==== - CHIP:DL: writing settings to file (/tmp/chip_counters.ini-9yXPat) - CHIP:DL: renamed tmp file to file (/tmp/chip_counters.ini) - CHIP:DL: NVS set: chip-counters/reboot-count = 23 (0x17) - CHIP:DL: Got Ethernet interface: eth0 - CHIP:DL: Found the primary Ethernet interface:eth0 - CHIP:DL: Got WiFi interface: wlan0 - CHIP:DL: Failed to reset WiFi statistic counts - CHIP:IN: UDP::Init bind&listen port=5541 - CHIP:IN: UDP::Init bound to port=5541 - CHIP:IN: UDP::Init bind&listen port=5541 - CHIP:IN: UDP::Init bound to port=5541 - CHIP:IN: TransportMgr initialized - CHIP:DIS: Init fabric pairing table with server storage - CHIP:DL: writing settings to file (/tmp/chip_counters.ini-zgCtZd) - CHIP:DL: renamed tmp file to file (/tmp/chip_counters.ini) - CHIP:DL: NVS set: chip-counters/GlobalMCTR = 25000 (0x61A8) - CHIP:CTL: System State Initialized... - CHIP:DL: MDNS failed to join multicast group on veth5731933 for address type IPv4: ../th - CHIP:DL: MDNS failed to join multicast group on vethbf7bfa6 for address type IPv4: ../th - CHIP:DL: MDNS failed to join multicast group on vethcf434e5 for address type IPv4: ../th - CHIP:ZCL: Using ZAP configuration... - CHIP:DIS: Verifying the received credentials - CHIP:IN: Generating compressed fabric ID using uncompressed fabric ID 0x0000000000000000 - CHIP:IN: 0x04, 0x66, 0xd6, 0xcf, 0x4c, 0x1e, 0x11, 0xc3, - CHIP:IN: 0x52, 0x4f, 0xa6, 0x8c, 0x6e, 0x65, 0x46, 0xdc, - CHIP:IN: 0x90, 0x1b, 0x5f, 0x42, 0x9f, 0x69, 0xd1, 0xb7, - CHIP:IN: 0x7d, 0xf3, 0x6b, 0x54, 0x12, 0x6c, 0x12, 0x59, - CHIP:IN: 0x5b, 0xc3, 0x07, 0x1c, 0x5c, 0xf4, 0x4e, 0x5f, - CHIP:IN: 0x71, 0x06, 0x9a, 0xbb, 0x2f, 0xef, 0x20, 0x0d, - CHIP:IN: 0x0e, 0x9b, 0x26, 0x3e, 0x8d, 0x46, 0x09, 0xd8, - CHIP:IN: 0xfd, 0xa1, 0xc0, 0x10, 0x4f, 0x05, 0x14, 0x99, - CHIP:IN: 0x22, - CHIP:IN: Generated compressed fabric ID - CHIP:IN: 0x4a, 0x53, 0x1e, 0x52, 0x06, 0xed, 0x06, 0xda, - CHIP:DIS: Added new fabric at index: 1, Initialized: 1 - CHIP:DIS: Assigned compressed fabric ID: 0x4A531E5206ED06DA, node ID: 0x000000000001B669 - CHIP:CTL: Joined the fabric at index 1. Compressed fabric ID is: 0x4A531E5206ED06DA - CHIP:DL: CHIP task running - CHIP:DIS: Attempt to mDNS broadcast failed: ../third_party/connectedhomeip/src/inet/UDP - CHIP:DIS: Attempt to mDNS broadcast failed: ../third_party/connectedhomeip/src/inet/UDP - CHIP:DIS: Attempt to mDNS broadcast failed: ../third_party/connectedhomeip/src/inet/UDP - CHIP:DIS: Attempt to mDNS broadcast failed: ../third_party/connectedhomeip/src/inet/UDP - CHIP:DIS: Discovered Node: - CHIP:DIS: Host name: EEAABADABAD0DDCA - CHIP:DIS: Port: 5540 - CHIP:DIS: Long discriminator: 3840 - CHIP:DIS: Vendor ID: 9050 - CHIP:DIS: Product ID: 65279 - CHIP:DIS: Commissioning Mode 1 - CHIP:DIS: Device Type 0 - CHIP:DIS: Device Name - CHIP:DIS: Rotating Id 00007C5F6E176CD40F68685D100A1CF8A98B - CHIP:DIS: Pairing Instruction - CHIP:DIS: Pairing Hint 0x21 - CHIP:DIS: Address 0: 2402:e280:2108:181:dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 1: fe80::dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 2: 192.168.1.12 - CHIP:DIS: Discovered Node: - CHIP:DIS: Host name: EEAABADABAD0DDCA - CHIP:DIS: Port: 5540 - CHIP:DIS: Long discriminator: 3840 - CHIP:DIS: Vendor ID: 9050 - CHIP:DIS: Product ID: 65279 - CHIP:DIS: Commissioning Mode 1 - CHIP:DIS: Device Type 0 - CHIP:DIS: Device Name - CHIP:DIS: Rotating Id 00007C5F6E176CD40F68685D100A1CF8A98B - CHIP:DIS: Pairing Instruction - CHIP:DIS: Pairing Hint 0x21 - CHIP:DIS: Address 0: 2402:e280:2108:181:dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 1: fe80::dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 2: 192.168.1.12 - CHIP:DIS: Discovered Node: - CHIP:DIS: Host name: EEAABADABAD0DDCA - CHIP:DIS: Port: 5540 - CHIP:DIS: Long discriminator: 3840 - CHIP:DIS: Vendor ID: 9050 - CHIP:DIS: Product ID: 65279 - CHIP:DIS: Commissioning Mode 1 - CHIP:DIS: Device Type 0 - CHIP:DIS: Device Name - CHIP:DIS: Rotating Id 00007C5F6E176CD40F68685D100A1CF8A98B - CHIP:DIS: Pairing Instruction - CHIP:DIS: Pairing Hint 0x21 - CHIP:DIS: Address 0: 2402:e280:2108:181:dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 1: fe80::dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 2: 192.168.1.12 - CHIP:DIS: Discovered Node: - CHIP:DIS: Host name: EEAABADABAD0DDCA - CHIP:DIS: Port: 5540 - CHIP:DIS: Long discriminator: 3840 - CHIP:DIS: Vendor ID: 9050 - CHIP:DIS: Product ID: 65279 - CHIP:DIS: Commissioning Mode 1 - CHIP:DIS: Device Type 0 - CHIP:DIS: Device Name - CHIP:DIS: Rotating Id 00007C5F6E176CD40F68685D100A1CF8A98B - CHIP:DIS: Pairing Instruction - CHIP:DIS: Pairing Hint 0x21 - CHIP:DIS: Address 0: 2402:e280:2108:181:dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 1: fe80::dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 2: 192.168.1.12 - CHIP:DIS: Discovered Node: - CHIP:DIS: Host name: EEAABADABAD0DDCA - CHIP:DIS: Port: 5540 - CHIP:DIS: Long discriminator: 3840 - CHIP:DIS: Vendor ID: 9050 - CHIP:DIS: Product ID: 65279 - CHIP:DIS: Commissioning Mode 1 - CHIP:DIS: Device Type 0 - CHIP:DIS: Device Name - CHIP:DIS: Rotating Id 00007C5F6E176CD40F68685D100A1CF8A98B - CHIP:DIS: Pairing Instruction - CHIP:DIS: Pairing Hint 0x21 - CHIP:DIS: Address 0: 2402:e280:2108:181:dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 1: fe80::dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 2: 192.168.1.12 - CHIP:DIS: Discovered Node: - CHIP:DIS: Host name: EEAABADABAD0DDCA - CHIP:DIS: Port: 5540 - CHIP:DIS: Long discriminator: 3840 - CHIP:DIS: Vendor ID: 9050 - CHIP:DIS: Product ID: 65279 - CHIP:DIS: Commissioning Mode 1 - CHIP:DIS: Device Type 0 - CHIP:DIS: Device Name - CHIP:DIS: Rotating Id 00007C5F6E176CD40F68685D100A1CF8A98B - CHIP:DIS: Pairing Instruction - CHIP:DIS: Pairing Hint 0x21 - CHIP:DIS: Address 0: 2402:e280:2108:181:dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 1: fe80::dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 2: 192.168.1.12 - - - connectedhomeip/examples/chip-tool/out/debug$ sudo ./chip-tool pairing ethernet 112233 20202021 3840 fe80::e65f:1ff:fe0f:2753 5540 - - - - - connectedhomeip/examples/chip-tool/out/debug$ sudo ./chip-tool basic read product-name 0x000000000001B669 0 - - ,, + On TH: + sudo ./chip-all-clusters-app --wifi --discriminator 3841 + + [1653471956.966855][10713:10713] CHIP:SPT: PASE PBKDF iterations set to 1000 + [1653471956.966887][10713:10713] CHIP:SPT: LinuxCommissionableDataProvider didn't get a PASE salt, generating one. + [1653471956.972152][10713:10713] CHIP:DL: Device Configuration: + [1653471956.972270][10713:10713] CHIP:DL: Serial Number: TEST_SN + [1653471956.972315][10713:10713] CHIP:DL: Vendor Id: 65521 (0xFFF1) + [1653471956.972354][10713:10713] CHIP:DL: Product Id: 32769 (0x8001) + [1653471956.972388][10713:10713] CHIP:DL: Hardware Version: 0 + [1653471956.972413][10713:10713] CHIP:DL: Setup Pin Code (0 for UNKNOWN/ERROR): 20202021 + [1653471956.972435][10713:10713] CHIP:DL: Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3841 (0xF01) + [1653471956.972464][10713:10713] CHIP:DL: Manufacturing Date: (not set) + [1653471956.972488][10713:10713] CHIP:DL: Device Type: 65535 (0xFFFF) + [1653471956.972509][10713:10713] CHIP:-: ==== Onboarding payload for Standard Commissioning Flow ==== + [1653471956.972546][10713:10713] CHIP:SVR: SetupQRCode: [MT:-24J0CEK01KA0648G00] + [1653471956.972579][10713:10713] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: + [1653471956.972600][10713:10713] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0CEK01KA0648G00 + [1653471956.972632][10713:10713] CHIP:SVR: Manual pairing code: [34970112332] + [1653471956.972654][10713:10713] CHIP:-: ==== Onboarding payload for Custom Commissioning Flows ==== + [1653471956.972715][10713:10713] CHIP:SVR: SetupQRCode: [MT:-24J048N01KA0648G00] + [1653471956.972748][10713:10713] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: + [1653471956.972769][10713:10713] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J048N01KA0648G00 + [1653471956.972803][10713:10713] CHIP:SVR: Manual pairing code: [749701123365521327694] + + On DUT: + ./chip-tool pairing code 1 MT:-24J0CEK01KA0648G00 + ... + [1657226543861] [30621:16744161] CHIP: [IN] SecureSession[0x6000007cc000]: Activated - Type:1 LSID:47293 + [1657226543861] [30621:16744161] CHIP: [IN] New secure session activated for device , LSID:47293 PSID:201! + [1657226543861] [30621:16744161] CHIP: [CTL] Remote device completed SPAKE2+ handshake + [1657226543861] [30621:16744161] CHIP: [CTL] Stopping commissioning discovery over DNS-SD + [1657226543861] [30621:16744161] CHIP: [TOO] Pairing Success + [1657226543861] [30621:16744161] CHIP: [TOO] PASE establishment successful + [1657226543861] [30621:16744161] CHIP: [CTL] Commissioning stage next step: 'SecurePairing' -> 'ReadCommissioningInfo' disabled: true - label: "Commissioner and Commissionee discover each other and connect via the discovery mode applicable for the DUT." verification: | - Verify on DUT: - - ./chip-tool discover commissionables - Waiting for device responses... - CHIP:CTL: Generating ICAC - CHIP:DL: AUDIT: ===== RANDOM NUMBER GENERATOR AUDIT START ==== - CHIP:DL: AUDIT: * Validate buf1 and buf2 are <<>> - CHIP:DL: AUDIT: * Validate r1 and r2 are <<>> - CHIP:DL: AUDIT: * buf1: 3BE3E264C0A0A053248E93609D22044A - CHIP:DL: AUDIT: * buf2: E69C8767AD6B60907AD3633E774F38EB - CHIP:DL: AUDIT: * r1: 0x2A0E6454 r2: 0x16315893 - CHIP:DL: AUDIT: ===== RANDOM NUMBER GENERATOR AUDIT END ==== - CHIP:DL: writing settings to file (/tmp/chip_counters.ini-9yXPat) - CHIP:DL: renamed tmp file to file (/tmp/chip_counters.ini) - CHIP:DL: NVS set: chip-counters/reboot-count = 23 (0x17) - CHIP:DL: Got Ethernet interface: eth0 - CHIP:DL: Found the primary Ethernet interface:eth0 - CHIP:DL: Got WiFi interface: wlan0 - CHIP:DL: Failed to reset WiFi statistic counts - CHIP:IN: UDP::Init bind&listen port=5541 - CHIP:IN: UDP::Init bound to port=5541 - CHIP:IN: UDP::Init bind&listen port=5541 - CHIP:IN: UDP::Init bound to port=5541 - CHIP:IN: TransportMgr initialized - CHIP:DIS: Init fabric pairing table with server storage - CHIP:DL: writing settings to file (/tmp/chip_counters.ini-zgCtZd) - CHIP:DL: renamed tmp file to file (/tmp/chip_counters.ini) - CHIP:DL: NVS set: chip-counters/GlobalMCTR = 25000 (0x61A8) - CHIP:CTL: System State Initialized... - CHIP:DL: MDNS failed to join multicast group on veth5731933 for address type IPv4: ../th - CHIP:DL: MDNS failed to join multicast group on vethbf7bfa6 for address type IPv4: ../th - CHIP:DL: MDNS failed to join multicast group on vethcf434e5 for address type IPv4: ../th - CHIP:ZCL: Using ZAP configuration... - CHIP:DIS: Verifying the received credentials - CHIP:IN: Generating compressed fabric ID using uncompressed fabric ID 0x0000000000000000 - CHIP:IN: 0x04, 0x66, 0xd6, 0xcf, 0x4c, 0x1e, 0x11, 0xc3, - CHIP:IN: 0x52, 0x4f, 0xa6, 0x8c, 0x6e, 0x65, 0x46, 0xdc, - CHIP:IN: 0x90, 0x1b, 0x5f, 0x42, 0x9f, 0x69, 0xd1, 0xb7, - CHIP:IN: 0x7d, 0xf3, 0x6b, 0x54, 0x12, 0x6c, 0x12, 0x59, - CHIP:IN: 0x5b, 0xc3, 0x07, 0x1c, 0x5c, 0xf4, 0x4e, 0x5f, - CHIP:IN: 0x71, 0x06, 0x9a, 0xbb, 0x2f, 0xef, 0x20, 0x0d, - CHIP:IN: 0x0e, 0x9b, 0x26, 0x3e, 0x8d, 0x46, 0x09, 0xd8, - CHIP:IN: 0xfd, 0xa1, 0xc0, 0x10, 0x4f, 0x05, 0x14, 0x99, - CHIP:IN: 0x22, - CHIP:IN: Generated compressed fabric ID - CHIP:IN: 0x4a, 0x53, 0x1e, 0x52, 0x06, 0xed, 0x06, 0xda, - CHIP:DIS: Added new fabric at index: 1, Initialized: 1 - CHIP:DIS: Assigned compressed fabric ID: 0x4A531E5206ED06DA, node ID: 0x000000000001B669 - CHIP:CTL: Joined the fabric at index 1. Compressed fabric ID is: 0x4A531E5206ED06DA - CHIP:DL: CHIP task running - CHIP:DIS: Attempt to mDNS broadcast failed: ../third_party/connectedhomeip/src/inet/UDP - CHIP:DIS: Attempt to mDNS broadcast failed: ../third_party/connectedhomeip/src/inet/UDP - CHIP:DIS: Attempt to mDNS broadcast failed: ../third_party/connectedhomeip/src/inet/UDP - CHIP:DIS: Attempt to mDNS broadcast failed: ../third_party/connectedhomeip/src/inet/UDP - CHIP:DIS: Discovered Node: - CHIP:DIS: Host name: EEAABADABAD0DDCA - CHIP:DIS: Port: 5540 - CHIP:DIS: Long discriminator: 3840 - CHIP:DIS: Vendor ID: 9050 - CHIP:DIS: Product ID: 65279 - CHIP:DIS: Commissioning Mode 1 - CHIP:DIS: Device Type 0 - CHIP:DIS: Device Name - CHIP:DIS: Rotating Id 00007C5F6E176CD40F68685D100A1CF8A98B - CHIP:DIS: Pairing Instruction - CHIP:DIS: Pairing Hint 0x21 - CHIP:DIS: Address 0: 2402:e280:2108:181:dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 1: fe80::dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 2: 192.168.1.12 - CHIP:DIS: Discovered Node: - CHIP:DIS: Host name: EEAABADABAD0DDCA - CHIP:DIS: Port: 5540 - CHIP:DIS: Long discriminator: 3840 - CHIP:DIS: Vendor ID: 9050 - CHIP:DIS: Product ID: 65279 - CHIP:DIS: Commissioning Mode 1 - CHIP:DIS: Device Type 0 - CHIP:DIS: Device Name - CHIP:DIS: Rotating Id 00007C5F6E176CD40F68685D100A1CF8A98B - CHIP:DIS: Pairing Instruction - CHIP:DIS: Pairing Hint 0x21 - CHIP:DIS: Address 0: 2402:e280:2108:181:dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 1: fe80::dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 2: 192.168.1.12 - CHIP:DIS: Discovered Node: - CHIP:DIS: Host name: EEAABADABAD0DDCA - CHIP:DIS: Port: 5540 - CHIP:DIS: Long discriminator: 3840 - CHIP:DIS: Vendor ID: 9050 - CHIP:DIS: Product ID: 65279 - CHIP:DIS: Commissioning Mode 1 - CHIP:DIS: Device Type 0 - CHIP:DIS: Device Name - CHIP:DIS: Rotating Id 00007C5F6E176CD40F68685D100A1CF8A98B - CHIP:DIS: Pairing Instruction - CHIP:DIS: Pairing Hint 0x21 - CHIP:DIS: Address 0: 2402:e280:2108:181:dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 1: fe80::dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 2: 192.168.1.12 - CHIP:DIS: Discovered Node: - CHIP:DIS: Host name: EEAABADABAD0DDCA - CHIP:DIS: Port: 5540 - CHIP:DIS: Long discriminator: 3840 - CHIP:DIS: Vendor ID: 9050 - CHIP:DIS: Product ID: 65279 - CHIP:DIS: Commissioning Mode 1 - CHIP:DIS: Device Type 0 - CHIP:DIS: Device Name - CHIP:DIS: Rotating Id 00007C5F6E176CD40F68685D100A1CF8A98B - CHIP:DIS: Pairing Instruction - CHIP:DIS: Pairing Hint 0x21 - CHIP:DIS: Address 0: 2402:e280:2108:181:dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 1: fe80::dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 2: 192.168.1.12 - CHIP:DIS: Discovered Node: - CHIP:DIS: Host name: EEAABADABAD0DDCA - CHIP:DIS: Port: 5540 - CHIP:DIS: Long discriminator: 3840 - CHIP:DIS: Vendor ID: 9050 - CHIP:DIS: Product ID: 65279 - CHIP:DIS: Commissioning Mode 1 - CHIP:DIS: Device Type 0 - CHIP:DIS: Device Name - CHIP:DIS: Rotating Id 00007C5F6E176CD40F68685D100A1CF8A98B - CHIP:DIS: Pairing Instruction - CHIP:DIS: Pairing Hint 0x21 - CHIP:DIS: Address 0: 2402:e280:2108:181:dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 1: fe80::dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 2: 192.168.1.12 - CHIP:DIS: Discovered Node: - CHIP:DIS: Host name: EEAABADABAD0DDCA - CHIP:DIS: Port: 5540 - CHIP:DIS: Long discriminator: 3840 - CHIP:DIS: Vendor ID: 9050 - CHIP:DIS: Product ID: 65279 - CHIP:DIS: Commissioning Mode 1 - CHIP:DIS: Device Type 0 - CHIP:DIS: Device Name - CHIP:DIS: Rotating Id 00007C5F6E176CD40F68685D100A1CF8A98B - CHIP:DIS: Pairing Instruction - CHIP:DIS: Pairing Hint 0x21 - CHIP:DIS: Address 0: 2402:e280:2108:181:dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 1: fe80::dea6:32ff:fef9:f0a1 - CHIP:DIS: Address 2: 192.168.1.12 + On DUT: + ./chip-tool pairing code 1 MT:-24J0AFN00KA0648G00 + ... + [1657226543861] [30621:16744161] CHIP: [IN] SecureSession[0x6000007cc000]: Activated - Type:1 LSID:47293 + [1657226543861] [30621:16744161] CHIP: [IN] New secure session activated for device , LSID:47293 PSID:201! + [1657226543861] [30621:16744161] CHIP: [CTL] Remote device completed SPAKE2+ handshake + [1657226543861] [30621:16744161] CHIP: [CTL] Stopping commissioning discovery over DNS-SD + [1657226543861] [30621:16744161] CHIP: [TOO] Pairing Success + [1657226543861] [30621:16744161] CHIP: [TOO] PASE establishment successful + [1657226543861] [30621:16744161] CHIP: [CTL] Commissioning stage next step: 'SecurePairing' -> 'ReadCommissioningInfo' + + + On TH: + $ ./out/all-clusters-app/chip-all-clusters-app + ... + [1657226543.948995][369114:369114] CHIP:IN: SecureSession[0xaaaab60788e0]: Activated - Type:1 LSID:201 + [1657226543.949023][369114:369114] CHIP:IN: New secure session created for device , LSID:201 PSID:47293! + [1657226543.949048][369114:369114] CHIP:SVR: Commissioning completed session establishment step disabled: true - label: @@ -558,7 +302,14 @@ tests: Commissionee." PICS: MCORE.DD.WIRELESS verification: | - Need test step review, potentially not a hard requirement so would not be required in test case + Verify on DUT Log: + + Performing next commissioning step 'ConfigRegulatory' + [1653471968.202645][30157:30162] CHIP:CTL: Setting Regulatory Config + [1653471968.202666][30157:30162] CHIP:CTL: No regulatory config supplied by controller, leaving as device default (0) + + Verify on TH: + NVS set: chip-config/regulatory-location = 0 (0x0) disabled: true - label: diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_8.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_8.yaml index 1e0500759afca0..77b93736de59bc 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_8.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_8.yaml @@ -27,7 +27,7 @@ tests: "Commissioner has regulatory and fabric information available and has accurate date, time and timezone" verification: | - + 1. Manually verify that the time, date and timezone is accurate for the DUT Commissioner disabled: true - label: @@ -39,7 +39,6 @@ tests: On DUT: start commissioning process(need to obtain the Thread dataset first) ./chip-tool pairing ble-thread 1 hex:0e080000000000010000000300000f35060004001fffe0020811111111222222220708fd27e57b1b1e22d9051000112233445566778899aabbccddeeff030e4f70656e54687265616444656d6f01021234041061e1206d2c2b46e079eb775f41fc72190c0402a0fff8 20202021 3840 - ,, disabled: true - label: @@ -63,8 +62,14 @@ tests: Commissionee." PICS: MCORE.DD.WIRELESS verification: | - On DUT: - CHIP:CTL: Setting Regulatory Config + Verify on DUT Log: + + Performing next commissioning step 'ConfigRegulatory' + [1653471968.202645][30157:30162] CHIP:CTL: Setting Regulatory Config + [1653471968.202666][30157:30162] CHIP:CTL: No regulatory config supplied by controller, leaving as device default (0) + + Verify on TH: + NVS set: chip-config/regulatory-location = 0 (0x0) disabled: true - label: @@ -380,7 +385,14 @@ tests: Commissionee." PICS: MCORE.DD.WIRELESS verification: | - Need test step review, potentially not a hard requirement so would not be required in test case + Verify on DUT Log: + + Performing next commissioning step 'ConfigRegulatory' + [1653471968.202645][30157:30162] CHIP:CTL: Setting Regulatory Config + [1653471968.202666][30157:30162] CHIP:CTL: No regulatory config supplied by controller, leaving as device default (0) + + Verify on TH: + NVS set: chip-config/regulatory-location = 0 (0x0) disabled: true - label: diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_9.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_9.yaml index 2028db0de9b25c..f8d1c497fbe84b 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_9.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_9.yaml @@ -25,15 +25,15 @@ tests: - label: "TH receives Onboarding Payload from the DUT" verification: | 1. Parse the DUT's QR Code using the TH commissioner: chip-tool - $ ./out/chip-tool/chip-tool payload parse-setup-payload MT:-24J029Q00KA0648G00 - [1651077458589] [91233:65331701] CHIP: [SPL] Parsing base38Representation: MT:-24J029Q00KA0648G00 - [1651077458590] [91233:65331701] CHIP: [SPL] CommissioningFlow: 2 - [1651077458590] [91233:65331701] CHIP: [SPL] VendorID: 65521 - [1651077458590] [91233:65331701] CHIP: [SPL] Version: 0 - [1651077458590] [91233:65331701] CHIP: [SPL] ProductID: 32769 - [1651077458590] [91233:65331701] CHIP: [SPL] Discriminator: 3840 - [1651077458590] [91233:65331701] CHIP: [SPL] SetUpPINCode: 20202021 - [1651077458590] [91233:65331701] CHIP: [SPL] RendezvousInformation: 4 + $ ./chip-tool payload parse-setup-payload MT:-24J029Q00KA0648G00 + [1657230447725] [31078:16782733] CHIP: [SPL] Parsing base38Representation: MT:-24J029Q00KA0648G00 + [1657230447725] [31078:16782733] CHIP: [SPL] Version: 0 + [1657230447725] [31078:16782733] CHIP: [SPL] VendorID: 65521 + [1657230447725] [31078:16782733] CHIP: [SPL] ProductID: 32769 + [1657230447725] [31078:16782733] CHIP: [SPL] Custom flow: 2 (CUSTOM) + [1657230447725] [31078:16782733] CHIP: [SPL] Capabilities: 0x04 (On IP network) + [1657230447725] [31078:16782733] CHIP: [SPL] Discriminator: 3840 + [1657230447725] [31078:16782733] CHIP: [SPL] Passcode: 20202021 2. Verify that the CommissioningFlow is set to 2 (Custom Flow) disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DGWIFI_2_3.yaml b/src/app/tests/suites/certification/Test_TC_DGWIFI_2_3.yaml index aef885fe6add0a..c8520908ff3a39 100644 --- a/src/app/tests/suites/certification/Test_TC_DGWIFI_2_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_DGWIFI_2_3.yaml @@ -40,39 +40,57 @@ tests: command: "readAttribute" attribute: "BeaconLostCount" response: - value: 0 + constraints: + type: uint32 + minValue: 0 + maxValue: 4294967295 - label: "Reads BeaconRxCount attribute from DUT" PICS: PICS_SKIP_SAMPLE_APP && DGWIFI.S.C00.Rsp command: "readAttribute" attribute: "BeaconRxCount" response: - value: 0 + constraints: + type: uint32 + minValue: 0 + maxValue: 4294967295 - label: "Reads PacketMulticastRxCount attribute from DUT" PICS: PICS_SKIP_SAMPLE_APP && DGWIFI.S.C00.Rsp command: "readAttribute" attribute: "PacketMulticastRxCount" response: - value: 0 + constraints: + type: uint32 + minValue: 0 + maxValue: 4294967295 - label: "Reads PacketMulticastTxCount attribute from DUT" PICS: PICS_SKIP_SAMPLE_APP && DGWIFI.S.C00.Rsp command: "readAttribute" attribute: "PacketMulticastTxCount" response: - value: 0 + constraints: + type: uint32 + minValue: 0 + maxValue: 4294967295 - label: "Reads PacketUnicastRxCount attribute from DUT" PICS: PICS_SKIP_SAMPLE_APP && DGWIFI.S.C00.Rsp command: "readAttribute" attribute: "PacketUnicastRxCount" response: - value: 0 + constraints: + type: uint32 + minValue: 0 + maxValue: 4294967295 - label: "Reads PacketUnicastTxCount attribute from DUT" PICS: PICS_SKIP_SAMPLE_APP && DGWIFI.S.C00.Rsp command: "readAttribute" attribute: "PacketUnicastTxCount" response: - value: 0 + constraints: + type: uint32 + minValue: 0 + maxValue: 4294967295 diff --git a/src/app/tests/suites/certification/Test_TC_KEYPADINPUT_1_2.yaml b/src/app/tests/suites/certification/Test_TC_KEYPADINPUT_1_2.yaml index c2df2b48e3e2ed..7d7aa0e979a0e8 100644 --- a/src/app/tests/suites/certification/Test_TC_KEYPADINPUT_1_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_KEYPADINPUT_1_2.yaml @@ -38,7 +38,7 @@ tests: constraints: type: uint16 - - label: "Read the optional global attribute: FeatureMap" + - label: "Read the global attribute: FeatureMap" PICS: KEYPADINPUT.S.NV || KEYPADINPUT.S.LK || KEYPADINPUT.S.NK command: "readAttribute" attribute: "FeatureMap" diff --git a/src/app/tests/suites/certification/Test_TC_LVL_1_1.yaml b/src/app/tests/suites/certification/Test_TC_LVL_1_1.yaml index 10f10b40948ffa..fa578cd9145de2 100644 --- a/src/app/tests/suites/certification/Test_TC_LVL_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_LVL_1_1.yaml @@ -85,7 +85,7 @@ tests: type: list contains: [2] - - label: "Read the optonal attribute(MinLevel) in AttributeList" + - label: "Read the optonal attribute(MaxLevel) in AttributeList" PICS: LVL.S.A0003 command: "readAttribute" attribute: "AttributeList" diff --git a/src/app/tests/suites/certification/Test_TC_LVL_2_1.yaml b/src/app/tests/suites/certification/Test_TC_LVL_2_1.yaml index b6f4088fd15da6..5a5cbfe3c5fb47 100644 --- a/src/app/tests/suites/certification/Test_TC_LVL_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_LVL_2_1.yaml @@ -28,37 +28,6 @@ tests: - name: "nodeId" value: nodeId - # Temporary - see #13551 - - label: "Precondition: Reset level to 254" - PICS: PICS_SDK_CI_ONLY - command: "MoveToLevel" - arguments: - values: - - name: "level" - value: 254 - - name: "transitionTime" - value: 0 - - name: "optionMask" - value: 1 - - name: "optionOverride" - value: 1 - - - label: "Wait 100ms" - PICS: PICS_SDK_CI_ONLY - cluster: "DelayCommands" - command: "WaitForMs" - arguments: - values: - - name: "ms" - value: 100 - - - label: "Precondition: Reads the CurrentLevel attribute" - PICS: LVL.S.A0000 - command: "readAttribute" - attribute: "current level" - response: - value: 254 - - label: "Reads the CurrentLevel attribute" PICS: LVL.S.A0000 command: "readAttribute" @@ -95,7 +64,7 @@ tests: command: "readAttribute" attribute: "min level" response: - saveAs: MinLevelValue1 + saveAs: MinLevelFeatureMapNotSupportedValue constraints: type: uint8 minValue: 0 @@ -117,10 +86,10 @@ tests: command: "readAttribute" attribute: "max level" response: - saveAs: MaxLevelValue1 + saveAs: MaxLevelFeatureMapNotSupportedValue constraints: type: uint8 - minValue: MinLevelValue1 + minValue: MinLevelFeatureMapNotSupportedValue maxValue: 254 - label: "Step 4b & 4C Reads the CurrentLevel attribute" @@ -140,8 +109,8 @@ tests: response: constraints: type: uint8 - minValue: MinLevelValue1 - maxValue: MaxLevelValue1 + minValue: MinLevelFeatureMapNotSupportedValue + maxValue: MaxLevelFeatureMapNotSupportedValue - label: "Reads the CurrentFrequency attribute" PICS: LVL.S.A0004 @@ -212,8 +181,8 @@ tests: response: constraints: type: uint8 - minValue: MinLevelValue1 - maxValue: MaxLevelValue1 + minValue: MinLevelFeatureMapNotSupportedValue + maxValue: MaxLevelFeatureMapNotSupportedValue - label: "Reads the OnTransitionTime attribute " PICS: LVL.S.A0012 diff --git a/src/app/tests/suites/certification/Test_TC_LVL_3_1.yaml b/src/app/tests/suites/certification/Test_TC_LVL_3_1.yaml index df5043401010d4..7e87c9785e43cf 100644 --- a/src/app/tests/suites/certification/Test_TC_LVL_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_LVL_3_1.yaml @@ -188,28 +188,6 @@ tests: response: value: 64 - - label: "Reset level to 254" - PICS: LVL.S.C00.Rsp && LVL.S.A0010 && LVL.S.A0000 - command: "MoveToLevel" - arguments: - values: - - name: "level" - value: 254 - - name: "transitionTime" - value: 0 - - name: "optionMask" - value: 1 - - name: "optionOverride" - value: 1 - - - label: "Wait 100ms" - cluster: "DelayCommands" - command: "WaitForMs" - arguments: - values: - - name: "ms" - value: 100 - - label: "Precondition send Off Command" cluster: "On/Off" PICS: OO.S.C00.Rsp diff --git a/src/app/tests/suites/certification/Test_TC_LVL_4_1.yaml b/src/app/tests/suites/certification/Test_TC_LVL_4_1.yaml index f9dadfe58fbc15..9545b773649e5d 100644 --- a/src/app/tests/suites/certification/Test_TC_LVL_4_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_LVL_4_1.yaml @@ -156,7 +156,6 @@ tests: - name: "ms" value: 5000 - # For lighting Device type current level minimal value is 1 - label: "reads CurrentLevel attribute from DUT" PICS: LVL.S.C05.Rsp && LVL.S.A0000 command: "readAttribute" @@ -213,28 +212,6 @@ tests: - name: "expectedValue" value: "y" - - label: "Reset level to 254" - PICS: LVL.S.C00.Rsp && LVL.S.A0010 && LVL.S.A0000 - command: "MoveToLevel" - arguments: - values: - - name: "level" - value: 254 - - name: "transitionTime" - value: 0 - - name: "optionMask" - value: 1 - - name: "optionOverride" - value: 1 - - - label: "Wait 100ms" - cluster: "DelayCommands" - command: "WaitForMs" - arguments: - values: - - name: "ms" - value: 100 - - label: "Precondition send Off Command" cluster: "On/Off" PICS: OO.S.C00.Rsp diff --git a/src/app/tests/suites/certification/Test_TC_LVL_5_1.yaml b/src/app/tests/suites/certification/Test_TC_LVL_5_1.yaml index abcf91204efe42..333b9c1d65b31f 100644 --- a/src/app/tests/suites/certification/Test_TC_LVL_5_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_LVL_5_1.yaml @@ -53,12 +53,26 @@ tests: maxValue: 255 - label: "Sends MoveToLevelWithOnOff command to DUT" - PICS: LVL.S.C04.Rsp + PICS: LVL.S.C04.Rsp && LVL.S.A0002 command: "MoveToLevelWithOnOff" arguments: values: - name: "level" - value: MinlevelValue + value: MinlevelValue + 1 + - name: "transitionTime" + value: 0 + - name: "optionMask" + value: 1 + - name: "optionOverride" + value: 1 + + - label: "Sends MoveToLevelWithOnOff command to DUT" + PICS: LVL.S.C04.Rsp && !LVL.S.A0002 + command: "MoveToLevelWithOnOff" + arguments: + values: + - name: "level" + value: 2 - name: "transitionTime" value: 0 - name: "optionMask" @@ -71,13 +85,24 @@ tests: command: "readAttribute" attribute: "current level" response: - value: MinlevelValue + value: MinlevelValue + 1 saveAs: CurrentlevelValue constraints: type: uint8 minValue: 0 maxValue: 255 + - label: "Reads current level attribute from DUT" + PICS: LVL.S.A0000 && !LVL.S.A0002 + command: "readAttribute" + attribute: "current level" + response: + value: 2 + constraints: + type: uint8 + minValue: 0 + maxValue: 255 + - label: "Sends step up command to DUT" PICS: LVL.S.C02.Rsp && LVL.S.M.VarRate command: "Step" @@ -143,27 +168,12 @@ tests: response: value: CurrentlevelValue - - label: "Reset level to 254" - PICS: LVL.S.C00.Rsp - command: "MoveToLevel" - arguments: - values: - - name: "level" - value: 254 - - name: "transitionTime" - value: 0 - - name: "optionMask" - value: 1 - - name: "optionOverride" - value: 1 - - - label: "Wait 100ms" - cluster: "DelayCommands" - command: "WaitForMs" - arguments: - values: - - name: "ms" - value: 100 + - label: "Reads current level attribute from DUT" + PICS: LVL.S.C06.Rsp && LVL.S.A0000 && !LVL.S.A0002 + command: "readAttribute" + attribute: "current level" + response: + value: 2 - label: "Precondition send Off Command" cluster: "On/Off" diff --git a/src/app/tests/suites/certification/Test_TC_LVL_6_1.yaml b/src/app/tests/suites/certification/Test_TC_LVL_6_1.yaml index 9058552ff93319..016f5ac594be7a 100644 --- a/src/app/tests/suites/certification/Test_TC_LVL_6_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_LVL_6_1.yaml @@ -181,28 +181,6 @@ tests: maxValue: 55 notValue: CurrentLevelValue - - label: "Reset level to 254" - PICS: LVL.S.C00.Rsp && LVL.S.A0010 && LVL.S.A0000 - command: "MoveToLevel" - arguments: - values: - - name: "level" - value: 254 - - name: "transitionTime" - value: 0 - - name: "optionMask" - value: 1 - - name: "optionOverride" - value: 1 - - - label: "Wait 100ms" - cluster: "DelayCommands" - command: "WaitForMs" - arguments: - values: - - name: "ms" - value: 100 - - label: "Precondition send Off Command" cluster: "On/Off" PICS: OO.S.C00.Rsp diff --git a/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_1_4.yaml b/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_1_4.yaml index b711c27431e241..db0296b2ffb8ba 100644 --- a/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_1_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_1_4.yaml @@ -38,7 +38,7 @@ tests: constraints: type: uint16 - - label: "Read the optional global attribute: FeatureMap" + - label: "Read the global attribute: FeatureMap" PICS: MEDIAINPUT.S.NU command: "readAttribute" attribute: "FeatureMap" diff --git a/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_1_7.yaml b/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_1_7.yaml index 07337bb8e6371e..5ac838f7fb8c94 100644 --- a/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_1_7.yaml +++ b/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_1_7.yaml @@ -38,7 +38,7 @@ tests: constraints: type: uint16 - - label: "Read the optional global attribute: FeatureMap" + - label: "Read the global attribute: FeatureMap" PICS: MEDIAPLAYBACK.S.AS || MEDIAPLAYBACK.S.VS command: "readAttribute" attribute: "FeatureMap" @@ -118,6 +118,77 @@ tests: type: list contains: [0, 1, 2] + - label: "Read the optional command(StartOver) in AcceptedCommandList" + PICS: MEDIAPLAYBACK.S.C03.Rsp + command: "readAttribute" + attribute: "AcceptedCommandList" + response: + constraints: + type: list + contains: [3] + + - label: "Read the optional command(Previous) in AcceptedCommandList" + PICS: MEDIAPLAYBACK.S.C04.Rsp + command: "readAttribute" + attribute: "AcceptedCommandList" + response: + constraints: + type: list + contains: [4] + + - label: "Read the optional command(Next) in AcceptedCommandList" + PICS: MEDIAPLAYBACK.S.C05.Rsp + command: "readAttribute" + attribute: "AcceptedCommandList" + response: + constraints: + type: list + contains: [5] + + - label: "Read the optional command(Rewind) in AcceptedCommandList" + PICS: MEDIAPLAYBACK.S.C06.Rsp + command: "readAttribute" + attribute: "AcceptedCommandList" + response: + constraints: + type: list + contains: [6] + - label: "Read the optional command(FastForward) in AcceptedCommandList" + PICS: MEDIAPLAYBACK.S.C07.Rsp + command: "readAttribute" + attribute: "AcceptedCommandList" + response: + constraints: + type: list + contains: [7] + + - label: "Read the optional command(SkipForward) in AcceptedCommandList" + PICS: MEDIAPLAYBACK.S.C08.Rsp + command: "readAttribute" + attribute: "AcceptedCommandList" + response: + constraints: + type: list + contains: [8] + + - label: "Read the optional command(SkipBackward) in AcceptedCommandList" + PICS: MEDIAPLAYBACK.S.C09.Rsp + command: "readAttribute" + attribute: "AcceptedCommandList" + response: + constraints: + type: list + contains: [9] + + - label: "Read the optional command(Seek) in AcceptedCommandList" + PICS: MEDIAPLAYBACK.S.C0B.Rsp + command: "readAttribute" + attribute: "AcceptedCommandList" + response: + constraints: + type: list + contains: [11] + - label: "Read the global attribute: GeneratedCommandList" command: "readAttribute" attribute: "GeneratedCommandList" diff --git a/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_6_1.yaml b/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_6_1.yaml index 2ef5ef5cf3cd42..0e2707ab7826ea 100644 --- a/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_6_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_6_1.yaml @@ -64,7 +64,7 @@ tests: - name: "expectedValue" value: "y" - - label: "Reads the playback state attribute" + - label: "Reads the CurrentState attribute" PICS: MEDIAPLAYBACK.S.A0000 command: "readAttribute" attribute: "CurrentState" @@ -90,7 +90,7 @@ tests: - name: "expectedValue" value: "y" - - label: "Reads the playback state attribute" + - label: "Reads the CurrentState attribute" command: "readAttribute" attribute: "CurrentState" response: @@ -115,7 +115,7 @@ tests: - name: "expectedValue" value: "y" - - label: "Reads the playback state attribute" + - label: "Reads the CurrentState attribute" PICS: MEDIAPLAYBACK.S.A0000 command: "readAttribute" attribute: "CurrentState" diff --git a/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_6_2.yaml b/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_6_2.yaml index f26c10f8e38e64..8a2918e2d7c264 100644 --- a/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_6_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_6_2.yaml @@ -72,7 +72,7 @@ tests: value: 0 - label: "Sends a StartOver command to the DUT" - PICS: MEDIAPLAYBACK.S.C0003 + PICS: MEDIAPLAYBACK.S.C03.Rsp command: "StartOver" response: values: @@ -91,7 +91,7 @@ tests: value: "y" - label: "Sends a Next command to the DUT" - PICS: MEDIAPLAYBACK.S.C0005 + PICS: MEDIAPLAYBACK.S.C05.Rsp command: "Next" response: values: @@ -111,7 +111,7 @@ tests: value: "y" - label: "Sends a Previous command to the DUT" - PICS: MEDIAPLAYBACK.S.C0004 + PICS: MEDIAPLAYBACK.S.C04.Rsp command: "Previous" response: values: @@ -132,7 +132,7 @@ tests: value: "y" - label: "Sends a SkipForward command to the DUT " - PICS: MEDIAPLAYBACK.S.C0008 + PICS: MEDIAPLAYBACK.S.C08.Rsp command: "SkipForward" arguments: values: @@ -163,7 +163,7 @@ tests: value: 10000 - label: "Sends a SkipBackward command to the DUT " - PICS: MEDIAPLAYBACK.S.C0009 + PICS: MEDIAPLAYBACK.S.C09.Rsp command: "SkipBackward" arguments: values: diff --git a/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_6_3.yaml b/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_6_3.yaml index d2cd64bb010a38..15b6cf62ae264d 100644 --- a/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_6_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_6_3.yaml @@ -42,7 +42,7 @@ tests: value: 0 - label: "Sends a Seek command" - PICS: MEDIAPLAYBACK.S.C000B + PICS: MEDIAPLAYBACK.S.C0B.Rsp command: "Seek" arguments: values: @@ -142,7 +142,7 @@ tests: - label: "Sends a Seek command Position value beyond the furthest valid position" - PICS: MEDIAPLAYBACK.S.C000B + PICS: MEDIAPLAYBACK.S.C0B.Rsp command: "Seek" arguments: values: diff --git a/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_6_4.yaml b/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_6_4.yaml index 94697c546a6a75..43c14b0bc586ec 100644 --- a/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_6_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_6_4.yaml @@ -53,7 +53,7 @@ tests: value: 0 - label: "Sends a FastForward command" - PICS: MEDIAPLAYBACK.S.C0007 + PICS: MEDIAPLAYBACK.S.C07.Rsp command: "FastForward" response: values: @@ -75,7 +75,7 @@ tests: value: 1 - label: "Sends a FastForward command" - PICS: MEDIAPLAYBACK.S.C0007 + PICS: MEDIAPLAYBACK.S.C07.Rsp command: "FastForward" response: values: @@ -90,7 +90,7 @@ tests: value: 2 - label: "Sends a Rewind command to the DUT" - PICS: MEDIAPLAYBACK.S.C0006 + PICS: MEDIAPLAYBACK.S.C06.Rsp command: "Rewind" response: values: @@ -113,7 +113,7 @@ tests: [1655114487.018421][41855:41860] CHIP:EM: Sending Standalone Ack for MessageCounter:163883813 on exchange 24959 cluster: "LogCommands" command: "UserPrompt" - PICS: PICS_USER_PROMPT && MEDIAPLAYBACK.S.C0007 + PICS: PICS_USER_PROMPT && MEDIAPLAYBACK.S.C07.Rsp arguments: values: - name: "message" @@ -122,7 +122,7 @@ tests: value: "y" - label: "Sends a Rewind command to the DUT" - PICS: MEDIAPLAYBACK.S.C0006 + PICS: MEDIAPLAYBACK.S.C06.Rsp command: "Rewind" response: values: @@ -175,7 +175,7 @@ tests: [1655460522.133751][12273:12278] CHIP:TOO: } cluster: "LogCommands" command: "UserPrompt" - PICS: PICS_USER_PROMPT && MEDIAPLAYBACK.S.C0007 + PICS: PICS_USER_PROMPT && MEDIAPLAYBACK.S.C07.Rsp arguments: values: - name: "message" @@ -195,7 +195,7 @@ tests: [1655460483.177228][12225:12230] CHIP:TOO: } cluster: "LogCommands" command: "UserPrompt" - PICS: PICS_USER_PROMPT && MEDIAPLAYBACK.S.C0006 + PICS: PICS_USER_PROMPT && MEDIAPLAYBACK.S.C06.Rsp arguments: values: - name: "message" diff --git a/src/app/tests/suites/certification/Test_TC_OO_2_3.yaml b/src/app/tests/suites/certification/Test_TC_OO_2_3.yaml index 956cb07d6fdeb9..514e7fd4c53dda 100644 --- a/src/app/tests/suites/certification/Test_TC_OO_2_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_OO_2_3.yaml @@ -294,8 +294,8 @@ tests: PICS: OO.S.A4001 response: constraints: - minValue: 270 - maxValue: 320 + minValue: 255 + maxValue: 345 - label: "9b:Reads OffWaitTime attribute from DUT" command: "readAttribute" @@ -389,8 +389,8 @@ tests: PICS: OO.S.A4001 response: constraints: - minValue: 270 - maxValue: 325 + minValue: 255 + maxValue: 345 - label: "10e:Reads OffWaitTime attribute from DUT" command: "readAttribute" @@ -437,8 +437,8 @@ tests: PICS: OO.S.A4002 response: constraints: - minValue: 270 - maxValue: 320 + minValue: 255 + maxValue: 345 - label: "Wait 10000ms" cluster: "DelayCommands" @@ -480,8 +480,8 @@ tests: PICS: OO.S.A4002 response: constraints: - minValue: 180 - maxValue: 220 + minValue: 170 + maxValue: 230 - label: "Wait 10000ms" cluster: "DelayCommands" @@ -570,8 +570,8 @@ tests: PICS: OO.S.A4002 response: constraints: - minValue: 270 - maxValue: 320 + minValue: 255 + maxValue: 345 - label: "Wait 30000ms" cluster: "DelayCommands" @@ -683,7 +683,9 @@ tests: attribute: "OnTime" PICS: OO.S.A4001 response: - value: 300 + constraints: + minValue: 255 + maxValue: 345 - label: "17c:Reads OffWaitTime attribute from DUT" command: "readAttribute" @@ -743,29 +745,26 @@ tests: - name: "OffWaitTime" value: 300 - # Issue 19159 onOff value mismatch: expected 1 but got 0 - label: "18b:Reads OnOff attribute from DUT" command: "readAttribute" attribute: "OnOff" - PICS: OO.S.A0000 && PICS_SKIP_SAMPLE_APP + PICS: OO.S.A0000 response: value: 1 - # Issue 19159 onTime value mismatch: expected 300 but got 0 - label: "18b:Reads OnTime attribute from DUT" command: "readAttribute" attribute: "OnTime" - PICS: OO.S.A4001 && PICS_SKIP_SAMPLE_APP + PICS: OO.S.A4001 response: constraints: - minValue: 270 - maxValue: 320 + minValue: 255 + maxValue: 345 - # Issue 19159 OffWaitTime value mismatch: expected 300 but got 0 - label: "18b:Reads OffWaitTime attribute from DUT" command: "readAttribute" attribute: "OffWaitTime" - PICS: OO.S.A4002 && PICS_SKIP_SAMPLE_APP + PICS: OO.S.A4002 response: value: 300 @@ -822,8 +821,8 @@ tests: PICS: OO.S.A4001 response: constraints: - minValue: 180 - maxValue: 220 + minValue: 170 + maxValue: 230 - label: "19c:Reads OffWaitTime attribute from DUT" command: "readAttribute" @@ -856,8 +855,8 @@ tests: PICS: OO.S.A4002 response: constraints: - minValue: 270 - maxValue: 320 + minValue: 255 + maxValue: 345 - label: "21a:Sends OnWithTimedOff command to DUT" command: "OnWithTimedOff" @@ -891,8 +890,8 @@ tests: PICS: OO.S.A4002 && PICS_SKIP_SAMPLE_APP response: constraints: - minValue: 180 - maxValue: 220 + minValue: 170 + maxValue: 230 - label: "22a:Send On Command" PICS: OO.S.C01.Rsp @@ -963,8 +962,8 @@ tests: PICS: OO.S.A4002 response: constraints: - minValue: 270 - maxValue: 320 + minValue: 255 + maxValue: 345 - label: "Wait 40000ms" cluster: "DelayCommands" @@ -995,7 +994,7 @@ tests: response: constraints: minValue: 0 - maxValue: 10 + maxValue: 15 - label: "24a:Sends OnWithTimedOff command to DUT" command: "OnWithTimedOff" @@ -1022,8 +1021,8 @@ tests: PICS: OO.S.A4001 response: constraints: - minValue: 270 - maxValue: 320 + minValue: 255 + maxValue: 345 - label: "24b:Reads OffWaitTime attribute from DUT" command: "readAttribute" @@ -1061,7 +1060,7 @@ tests: response: constraints: minValue: 0 - maxValue: 10 + maxValue: 15 - label: "Send Off Command" command: "Off" diff --git a/src/app/tests/suites/certification/Test_TC_OPCREDS_3_3.yaml b/src/app/tests/suites/certification/Test_TC_OPCREDS_3_3.yaml index 1364c831d5edad..1463163543a05d 100644 --- a/src/app/tests/suites/certification/Test_TC_OPCREDS_3_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_OPCREDS_3_3.yaml @@ -24,6 +24,7 @@ tests: - label: "Factory Reset DUT (to ensure NOC list is empty at the beginning of the following steps)" + PICS: MCORE.FACTORY_RESET verification: | On both DUT and TH side sudo rm -rf /tmp/chip_* diff --git a/src/app/tests/suites/certification/Test_TC_PS_1_1.yaml b/src/app/tests/suites/certification/Test_TC_PS_1_1.yaml index efbf0b32677ac1..48832a0e44245a 100644 --- a/src/app/tests/suites/certification/Test_TC_PS_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_PS_1_1.yaml @@ -62,7 +62,7 @@ tests: response: constraints: type: list - contains: [3, 4, 5, 7, 8, 9, 10] + contains: [5] - label: "Read the Feature related(PS.S.F01-BAT) attribute in AttributeList" PICS: PS.S.F01 @@ -71,7 +71,7 @@ tests: response: constraints: type: list - contains: [11, 12, 13, 14, 15, 16, 17, 18] + contains: [14, 15, 16] - label: "Read the Feature related(PS.S.F02-RECHG) attribute in AttributeList" @@ -81,7 +81,7 @@ tests: response: constraints: type: list - contains: [26, 27, 28, 29, 30] + contains: [26, 28] - label: "Read the Feature related(PS.S.F03-REPLC) attribute in AttributeList" @@ -91,7 +91,7 @@ tests: response: constraints: type: list - contains: [19, 20, 21, 22, 23, 24, 25] + contains: [19, 25] - label: "Read the global attribute: AcceptedCommandList" command: "readAttribute" diff --git a/src/app/tests/suites/certification/Test_TC_TSTAT_1_1.yaml b/src/app/tests/suites/certification/Test_TC_TSTAT_1_1.yaml index fc9ef9b9d6ac79..88ca49f5849156 100644 --- a/src/app/tests/suites/certification/Test_TC_TSTAT_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_TSTAT_1_1.yaml @@ -65,7 +65,7 @@ tests: response: constraints: type: list - contains: [5, 6, 7, 17, 23, 24] + contains: [17] - label: "Read the Feature dependent(TSTAT.S.F02(OCC)) attribute in @@ -87,12 +87,12 @@ tests: response: constraints: type: list - contains: [3, 4, 8, 18, 21, 22] + contains: [18] - label: "Read the Feature dependent(TSTAT.S.F01(COOL) & TSTAT.S.F02(OCC)) attribute in AttributeList" - PICS: TSTAT.S.F01 && TSTAT.S.F01 + PICS: TSTAT.S.F01 && TSTAT.S.F02 command: "readAttribute" attribute: "AttributeList" response: @@ -120,7 +120,7 @@ tests: response: constraints: type: list - contains: [25, 30] + contains: [25] - label: "Read the Feature dependent(TSTAT.S.F03(SCH)) attribute in diff --git a/src/app/tests/suites/certification/ci-pics-values b/src/app/tests/suites/certification/ci-pics-values index 5ceff16ef6679b..4460c54a835fa0 100644 --- a/src/app/tests/suites/certification/ci-pics-values +++ b/src/app/tests/suites/certification/ci-pics-values @@ -322,9 +322,10 @@ CHANNEL.S.LI=1 CHANNEL.S.A0000=1 CHANNEL.S.A0001=1 CHANNEL.S.A0002=1 -CHANNEL.S.C0000=1 -CHANNEL.S.C0002=1 -CHANNEL.S.C0003=1 +CHANNEL.S.C00.Rsp=1 +CHANNEL.S.C02.Rsp=1 +CHANNEL.S.C03.Rsp=1 +CHANNEL.S.C01.Tx=1 MEDIAPLAYBACK.S.A0000=1 MEDIAPLAYBACK.S.A0001=1 @@ -337,14 +338,15 @@ MEDIAPLAYBACK.S.A0006=1 MEDIAPLAYBACK.S.C0000=1 MEDIAPLAYBACK.S.C0001=1 MEDIAPLAYBACK.S.C0002=1 -MEDIAPLAYBACK.S.C0003=1 -MEDIAPLAYBACK.S.C0004=1 -MEDIAPLAYBACK.S.C0005=1 -MEDIAPLAYBACK.S.C0006=1 -MEDIAPLAYBACK.S.C0007=1 -MEDIAPLAYBACK.S.C0008=1 -MEDIAPLAYBACK.S.C0009=1 -MEDIAPLAYBACK.S.C000B=1 +MEDIAPLAYBACK.S.C03.Rsp=1 +MEDIAPLAYBACK.S.C04.Rsp=1 +MEDIAPLAYBACK.S.C05.Rsp=1 +MEDIAPLAYBACK.S.C06.Rsp=1 +MEDIAPLAYBACK.S.C07.Rsp=1 +MEDIAPLAYBACK.S.C08.Rsp=1 +MEDIAPLAYBACK.S.C09.Rsp=1 +MEDIAPLAYBACK.S.C0B.Rsp=1 + MEDIAPLAYBACK.C.C0000=1 MEDIAPLAYBACK.C.C0001=1 @@ -583,17 +585,19 @@ PICS_MF=1 PICS_MF_BCM=1 CADMIN.UserInterfaceDisplay=1 CADMIN.AudioInterface=1 -CADMIN.S.C0000=1 -CADMIN.S.C0001=1 -CADMIN.S.C0002=1 +CADMIN.S.C00.Rsp=1 +CADMIN.S.C01.Rsp=1 +CADMIN.S.C02.Rsp=1 OPCREDS.S.C0a.Rsp=1 OPCREDS.S.A0001=1 BINFO.S.A0005=1 CADMIN.S.A0000=1 -CADMIN.C.C0000=1 -CADMIN.C.C0001=1 -CADMIN.C.C0002=1 +CADMIN.C.C00.Tx=1 +CADMIN.C.C01.Tx=1 +CADMIN.C.C02.Tx=1 CADMIN.C.A0000=1 +CADMIN.S=1 +CADMIN.C=1 OPCREDS.C.C0a.Tx=1 OPCREDS.C.A0001=1 BINFO.C.A0005=1 @@ -741,7 +745,7 @@ GRPKEY.C.C00.Tx=1 G.C.C00.Tx=1 #Device Discovery -MCORE.DD.DT_SOFTAP=0 +MCORE.DD.DISCOVERY_SOFTAP=0 MCORE.DD.WIFI=0 MCORE.DD.BLE=1 MCORE.DD.CHIP_DEV=1 @@ -763,7 +767,7 @@ MCORE.DD.COMMISSIONER=1 MCORE.DD.CUSTOM_COMM_FLOW=1 MCORE.DD.DT_BLE=1 MCORE.DD.CONTROLLER=1 -MCORE.DD.DT_IP=1 +MCORE.DD.DISCOVERY_IP=1 MCORE.DD.STANDARD_COMM_FLOW=1 MCORE.DD.USER_INTENT_COMM_FLOW=1 MCORE.DD.CUSTOM_COMM_FLOW=1 @@ -774,6 +778,9 @@ MCORE.DD.SCAN_NFC=1 MCORE.DD.SCAN_QR_CODE=1 MCORE.DD.THREAD=1 MCORE.DD.WIRELESS=1 +MCORE.DD.TXT_KEY_VP=1 +MCORE.DD.TXT_KEY_DT=1 +MCORE.DD.DISCOVERY_BLE=1 #Ethernet Network Diagnostics Cluster DGETH.S.C00.Rsp=1 @@ -1284,6 +1291,7 @@ CNET.C.C08.Tx=1 #Node Operational Credential #Server Attributes +MCORE.FACTORY_RESET=1 OPCREDS.S.A0000=1 OPCREDS.S.A0001=1 OPCREDS.S.A0002=1 diff --git a/src/app/tests/suites/tests.js b/src/app/tests/suites/tests.js index cacacfc207b398..edcb79614284c5 100644 --- a/src/app/tests/suites/tests.js +++ b/src/app/tests/suites/tests.js @@ -63,6 +63,7 @@ function getManualTests() { "Test_TC_DD_3_18", "Test_TC_DD_3_19", "Test_TC_DD_3_20", + "Test_TC_DD_3_21", ]; const Groups = [ @@ -372,6 +373,8 @@ function getManualTests() { "Test_TC_CC_7_5", "Test_TC_CC_9_4", // Slow tests that should not run in CI because they take many minutes each + "Test_TC_CC_3_1", + "Test_TC_CC_7_1", "Test_TC_CC_9_1", "Test_TC_CC_9_2", "Test_TC_CC_9_3", @@ -579,7 +582,6 @@ function getTests() { const ColorControl = [ "Test_TC_CC_1_1", "Test_TC_CC_2_1", - "Test_TC_CC_3_1", "Test_TC_CC_3_2", "Test_TC_CC_3_3", "Test_TC_CC_4_1", @@ -592,7 +594,6 @@ function getTests() { "Test_TC_CC_6_1", "Test_TC_CC_6_2", "Test_TC_CC_6_3", - "Test_TC_CC_7_1", "Test_TC_CC_7_2", "Test_TC_CC_7_3", "Test_TC_CC_7_4", diff --git a/zzz_generated/chip-tool/zap-generated/test/Commands.h b/zzz_generated/chip-tool/zap-generated/test/Commands.h index c6e69f87e5b770..084f5b14dfd7d7 100644 --- a/zzz_generated/chip-tool/zap-generated/test/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/test/Commands.h @@ -40,7 +40,6 @@ class TestList : public Command printf("Test_TC_ACT_1_1\n"); printf("Test_TC_CC_1_1\n"); printf("Test_TC_CC_2_1\n"); - printf("Test_TC_CC_3_1\n"); printf("Test_TC_CC_3_2\n"); printf("Test_TC_CC_3_3\n"); printf("Test_TC_CC_4_1\n"); @@ -53,7 +52,6 @@ class TestList : public Command printf("Test_TC_CC_6_1\n"); printf("Test_TC_CC_6_2\n"); printf("Test_TC_CC_6_3\n"); - printf("Test_TC_CC_7_1\n"); printf("Test_TC_CC_7_2\n"); printf("Test_TC_CC_7_3\n"); printf("Test_TC_CC_7_4\n"); @@ -271,6 +269,7 @@ class ManualTestList : public Command printf("Test_TC_DD_3_18\n"); printf("Test_TC_DD_3_19\n"); printf("Test_TC_DD_3_20\n"); + printf("Test_TC_DD_3_21\n"); printf("TestGroupDemoCommand\n"); printf("TestGroupDemoConfig\n"); printf("Test_TC_G_1_1\n"); @@ -494,6 +493,8 @@ class ManualTestList : public Command printf("Test_TC_CC_6_4\n"); printf("Test_TC_CC_7_5\n"); printf("Test_TC_CC_9_4\n"); + printf("Test_TC_CC_3_1\n"); + printf("Test_TC_CC_7_1\n"); printf("Test_TC_CC_9_1\n"); printf("Test_TC_CC_9_2\n"); printf("Test_TC_CC_9_3\n"); @@ -2298,7 +2299,7 @@ class Test_TC_ACT_1_1Suite : public TestCommand class Test_TC_CC_1_1Suite : public TestCommand { public: - Test_TC_CC_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_1_1", 15, credsIssuerConfig) + Test_TC_CC_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_1_1", 7, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -2372,85 +2373,6 @@ class Test_TC_CC_1_1Suite : public TestCommand } break; case 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::DecodableList value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); - } - break; - case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::DecodableList value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 4UL)); - } - break; - case 6: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::DecodableList value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 7UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 16395UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 16396UL)); - } - break; - case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::DecodableList value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 16397UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 16400UL)); - } - break; - case 8: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::DecodableList value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 16384UL)); - } - break; - case 9: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::DecodableList value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 16386UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 16387UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 16388UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 16389UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 16390UL)); - } - break; - case 10: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::DecodableList value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "list")); - } - break; - case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::DecodableList value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "list")); - } - break; - case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -2458,7 +2380,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "", "list")); } break; - case 13: + case 5: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -2470,7 +2392,7 @@ class Test_TC_CC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "", "list")); } break; - case 14: + case 6: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; @@ -2514,65 +2436,17 @@ class Test_TC_CC_1_1Suite : public TestCommand true, chip::NullOptional); } case 4: { - LogStep(4, "Read the feature dependent attribute(CC.S.F00) in AttributeList"); - VerifyOrDo(!ShouldSkip("CC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AttributeList::Id, - true, chip::NullOptional); - } - case 5: { - LogStep(5, "Read the feature dependent attribute(CC.S.F03) in AttributeList"); - VerifyOrDo(!ShouldSkip("CC.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AttributeList::Id, - true, chip::NullOptional); - } - case 6: { - LogStep(6, "Read the feature dependent attribute(CC.S.F04) in AttributeList"); - VerifyOrDo(!ShouldSkip("CC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AttributeList::Id, - true, chip::NullOptional); - } - case 7: { - LogStep(7, "Read the feature dependent attribute(CC.S.F04) or ColorTemperatureMireds in AttributeList"); - VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A4010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AttributeList::Id, - true, chip::NullOptional); - } - case 8: { - LogStep(8, "Read the feature dependent attribute(CC.S.F01) in AttributeList"); - VerifyOrDo(!ShouldSkip("CC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AttributeList::Id, - true, chip::NullOptional); - } - case 9: { - LogStep(9, "Read the feature dependent attribute(CC.S.F02) in AttributeList"); - VerifyOrDo(!ShouldSkip("CC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AttributeList::Id, - true, chip::NullOptional); - } - case 10: { - LogStep(10, "Read the feature dependent attribute(CC.S.F00) in AttributeList"); - VerifyOrDo(!ShouldSkip("CC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AttributeList::Id, - true, chip::NullOptional); - } - case 11: { - LogStep(11, "Read the feature dependent attribute(CC.S.F00) in AttributeList"); - VerifyOrDo(!ShouldSkip("CC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AttributeList::Id, - true, chip::NullOptional); - } - case 12: { - LogStep(12, "Read the global attribute: AcceptedCommandList"); + LogStep(4, "Read the global attribute: AcceptedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 13: { - LogStep(13, "Read the global attribute: GeneratedCommandList"); + case 5: { + LogStep(5, "Read the global attribute: GeneratedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); } - case 14: { - LogStep(14, + case 6: { + LogStep(6, "Read EventList attribute from the DUT and Verify that the DUT response provides a list of supported events."); VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; @@ -2869,183 +2743,75 @@ class Test_TC_CC_2_1Suite : public TestCommand break; case 25: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); - } + shouldContinue = true; break; case 26: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); - } + shouldContinue = true; break; case 27: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::Nullable value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U)); - } + shouldContinue = true; break; case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); - } + shouldContinue = true; break; case 29: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); - } + shouldContinue = true; break; case 30: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::Nullable value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U)); - } + shouldContinue = true; break; case 31: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); - } + shouldContinue = true; break; case 32: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); - } + shouldContinue = true; break; case 33: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::Nullable value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U)); - } + shouldContinue = true; break; case 34: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); - } + shouldContinue = true; break; case 35: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); - } + shouldContinue = true; break; case 36: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::Nullable value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U)); - } + shouldContinue = true; break; case 37: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); - } + shouldContinue = true; break; case 38: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); - } + shouldContinue = true; break; case 39: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::Nullable value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U)); - } + shouldContinue = true; break; case 40: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); - } + shouldContinue = true; break; case 41: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); - } + shouldContinue = true; break; case 42: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::Nullable value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U)); - } + shouldContinue = true; break; case 43: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); @@ -3181,13 +2947,13 @@ class Test_TC_CC_2_1Suite : public TestCommand } case 1: { LogStep(1, "TH reads CurrentHue attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0000 && CC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, chip::NullOptional); } case 2: { LogStep(2, "TH reads CurrentSaturation attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0001 && CC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); } @@ -3199,13 +2965,13 @@ class Test_TC_CC_2_1Suite : public TestCommand } case 4: { LogStep(4, "TH reads CurrentX attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0003 && CC.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id, true, chip::NullOptional); } case 5: { LogStep(5, "TH reads CurrentY attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0004 && CC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id, true, chip::NullOptional); } @@ -3223,7 +2989,7 @@ class Test_TC_CC_2_1Suite : public TestCommand } case 8: { LogStep(8, "TH reads ColorTemperatureMireds attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0007 && CC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, true, chip::NullOptional); } @@ -3241,43 +3007,43 @@ class Test_TC_CC_2_1Suite : public TestCommand } case 11: { LogStep(11, "TH reads EnhancedCurrentHue attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A4000 && CC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, true, chip::NullOptional); } case 12: { LogStep(12, "TH reads EnhancedColorMode attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.F02 && CC.S.A4001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedColorMode::Id, true, chip::NullOptional); } case 13: { LogStep(13, "TH reads ColorLoopActive attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A4002 && CC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.A4002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopActive::Id, true, chip::NullOptional); } case 14: { LogStep(14, "TH reads ColorLoopDirection attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A4003 && CC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.A4003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopDirection::Id, true, chip::NullOptional); } case 15: { LogStep(15, "TH reads ColorLoopTime attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A4004 && CC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.A4004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopTime::Id, true, chip::NullOptional); } case 16: { LogStep(16, "TH reads ColorLoopStartEnhancedHue attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A4005 && CC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.A4005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopStartEnhancedHue::Id, true, chip::NullOptional); } case 17: { LogStep(17, "TH reads ColorLoopStoredEnhancedHue attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A4006 && CC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.A4006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopStoredEnhancedHue::Id, true, chip::NullOptional); } @@ -3294,25 +3060,25 @@ class Test_TC_CC_2_1Suite : public TestCommand } case 20: { LogStep(20, "TH reads ColorTempPhysicalMinMireds attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A400b && CC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.A400b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTempPhysicalMinMireds::Id, true, chip::NullOptional); } case 21: { LogStep(21, "TH reads ColorTempPhysicalMaxMireds attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A400c && CC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.A400c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTempPhysicalMaxMireds::Id, true, chip::NullOptional); } case 22: { LogStep(22, "TH reads CoupleColorTempToLevelMinMireds attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A400d && CC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.A400d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CoupleColorTempToLevelMinMireds::Id, true, chip::NullOptional); } case 23: { LogStep(23, "TH reads StartUpColorTemperatureMireds attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A4010 && CC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.A4010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::StartUpColorTemperatureMireds::Id, true, chip::NullOptional); } @@ -3323,112 +3089,220 @@ class Test_TC_CC_2_1Suite : public TestCommand true, chip::NullOptional); } case 25: { - LogStep(25, "TH reads Primary1X attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary1X::Id, true, - chip::NullOptional); + LogStep(25, + "TH reads Primary1X attribute from DUT and Verify that the DUT response contains an uint16 [Min:0 Max:0xfeff] " + "if NumberOfPrimaries is 1 or more"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && CC.S.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); } case 26: { - LogStep(26, "TH reads Primary1Y attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary1Y::Id, true, - chip::NullOptional); + LogStep(26, + "TH reads Primary1Y attribute from DUT and Verify that the DUT response contains an uint16 [Min:0 Max:0xfeff] " + "if NumberOfPrimaries is 1 or more"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && CC.S.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); } case 27: { - LogStep(27, "TH reads Primary1Intensity attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary1Intensity::Id, - true, chip::NullOptional); + LogStep(27, + "TH reads Primary1Intensity attribute from DUT and Verify that the DUT response contains an uint8 if " + "NumberOfPrimaries is 1 or more"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && CC.S.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); } case 28: { - LogStep(28, "TH reads Primary2X attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary2X::Id, true, - chip::NullOptional); + LogStep(28, + "TH reads Primary2X attribute from DUT and Verify that the DUT response contains an uint16 [Min:0 Max:0xfeff] " + "if NumberOfPrimaries is 2 or more"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && CC.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); } case 29: { - LogStep(29, "TH reads Primary2Y attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary2Y::Id, true, - chip::NullOptional); + LogStep(29, + "TH reads Primary2Y attribute from DUT and Verify that the DUT response contains an uint16 [Min:0 Max:0xfeff] " + "if NumberOfPrimaries is 2 or more"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && CC.S.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); } case 30: { - LogStep(30, "TH reads Primary2Intensity attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary2Intensity::Id, - true, chip::NullOptional); + LogStep(30, + "TH reads Primary2Intensity attribute from DUT and Verify that the DUT response contains an uint8 if " + "NumberOfPrimaries is 2 or more"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && CC.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); } case 31: { - LogStep(31, "TH reads Primary3X attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0019"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary3X::Id, true, - chip::NullOptional); + LogStep(31, + "TH reads Primary3X attribute from DUT and Verify that the DUT response contains an uint16 [Min:0 Max:0xfeff] " + "if NumberOfPrimaries is 3 or more"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && CC.S.A0019"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); } case 32: { - LogStep(32, "TH reads Primary3Y attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A001a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary3Y::Id, true, - chip::NullOptional); + LogStep(32, + "TH reads Primary3Y attribute from DUT and Verify that the DUT response contains an uint16 [Min:0 Max:0xfeff] " + "if NumberOfPrimaries is 3 or more"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && CC.S.A001a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); } case 33: { - LogStep(33, "TH reads Primary3Intensity attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A001b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary3Intensity::Id, - true, chip::NullOptional); + LogStep(33, + "TH reads Primary3Intensity attribute from DUT and Verify that the DUT response contains an uint8 if " + "NumberOfPrimaries is 3 or more"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && CC.S.A001b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); } case 34: { - LogStep(34, "TH reads Primary4X attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0020"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary4X::Id, true, - chip::NullOptional); + LogStep(34, + "TH reads Primary4X attribute from DUT Verify that the DUT response contains an uint16 [Min:0 Max:0xfeff] if " + "NumberOfPrimaries is 4 or more"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && CC.S.A0020"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); } case 35: { - LogStep(35, "TH reads Primary4Y attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0021"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary4Y::Id, true, - chip::NullOptional); + LogStep(35, + "TH reads Primary4Y attribute from DUT and Verify that the DUT response contains an uint16 [Min:0 Max:0xfeff] " + "if NumberOfPrimaries is 4 or more"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && CC.S.A0021"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); } case 36: { - LogStep(36, "TH reads Primary4Intensity attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0022"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary4Intensity::Id, - true, chip::NullOptional); + LogStep(36, + "TH reads Primary4Intensity attribute from DUT and Verify that the DUT response contains an uint8 if " + "NumberOfPrimaries is 4 or more"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && CC.S.A0022"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); } case 37: { - LogStep(37, "TH reads Primary5X attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0024"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary5X::Id, true, - chip::NullOptional); + LogStep(37, + "TH reads Primary5X attribute from DUT and Verify that the DUT response contains an uint16 [Min:0 Max:0xfeff] " + "if NumberOfPrimaries is 5 or more"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && CC.S.A0024"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); } case 38: { - LogStep(38, "TH reads Primary5Y attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0025"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary5Y::Id, true, - chip::NullOptional); + LogStep(38, + "TH reads Primary5Y attribute from DUT and Verify that the DUT response contains an uint16 [Min:0 Max:0xfeff] " + "if NumberOfPrimaries is 5 or more"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && CC.S.A0025"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); } case 39: { - LogStep(39, "TH reads Primary5Intensity attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0026"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary5Intensity::Id, - true, chip::NullOptional); + LogStep(39, + "TH reads Primary5Intensity attribute from DUT and Verify that the DUT response contains an uint8 if " + "NumberOfPrimaries is 5 or more"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && CC.S.A0026"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); } case 40: { - LogStep(40, "TH reads Primary6X attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0028"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary6X::Id, true, - chip::NullOptional); + LogStep(40, + "TH reads Primary6X attribute from DUT and Verify that the DUT response contains an uint16 [Min:0 Max:0xfeff] " + "if NumberOfPrimaries is 6 or more"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && CC.S.A0028"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); } case 41: { - LogStep(41, "TH reads Primary6Y attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0029"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary6Y::Id, true, - chip::NullOptional); + LogStep(41, + "TH reads Primary6Y attribute from DUT and Verify that the DUT response contains an uint16 [Min:0 Max:0xfeff] " + "if NumberOfPrimaries is 6 or more"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && CC.S.A0029"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); } case 42: { - LogStep(42, "TH reads Primary6Intensity attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A002a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary6Intensity::Id, - true, chip::NullOptional); + LogStep(42, + "TH reads Primary6Intensity attribute from DUT and Verify that the DUT response contains an uint8 if " + "NumberOfPrimaries is 6 or more"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && CC.S.A002a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); } case 43: { LogStep(43, "TH reads WhitePointX attribute from DUT"); @@ -3501,10 +3375,10 @@ class Test_TC_CC_2_1Suite : public TestCommand } }; -class Test_TC_CC_3_1Suite : public TestCommand +class Test_TC_CC_3_2Suite : public TestCommand { public: - Test_TC_CC_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_3_1", 34, credsIssuerConfig) + Test_TC_CC_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_3_2", 30, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -3512,7 +3386,7 @@ class Test_TC_CC_3_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CC_3_1Suite() {} + ~Test_TC_CC_3_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -3525,6 +3399,9 @@ class Test_TC_CC_3_1Suite : public TestCommand chip::Optional mEndpoint; chip::Optional mTimeout; + uint8_t CurrentHueValue; + uint8_t CurrentHueValueAfterStopmode; + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } // @@ -3622,6 +3499,7 @@ class Test_TC_CC_3_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "", "uint8")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); + CurrentHueValue = value; } break; case 14: @@ -3633,16 +3511,17 @@ class Test_TC_CC_3_1Suite : public TestCommand { uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); + VerifyOrReturn(CheckValue("currentHue", value, CurrentHueValue)); } break; case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; break; case 17: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -3652,9 +3531,6 @@ class Test_TC_CC_3_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); } break; - case 18: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; @@ -3685,9 +3561,12 @@ class Test_TC_CC_3_1Suite : public TestCommand break; case 23: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; break; case 24: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 25: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -3695,11 +3574,9 @@ class Test_TC_CC_3_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "", "uint8")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); + CurrentHueValueAfterStopmode = value; } break; - case 25: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; case 26: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; @@ -3709,43 +3586,13 @@ class Test_TC_CC_3_1Suite : public TestCommand { uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); + VerifyOrReturn(CheckValue("currentHue", value, CurrentHueValueAfterStopmode)); } break; case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; break; case 29: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); - } - break; - case 30: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 31: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); - } - break; - case 32: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 33: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { bool value; @@ -3789,236 +3636,206 @@ class Test_TC_CC_3_1Suite : public TestCommand } case 3: { LogStep(3, "Reads CurrentHue attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, chip::NullOptional); } case 4: { - LogStep(4, "Move to hue shortest distance command"); - VerifyOrDo(!ShouldSkip("CC.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(4, "Move hue up command"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; - chip::app::Clusters::ColorControl::Commands::MoveToHue::Type value; - value.hue = 150U; - value.direction = static_cast(0); - value.transitionTime = 300U; + chip::app::Clusters::ColorControl::Commands::MoveHue::Type value; + value.moveMode = static_cast(1); + value.rate = 50U; value.optionsMask = 0U; value.optionsOverride = 0U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToHue::Id, value, + return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveHue::Id, value, chip::NullOptional ); } case 5: { - LogStep(5, "Wait 290ms"); + LogStep(5, "Wait 3000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 290UL; + value.ms = 3000UL; return WaitForMs(kIdentityAlpha, value); } case 6: { LogStep(6, "Check current hue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, chip::NullOptional); } case 7: { - LogStep(7, "Wait 295ms"); + LogStep(7, "Wait 2000"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 295UL; + value.ms = 2000UL; return WaitForMs(kIdentityAlpha, value); } case 8: { LogStep(8, "Check current hue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, chip::NullOptional); } case 9: { - LogStep(9, "Wait 300ms"); + LogStep(9, "Wait 3000"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 300UL; + value.ms = 3000UL; return WaitForMs(kIdentityAlpha, value); } case 10: { LogStep(10, "Check current hue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, chip::NullOptional); } case 11: { - LogStep(11, "Move to hue longest distance command"); - VerifyOrDo(!ShouldSkip("CC.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(11, "Move hue stop command"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; - chip::app::Clusters::ColorControl::Commands::MoveToHue::Type value; - value.hue = 200U; - value.direction = static_cast(1); - value.transitionTime = 300U; + chip::app::Clusters::ColorControl::Commands::MoveHue::Type value; + value.moveMode = static_cast(0); + value.rate = 50U; value.optionsMask = 0U; value.optionsOverride = 0U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToHue::Id, value, + return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveHue::Id, value, chip::NullOptional ); } case 12: { - LogStep(12, "Wait 290ms"); + LogStep(12, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 290UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } case 13: { LogStep(13, "Check current hue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, chip::NullOptional); } case 14: { - LogStep(14, "Wait 295ms"); + LogStep(14, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 295UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } case 15: { LogStep(15, "Check current hue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, chip::NullOptional); } case 16: { - LogStep(16, "Wait 300ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 300UL; - return WaitForMs(kIdentityAlpha, value); - } - case 17: { - LogStep(17, "Check current hue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, - chip::NullOptional); - } - case 18: { - LogStep(18, "Move to hue up command"); - VerifyOrDo(!ShouldSkip("CC.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(16, "Move hue down command"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; - chip::app::Clusters::ColorControl::Commands::MoveToHue::Type value; - value.hue = 250U; - value.direction = static_cast(2); - value.transitionTime = 300U; + chip::app::Clusters::ColorControl::Commands::MoveHue::Type value; + value.moveMode = static_cast(3); + value.rate = 50U; value.optionsMask = 0U; value.optionsOverride = 0U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToHue::Id, value, + return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveHue::Id, value, chip::NullOptional ); } - case 19: { - LogStep(19, "Wait 290ms"); + case 17: { + LogStep(17, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 290UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } - case 20: { - LogStep(20, "Check current hue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 18: { + LogStep(18, "Check current hue attribute value matched the value sent by the last command"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, chip::NullOptional); } - case 21: { - LogStep(21, "Wait 295ms"); + case 19: { + LogStep(19, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 295UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } - case 22: { - LogStep(22, "Check current hue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 20: { + LogStep(20, "Check current hue attribute value matched the value sent by the last command"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, chip::NullOptional); } - case 23: { - LogStep(23, "Wait 300ms"); + case 21: { + LogStep(21, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 300UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } - case 24: { - LogStep(24, "Check current hue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 22: { + LogStep(22, "Check current hue attribute value matched the value sent by the last command"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, chip::NullOptional); } - case 25: { - LogStep(25, "Move to hue down command"); - VerifyOrDo(!ShouldSkip("CC.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 23: { + LogStep(23, "Move hue stop command"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; - chip::app::Clusters::ColorControl::Commands::MoveToHue::Type value; - value.hue = 225U; - value.direction = static_cast(3); - value.transitionTime = 300U; + chip::app::Clusters::ColorControl::Commands::MoveHue::Type value; + value.moveMode = static_cast(0); + value.rate = 50U; value.optionsMask = 0U; value.optionsOverride = 0U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToHue::Id, value, + return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveHue::Id, value, chip::NullOptional ); } - case 26: { - LogStep(26, "Wait 290ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 290UL; - return WaitForMs(kIdentityAlpha, value); - } - case 27: { - LogStep(27, "Check current hue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, - chip::NullOptional); - } - case 28: { - LogStep(28, "Wait 295ms"); + case 24: { + LogStep(24, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 295UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } - case 29: { - LogStep(29, "Check current hue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 25: { + LogStep(25, "Check current hue attribute value matched the value sent by the last command"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, chip::NullOptional); } - case 30: { - LogStep(30, "Wait 300ms"); + case 26: { + LogStep(26, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 300UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } - case 31: { - LogStep(31, "Check current hue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 27: { + LogStep(27, "Check current hue attribute value matched the value sent by the last command"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, chip::NullOptional); } - case 32: { - LogStep(32, "Turn off light that we turned on"); + case 28: { + LogStep(28, "Turn off light that we turned on"); ListFreer listFreer; chip::app::Clusters::OnOff::Commands::Off::Type value; return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::Off::Id, value, chip::NullOptional ); } - case 33: { - LogStep(33, "Check on/off attribute value is false after off command"); + case 29: { + LogStep(29, "Check on/off attribute value is false after off command"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } } @@ -4026,10 +3843,10 @@ class Test_TC_CC_3_1Suite : public TestCommand } }; -class Test_TC_CC_3_2Suite : public TestCommand +class Test_TC_CC_3_3Suite : public TestCommand { public: - Test_TC_CC_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_3_2", 34, credsIssuerConfig) + Test_TC_CC_3_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_3_3", 12, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -4037,528 +3854,7 @@ class Test_TC_CC_3_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CC_3_2Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - case 0: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 1: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 2: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - bool value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("onOff", value, 1)); - } - break; - case 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); - } - break; - case 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 6: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); - } - break; - case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 8: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); - } - break; - case 9: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 10: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); - } - break; - case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 12: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 13: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); - } - break; - case 14: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 15: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); - } - break; - case 16: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 17: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); - } - break; - case 18: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 19: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 20: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); - } - break; - case 21: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 22: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); - } - break; - case 23: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 24: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); - } - break; - case 25: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 26: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 27: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); - } - break; - case 28: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 29: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); - } - break; - case 30: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 31: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); - } - break; - case 32: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 33: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - bool value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("onOff", value, 0)); - } - break; - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - { - case 0: { - LogStep(0, "Wait for the commissioned device to be retrieved"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; - value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; - return WaitForCommissionee(kIdentityAlpha, value); - } - case 1: { - LogStep(1, "Turn on light for color control tests"); - ListFreer listFreer; - chip::app::Clusters::OnOff::Commands::On::Type value; - return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id, value, chip::NullOptional - - ); - } - case 2: { - LogStep(2, "Check on/off attribute value is true after on command"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); - } - case 3: { - LogStep(3, "Reads CurrentHue attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, - chip::NullOptional); - } - case 4: { - LogStep(4, "Move hue up command"); - VerifyOrDo(!ShouldSkip("CC.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::ColorControl::Commands::MoveHue::Type value; - value.moveMode = static_cast(1); - value.rate = 50U; - value.optionsMask = 0U; - value.optionsOverride = 0U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveHue::Id, value, - chip::NullOptional - - ); - } - case 5: { - LogStep(5, "Wait 140ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 140UL; - return WaitForMs(kIdentityAlpha, value); - } - case 6: { - LogStep(6, "Check current hue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, - chip::NullOptional); - } - case 7: { - LogStep(7, "Wait 145ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 145UL; - return WaitForMs(kIdentityAlpha, value); - } - case 8: { - LogStep(8, "Check current hue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, - chip::NullOptional); - } - case 9: { - LogStep(9, "Wait 150ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 150UL; - return WaitForMs(kIdentityAlpha, value); - } - case 10: { - LogStep(10, "Check current hue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, - chip::NullOptional); - } - case 11: { - LogStep(11, "Move hue stop command"); - VerifyOrDo(!ShouldSkip("CC.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::ColorControl::Commands::MoveHue::Type value; - value.moveMode = static_cast(0); - value.rate = 50U; - value.optionsMask = 0U; - value.optionsOverride = 0U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveHue::Id, value, - chip::NullOptional - - ); - } - case 12: { - LogStep(12, "Wait 140ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 140UL; - return WaitForMs(kIdentityAlpha, value); - } - case 13: { - LogStep(13, "Check current hue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, - chip::NullOptional); - } - case 14: { - LogStep(14, "Wait 145ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 145UL; - return WaitForMs(kIdentityAlpha, value); - } - case 15: { - LogStep(15, "Check current hue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, - chip::NullOptional); - } - case 16: { - LogStep(16, "Wait 150ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 150UL; - return WaitForMs(kIdentityAlpha, value); - } - case 17: { - LogStep(17, "Check current hue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, - chip::NullOptional); - } - case 18: { - LogStep(18, "Move hue down command"); - VerifyOrDo(!ShouldSkip("CC.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::ColorControl::Commands::MoveHue::Type value; - value.moveMode = static_cast(3); - value.rate = 50U; - value.optionsMask = 0U; - value.optionsOverride = 0U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveHue::Id, value, - chip::NullOptional - - ); - } - case 19: { - LogStep(19, "Wait 140ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 140UL; - return WaitForMs(kIdentityAlpha, value); - } - case 20: { - LogStep(20, "Check current hue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, - chip::NullOptional); - } - case 21: { - LogStep(21, "Wait 145ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 145UL; - return WaitForMs(kIdentityAlpha, value); - } - case 22: { - LogStep(22, "Check current hue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, - chip::NullOptional); - } - case 23: { - LogStep(23, "Wait 150ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 150UL; - return WaitForMs(kIdentityAlpha, value); - } - case 24: { - LogStep(24, "Check current hue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, - chip::NullOptional); - } - case 25: { - LogStep(25, "Move hue stop command"); - VerifyOrDo(!ShouldSkip("CC.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::ColorControl::Commands::MoveHue::Type value; - value.moveMode = static_cast(0); - value.rate = 50U; - value.optionsMask = 0U; - value.optionsOverride = 0U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveHue::Id, value, - chip::NullOptional - - ); - } - case 26: { - LogStep(26, "Wait 140ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 140UL; - return WaitForMs(kIdentityAlpha, value); - } - case 27: { - LogStep(27, "Check current hue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, - chip::NullOptional); - } - case 28: { - LogStep(28, "Wait 145ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 145UL; - return WaitForMs(kIdentityAlpha, value); - } - case 29: { - LogStep(29, "Check current hue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, - chip::NullOptional); - } - case 30: { - LogStep(30, "Wait 150ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 150UL; - return WaitForMs(kIdentityAlpha, value); - } - case 31: { - LogStep(31, "Check current hue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, - chip::NullOptional); - } - case 32: { - LogStep(32, "Turn off light that we turned on"); - ListFreer listFreer; - chip::app::Clusters::OnOff::Commands::Off::Type value; - return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::Off::Id, value, chip::NullOptional - - ); - } - case 33: { - LogStep(33, "Check on/off attribute value is false after off command"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_CC_3_3Suite : public TestCommand -{ -public: - Test_TC_CC_3_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_3_3", 12, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_CC_3_3Suite() {} + ~Test_TC_CC_3_3Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -4689,13 +3985,13 @@ class Test_TC_CC_3_3Suite : public TestCommand } case 3: { LogStep(3, "Reads CurrentHue attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, chip::NullOptional); } case 4: { LogStep(4, "Step hue up command"); - VerifyOrDo(!ShouldSkip("CC.S.C02.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.C02.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::StepHue::Type value; value.stepMode = static_cast(1); @@ -4717,13 +4013,13 @@ class Test_TC_CC_3_3Suite : public TestCommand } case 6: { LogStep(6, "Over TransitionTime,Read CurrentHue attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, chip::NullOptional); } case 7: { LogStep(7, "Step hue down command"); - VerifyOrDo(!ShouldSkip("CC.S.C02.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.C02.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::StepHue::Type value; value.stepMode = static_cast(3); @@ -4745,7 +4041,7 @@ class Test_TC_CC_3_3Suite : public TestCommand } case 9: { LogStep(9, "Over TransitionTime,Read CurrentHue attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, chip::NullOptional); } @@ -4867,9 +4163,7 @@ class Test_TC_CC_4_1Suite : public TestCommand { uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); + VerifyOrReturn(CheckValue("currentSaturation", value, 90U)); } break; case 11: @@ -4919,17 +4213,17 @@ class Test_TC_CC_4_1Suite : public TestCommand } case 3: { LogStep(3, "Check Saturation attribute value matched before any change"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); } case 4: { LogStep(4, "Move to saturation command"); - VerifyOrDo(!ShouldSkip("CC.S.C03.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.C03.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::MoveToSaturation::Type value; value.saturation = 90U; - value.transitionTime = 10U; + value.transitionTime = 15U; value.optionsMask = 0U; value.optionsOverride = 0U; return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToSaturation::Id, @@ -4938,41 +4232,41 @@ class Test_TC_CC_4_1Suite : public TestCommand ); } case 5: { - LogStep(5, "Wait 6ms"); + LogStep(5, "Wait 500ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 6UL; + value.ms = 500UL; return WaitForMs(kIdentityAlpha, value); } case 6: { LogStep(6, "Check current saturation attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); } case 7: { - LogStep(7, "Wait 8ms"); + LogStep(7, "Wait 500ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 8UL; + value.ms = 500UL; return WaitForMs(kIdentityAlpha, value); } case 8: { LogStep(8, "Check current saturation attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); } case 9: { - LogStep(9, "Wait 10ms"); + LogStep(9, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 10UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } case 10: { LogStep(10, "Check current saturation attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); } @@ -4996,7 +4290,7 @@ class Test_TC_CC_4_1Suite : public TestCommand class Test_TC_CC_4_2Suite : public TestCommand { public: - Test_TC_CC_4_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_4_2", 48, credsIssuerConfig) + Test_TC_CC_4_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_4_2", 38, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -5017,6 +4311,10 @@ class Test_TC_CC_4_2Suite : public TestCommand chip::Optional mEndpoint; chip::Optional mTimeout; + uint8_t CurrentSaturationStep4d; + uint8_t CurrentSaturationStep5b; + uint8_t CurrentSaturationStep5d; + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } // @@ -5163,54 +4461,12 @@ class Test_TC_CC_4_2Suite : public TestCommand break; case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; break; case 22: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); - } - break; - case 23: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 24: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); - } - break; - case 25: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 26: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 27: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); - } - break; - case 28: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 29: + case 23: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -5218,44 +4474,29 @@ class Test_TC_CC_4_2Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "", "uint8")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); + CurrentSaturationStep4d = value; } break; - case 30: + case 24: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 31: + case 25: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); + VerifyOrReturn(CheckValue("currentSaturation", value, CurrentSaturationStep4d)); } break; - case 32: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 33: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 34: + case 26: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); - } break; - case 35: + case 27: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 36: + case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -5263,44 +4504,31 @@ class Test_TC_CC_4_2Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "", "uint8")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); + CurrentSaturationStep5b = value; } break; - case 37: + case 29: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 38: + case 30: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint8")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, CurrentSaturationStep5b)); } break; - case 39: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 40: + case 31: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; break; - case 41: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); - } - break; - case 42: + case 32: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 43: + case 33: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -5308,26 +4536,25 @@ class Test_TC_CC_4_2Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "", "uint8")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); + CurrentSaturationStep5d = value; } break; - case 44: + case 34: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 45: + case 35: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); + VerifyOrReturn(CheckValue("currentSaturation", value, CurrentSaturationStep5d)); } break; - case 46: + case 36: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 47: + case 37: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { bool value; @@ -5370,18 +4597,18 @@ class Test_TC_CC_4_2Suite : public TestCommand return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Check Saturation attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(3, "TH reads CurrentSaturation attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); } case 4: { - LogStep(4, "Move saturation up command"); - VerifyOrDo(!ShouldSkip("CC.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(4, "TH sends MoveSaturation command to DUT with MoveMode Up"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::MoveSaturation::Type value; value.moveMode = static_cast(1); - value.rate = 5U; + value.rate = 15U; value.optionsMask = 0U; value.optionsOverride = 0U; return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveSaturation::Id, value, @@ -5390,51 +4617,51 @@ class Test_TC_CC_4_2Suite : public TestCommand ); } case 5: { - LogStep(5, "Wait 40ms"); + LogStep(5, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 40UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } case 6: { - LogStep(6, "Check current saturation attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(6, "TH reads CurrentSaturation attribute from DUT several times"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); } case 7: { - LogStep(7, "Wait 45ms"); + LogStep(7, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 45UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } case 8: { - LogStep(8, "Check current saturation attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(8, "TH reads CurrentSaturation attribute from DUT several times"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); } case 9: { - LogStep(9, "Wait 50ms"); + LogStep(9, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 50UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } case 10: { - LogStep(10, "Check current saturation attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(10, "TH reads CurrentSaturation attribute from DUT several times"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); } case 11: { - LogStep(11, "Move saturation down command"); - VerifyOrDo(!ShouldSkip("CC.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(11, "TH sends MoveSaturation command to DUT with MoveMode Down"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::MoveSaturation::Type value; value.moveMode = static_cast(3); - value.rate = 5U; + value.rate = 10U; value.optionsMask = 0U; value.optionsOverride = 0U; return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveSaturation::Id, value, @@ -5443,51 +4670,51 @@ class Test_TC_CC_4_2Suite : public TestCommand ); } case 12: { - LogStep(12, "Wait 40ms"); + LogStep(12, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 40UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } case 13: { - LogStep(13, "Check current saturation attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(13, "TH reads CurrentSaturation attribute from DUT several times."); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); } case 14: { - LogStep(14, "Wait 45ms"); + LogStep(14, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 45UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } case 15: { - LogStep(15, "Check current saturation attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(15, "TH reads CurrentSaturation attribute from DUT several times."); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); } case 16: { - LogStep(16, "Wait 50ms"); + LogStep(16, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 50UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } case 17: { - LogStep(17, "Check current saturation attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(17, "TH reads CurrentSaturation attribute from DUT several times."); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); } case 18: { - LogStep(18, "Move saturation up command"); - VerifyOrDo(!ShouldSkip("CC.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(18, "TH sends MoveSaturation command to DUT with MoveMode Up to the Maximum allowed Saturation"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::MoveSaturation::Type value; value.moveMode = static_cast(1); - value.rate = 5U; + value.rate = 100U; value.optionsMask = 0U; value.optionsOverride = 0U; return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveSaturation::Id, value, @@ -5496,51 +4723,25 @@ class Test_TC_CC_4_2Suite : public TestCommand ); } case 19: { - LogStep(19, "Wait 40ms"); + LogStep(19, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 40UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } case 20: { - LogStep(20, "Check current saturation attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(20, "TH reads CurrentSaturation attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); } case 21: { - LogStep(21, "Wait 45ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 45UL; - return WaitForMs(kIdentityAlpha, value); - } - case 22: { - LogStep(22, "Check current saturation attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, - true, chip::NullOptional); - } - case 23: { - LogStep(23, "Wait 50ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 50UL; - return WaitForMs(kIdentityAlpha, value); - } - case 24: { - LogStep(24, "Check current saturation attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, - true, chip::NullOptional); - } - case 25: { - LogStep(25, "Move saturation stop command"); - VerifyOrDo(!ShouldSkip("CC.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(21, "TH sends MoveSaturation command to DUT with MoveMode Stop before Saturation reaches the Maximum allowed."); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::MoveSaturation::Type value; value.moveMode = static_cast(0); - value.rate = 5U; + value.rate = 50U; value.optionsMask = 0U; value.optionsOverride = 0U; return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveSaturation::Id, value, @@ -5548,52 +4749,39 @@ class Test_TC_CC_4_2Suite : public TestCommand ); } - case 26: { - LogStep(26, "Wait 40ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 40UL; - return WaitForMs(kIdentityAlpha, value); - } - case 27: { - LogStep(27, "Check current saturation attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, - true, chip::NullOptional); - } - case 28: { - LogStep(28, "Wait 45ms"); + case 22: { + LogStep(22, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 45UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } - case 29: { - LogStep(29, "Check current saturation attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 23: { + LogStep(23, "TH reads CurrentSaturation attribute from DUT."); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); } - case 30: { - LogStep(30, "Wait 50ms"); + case 24: { + LogStep(24, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 50UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } - case 31: { - LogStep(31, "Check current saturation attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 25: { + LogStep(25, "CurrentSaturation value Stops incrementing"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); } - case 32: { - LogStep(32, "Move saturation down command"); - VerifyOrDo(!ShouldSkip("CC.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 26: { + LogStep(26, "TH sends MoveSaturation command to DUT with MoveMode Down to the Minimum allowed Saturation"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::MoveSaturation::Type value; value.moveMode = static_cast(3); - value.rate = 5U; + value.rate = 10U; value.optionsMask = 0U; value.optionsOverride = 0U; return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveSaturation::Id, value, @@ -5601,52 +4789,39 @@ class Test_TC_CC_4_2Suite : public TestCommand ); } - case 33: { - LogStep(33, "Wait 40ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 40UL; - return WaitForMs(kIdentityAlpha, value); - } - case 34: { - LogStep(34, "Check current saturation attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, - true, chip::NullOptional); - } - case 35: { - LogStep(35, "Wait 45ms"); + case 27: { + LogStep(27, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 45UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } - case 36: { - LogStep(36, "Check current saturation attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 28: { + LogStep(28, "TH reads CurrentSaturation attribute from DUT several times."); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); } - case 37: { - LogStep(37, "Wait 50ms"); + case 29: { + LogStep(29, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 50UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } - case 38: { - LogStep(38, "Check current saturation attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 30: { + LogStep(30, "TH reads CurrentSaturation attribute from DUT several times."); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); } - case 39: { - LogStep(39, "Move saturation stop command"); - VerifyOrDo(!ShouldSkip("CC.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 31: { + LogStep(31, "TH sends MoveSaturation command to DUT with MoveMode Stop before Saturation reaches the Minimum allowed"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::MoveSaturation::Type value; value.moveMode = static_cast(0); - value.rate = 5U; + value.rate = 10U; value.optionsMask = 0U; value.optionsOverride = 0U; return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveSaturation::Id, value, @@ -5654,55 +4829,42 @@ class Test_TC_CC_4_2Suite : public TestCommand ); } - case 40: { - LogStep(40, "Wait 40ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 40UL; - return WaitForMs(kIdentityAlpha, value); - } - case 41: { - LogStep(41, "Check current saturation attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, - true, chip::NullOptional); - } - case 42: { - LogStep(42, "Wait 45ms"); + case 32: { + LogStep(32, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 45UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } - case 43: { - LogStep(43, "Check current saturation attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 33: { + LogStep(33, "TH reads CurrentSaturation attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); } - case 44: { - LogStep(44, "Wait 50ms"); + case 34: { + LogStep(34, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 50UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } - case 45: { - LogStep(45, "Check current saturation attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 35: { + LogStep(35, "CurrentSaturation value Stops decrementing"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); } - case 46: { - LogStep(46, "Turn off light that we turned on"); + case 36: { + LogStep(36, "Turn off light that we turned on"); ListFreer listFreer; chip::app::Clusters::OnOff::Commands::Off::Type value; return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::Off::Id, value, chip::NullOptional ); } - case 47: { - LogStep(47, "Check on/off attribute value is false after off command"); + case 37: { + LogStep(37, "Check on/off attribute value is false after off command"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } } @@ -5851,14 +5013,14 @@ class Test_TC_CC_4_3Suite : public TestCommand return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Reads CurrentSaturation attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(3, "TH reads CurrentSaturation attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); } case 4: { - LogStep(4, "Step saturation up command"); - VerifyOrDo(!ShouldSkip("CC.S.C05.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(4, "TH sends StepSaturation command to DUT with StepMode Up"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.C05.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::StepSaturation::Type value; value.stepMode = static_cast(1); @@ -5872,21 +5034,21 @@ class Test_TC_CC_4_3Suite : public TestCommand ); } case 5: { - LogStep(5, "Wait 10ms"); + LogStep(5, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 10UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } case 6: { - LogStep(6, "Over TransitionTime,Read CurrentSaturation attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(6, "Over TransitionTime,TH read CurrentSaturation attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); } case 7: { - LogStep(7, "Step saturation down command"); - VerifyOrDo(!ShouldSkip("CC.S.C05.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(7, "TH sends StepSaturation command to DUT with StepMode Down"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.C05.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::StepSaturation::Type value; value.stepMode = static_cast(3); @@ -5900,15 +5062,15 @@ class Test_TC_CC_4_3Suite : public TestCommand ); } case 8: { - LogStep(8, "Wait 10ms"); + LogStep(8, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 10UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } case 9: { - LogStep(9, "Over TransitionTime,Reads CurrentSaturation attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(9, "Over TransitionTime,TH reads CurrentSaturation attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); } @@ -6073,20 +5235,20 @@ class Test_TC_CC_4_4Suite : public TestCommand return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Check current hue attribute value matched before any change"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(3, "TH reads CurrentHue attribute from DUT."); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, chip::NullOptional); } case 4: { - LogStep(4, "Check Saturation attribute value matched before any change"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(4, "TH reads CurrentSaturation attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); } case 5: { - LogStep(5, "Move To current hue and saturation command"); - VerifyOrDo(!ShouldSkip("CC.S.C06.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(5, "TH sends MoveToHueAndSaturation command to DUT."); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.C06.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::MoveToHueAndSaturation::Type value; value.hue = 40U; @@ -6100,21 +5262,21 @@ class Test_TC_CC_4_4Suite : public TestCommand ); } case 6: { - LogStep(6, "Wait 10ms"); + LogStep(6, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 10UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } case 7: { - LogStep(7, "Check current hue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(7, "Over TransitionTime, TH reads CurrentHue attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, chip::NullOptional); } case 8: { - LogStep(8, "Check current saturation attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(8, "Over TransitionTime, TH reads CurrentSaturation attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); } @@ -6218,6 +5380,7 @@ class Test_TC_CC_5_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("currentX", value, 200U)); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); @@ -6228,6 +5391,7 @@ class Test_TC_CC_5_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("currentY", value, 300U)); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); @@ -6279,25 +5443,25 @@ class Test_TC_CC_5_1Suite : public TestCommand return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Check current x attribute value matched before any change"); - VerifyOrDo(!ShouldSkip("CC.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(3, "TH reads CurrentX attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F03 && CC.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id, true, chip::NullOptional); } case 4: { - LogStep(4, "Check current y attribute value matched before any change"); - VerifyOrDo(!ShouldSkip("CC.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(4, "TH reads CurrentY attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F03 && CC.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id, true, chip::NullOptional); } case 5: { - LogStep(5, "Move to Color command"); - VerifyOrDo(!ShouldSkip("CC.S.C07.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(5, "TH sends MoveToColor command to DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F03 && CC.S.C07.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::MoveToColor::Type value; value.colorX = 200U; value.colorY = 300U; - value.transitionTime = 20U; + value.transitionTime = 10U; value.optionsMask = 0U; value.optionsOverride = 0U; return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToColor::Id, value, @@ -6306,21 +5470,21 @@ class Test_TC_CC_5_1Suite : public TestCommand ); } case 6: { - LogStep(6, "Wait 20ms"); + LogStep(6, "Wait 1500ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 20UL; + value.ms = 1500UL; return WaitForMs(kIdentityAlpha, value); } case 7: { - LogStep(7, "Check current x attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(7, "Over TransitionTime, TH reads CurrentX attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F03 && CC.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id, true, chip::NullOptional); } case 8: { - LogStep(8, "Check current y attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(8, "Over TransitionTime, TH reads CurrentY attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F03 && CC.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id, true, chip::NullOptional); } @@ -6508,20 +5672,20 @@ class Test_TC_CC_5_2Suite : public TestCommand return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Check current x attribute value matched before any change"); - VerifyOrDo(!ShouldSkip("CC.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(3, "TH reads CurrentX attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F03 && CC.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id, true, chip::NullOptional); } case 4: { - LogStep(4, "Check current y attribute value matched before any change"); - VerifyOrDo(!ShouldSkip("CC.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(4, "TH reads CurrentY attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F03 && CC.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id, true, chip::NullOptional); } case 5: { - LogStep(5, "Move Color command"); - VerifyOrDo(!ShouldSkip("CC.S.C08.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(5, "TH sends MoveColor command to DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F03 && CC.S.C08.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::MoveColor::Type value; value.rateX = 15; @@ -6534,27 +5698,27 @@ class Test_TC_CC_5_2Suite : public TestCommand ); } case 6: { - LogStep(6, "Wait 150ms"); + LogStep(6, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 150UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } case 7: { - LogStep(7, "Check current x attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(7, "TH reads CurrentX attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F03 && CC.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id, true, chip::NullOptional); } case 8: { - LogStep(8, "Check current y attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(8, "TH reads CurrentY attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F03 && CC.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id, true, chip::NullOptional); } case 9: { - LogStep(9, "Stop Move Step command"); - VerifyOrDo(!ShouldSkip("CC.S.C47.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(9, "TH sends StopMoveStep command to DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F03 && CC.S.C47.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::StopMoveStep::Type value; value.optionsMask = 0U; @@ -6565,14 +5729,14 @@ class Test_TC_CC_5_2Suite : public TestCommand ); } case 10: { - LogStep(10, "Check current x attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(10, "TH reads CurrentX attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F03 && CC.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id, true, chip::NullOptional); } case 11: { - LogStep(11, "Check current y attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(11, "TH reads CurrentY attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F03 && CC.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id, true, chip::NullOptional); } @@ -6737,25 +5901,25 @@ class Test_TC_CC_5_3Suite : public TestCommand return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Check current x attribute value matched before any change"); - VerifyOrDo(!ShouldSkip("CC.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(3, "TH reads CurrentX attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F03 && CC.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id, true, chip::NullOptional); } case 4: { - LogStep(4, "Check current y attribute value matched before any change"); - VerifyOrDo(!ShouldSkip("CC.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(4, "TH reads CurrentY attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F03 && CC.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id, true, chip::NullOptional); } case 5: { - LogStep(5, "Step Color command"); - VerifyOrDo(!ShouldSkip("CC.S.C09.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(5, "TH sends StepColor command to DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F03 && CC.S.C09.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::StepColor::Type value; value.stepX = 15; value.stepY = 20; - value.transitionTime = 50U; + value.transitionTime = 10U; value.optionsMask = 0U; value.optionsOverride = 0U; return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StepColor::Id, value, @@ -6764,21 +5928,21 @@ class Test_TC_CC_5_3Suite : public TestCommand ); } case 6: { - LogStep(6, "Wait 50ms"); + LogStep(6, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 50UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } case 7: { - LogStep(7, "Check current x attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(7, "Over TransitionTime, TH reads CurrentX attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F03 && CC.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id, true, chip::NullOptional); } case 8: { - LogStep(8, "Check current y attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(8, "Over TransitionTime, TH reads CurrentY attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F03 && CC.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id, true, chip::NullOptional); } @@ -6802,7 +5966,7 @@ class Test_TC_CC_5_3Suite : public TestCommand class Test_TC_CC_6_1Suite : public TestCommand { public: - Test_TC_CC_6_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_6_1", 9, credsIssuerConfig) + Test_TC_CC_6_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_6_1", 11, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -6823,6 +5987,9 @@ class Test_TC_CC_6_1Suite : public TestCommand chip::Optional mEndpoint; chip::Optional mTimeout; + uint16_t ColorTempPhysicalMinMiredsValue; + uint16_t ColorTempPhysicalMaxMiredsValue; + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } // @@ -6858,30 +6025,52 @@ class Test_TC_CC_6_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "", "uint16")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); + ColorTempPhysicalMinMiredsValue = value; } break; case 4: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); + ColorTempPhysicalMaxMiredsValue = value; + } break; case 5: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, ColorTempPhysicalMaxMiredsValue)); + } break; case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckValue("colorTemperature", value, 100U)); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, ColorTempPhysicalMaxMiredsValue)); } break; - case 7: + case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 8: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { bool value; @@ -6924,18 +6113,30 @@ class Test_TC_CC_6_1Suite : public TestCommand return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Read current color temprature"); - VerifyOrDo(!ShouldSkip("CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(3, "TH reads ColorTempPhysicalMinMireds attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A400b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, + ColorControl::Attributes::ColorTempPhysicalMinMireds::Id, true, chip::NullOptional); + } + case 4: { + LogStep(4, "TH reads ColorTempPhysicalMaxMireds attribute from DUT."); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A400c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, + ColorControl::Attributes::ColorTempPhysicalMaxMireds::Id, true, chip::NullOptional); + } + case 5: { + LogStep(5, "TH reads ColorTemperatureMireds attribute from DUT."); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, true, chip::NullOptional); } - case 4: { - LogStep(4, "Move To Color Temperature command"); - VerifyOrDo(!ShouldSkip("CC.S.C0A.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 6: { + LogStep(6, "Move To Color Temperature command"); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.C0A.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::MoveToColorTemperature::Type value; value.colorTemperature = 100U; - value.transitionTime = 5U; + value.transitionTime = 10U; value.optionsMask = 0U; value.optionsOverride = 0U; return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToColorTemperature::Id, @@ -6943,29 +6144,29 @@ class Test_TC_CC_6_1Suite : public TestCommand ); } - case 5: { - LogStep(5, "Wait 700ms"); + case 7: { + LogStep(7, "Wait 1500ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 700UL; + value.ms = 1500UL; return WaitForMs(kIdentityAlpha, value); } - case 6: { - LogStep(6, "Read current color temprature"); - VerifyOrDo(!ShouldSkip("CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 8: { + LogStep(8, "Read current color temprature"); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, true, chip::NullOptional); } - case 7: { - LogStep(7, "Turn off light that we turned on"); + case 9: { + LogStep(9, "Turn off light that we turned on"); ListFreer listFreer; chip::app::Clusters::OnOff::Commands::Off::Type value; return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::Off::Id, value, chip::NullOptional ); } - case 8: { - LogStep(8, "Check on/off attribute value is false after off command"); + case 10: { + LogStep(10, "Check on/off attribute value is false after off command"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } } @@ -6976,7 +6177,7 @@ class Test_TC_CC_6_1Suite : public TestCommand class Test_TC_CC_6_2Suite : public TestCommand { public: - Test_TC_CC_6_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_6_2", 36, credsIssuerConfig) + Test_TC_CC_6_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_6_2", 38, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -6997,6 +6198,11 @@ class Test_TC_CC_6_2Suite : public TestCommand chip::Optional mEndpoint; chip::Optional mTimeout; + uint16_t ColorTempPhysicalMinMiredsValue; + uint16_t ColorTempPhysicalMaxMiredsValue; + uint16_t ColorTemperatureValue; + uint16_t ColorTemperatureMoveModeStop; + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } // @@ -7032,25 +6238,33 @@ class Test_TC_CC_6_2Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "", "uint16")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); + ColorTempPhysicalMinMiredsValue = value; } break; case 4: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); + ColorTempPhysicalMaxMiredsValue = value; + } break; case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 6: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, ColorTempPhysicalMaxMiredsValue)); } break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; @@ -7061,8 +6275,8 @@ class Test_TC_CC_6_2Suite : public TestCommand uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, ColorTempPhysicalMaxMiredsValue)); } break; case 9: @@ -7075,27 +6289,27 @@ class Test_TC_CC_6_2Suite : public TestCommand uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, ColorTempPhysicalMaxMiredsValue)); } break; case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 13: + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, ColorTempPhysicalMaxMiredsValue)); } break; + case 13: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; @@ -7106,8 +6320,8 @@ class Test_TC_CC_6_2Suite : public TestCommand uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, ColorTempPhysicalMaxMiredsValue)); } break; case 16: @@ -7120,29 +6334,29 @@ class Test_TC_CC_6_2Suite : public TestCommand uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, ColorTempPhysicalMaxMiredsValue)); } break; case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; break; case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, ColorTempPhysicalMaxMiredsValue)); + } break; case 20: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; break; case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); - } break; case 22: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); @@ -7154,8 +6368,9 @@ class Test_TC_CC_6_2Suite : public TestCommand uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, ColorTempPhysicalMaxMiredsValue)); + ColorTemperatureValue = value; } break; case 24: @@ -7167,30 +6382,32 @@ class Test_TC_CC_6_2Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("colorTemperature", value, ColorTemperatureValue)); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, ColorTempPhysicalMaxMiredsValue)); } break; case 26: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; break; case 27: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("colorTemperature", value, ColorTemperatureValue)); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, ColorTempPhysicalMaxMiredsValue)); + } break; case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; break; case 29: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); - } break; case 30: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); @@ -7202,8 +6419,9 @@ class Test_TC_CC_6_2Suite : public TestCommand uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, ColorTempPhysicalMaxMiredsValue)); + ColorTemperatureMoveModeStop = value; } break; case 32: @@ -7215,15 +6433,31 @@ class Test_TC_CC_6_2Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("colorTemperature", value, ColorTemperatureMoveModeStop)); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, ColorTempPhysicalMaxMiredsValue)); } break; case 34: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; break; case 35: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("colorTemperature", value, ColorTemperatureValue)); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, ColorTempPhysicalMaxMiredsValue)); + } + break; + case 36: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 37: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { bool value; @@ -7266,20 +6500,32 @@ class Test_TC_CC_6_2Suite : public TestCommand return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Read current color temprature"); - VerifyOrDo(!ShouldSkip("CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(3, "TH reads ColorTempPhysicalMinMireds attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A400b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, + ColorControl::Attributes::ColorTempPhysicalMinMireds::Id, true, chip::NullOptional); + } + case 4: { + LogStep(4, "TH reads ColorTempPhysicalMaxMireds attribute from DUT."); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A400c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, + ColorControl::Attributes::ColorTempPhysicalMaxMireds::Id, true, chip::NullOptional); + } + case 5: { + LogStep(5, "TH reads ColorTemperatureMireds attribute from DUT."); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, true, chip::NullOptional); } - case 4: { - LogStep(4, "Move up color temperature command"); - VerifyOrDo(!ShouldSkip("CC.S.C4B.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 6: { + LogStep(6, "TH sends MoveColorTemperature command to DUT with MoveMode = Up"); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.C4B.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::MoveColorTemperature::Type value; value.moveMode = static_cast(1); - value.rate = 10U; - value.colorTemperatureMinimumMireds = 1U; - value.colorTemperatureMaximumMireds = 255U; + value.rate = 20U; + value.colorTemperatureMinimumMireds = ColorTempPhysicalMinMiredsValue; + value.colorTemperatureMaximumMireds = ColorTempPhysicalMaxMiredsValue; value.optionsMask = 0U; value.optionsOverride = 0U; return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveColorTemperature::Id, @@ -7287,54 +6533,54 @@ class Test_TC_CC_6_2Suite : public TestCommand ); } - case 5: { - LogStep(5, "Wait 90ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 90UL; - return WaitForMs(kIdentityAlpha, value); - } - case 6: { - LogStep(6, "Read current color temprature attribute from DUT several times"); - VerifyOrDo(!ShouldSkip("CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, - true, chip::NullOptional); - } case 7: { - LogStep(7, "Wait 95ms"); + LogStep(7, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 95UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } case 8: { LogStep(8, "Read current color temprature attribute from DUT several times"); - VerifyOrDo(!ShouldSkip("CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, true, chip::NullOptional); } case 9: { - LogStep(9, "Wait 100ms"); + LogStep(9, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 100UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } case 10: { LogStep(10, "Read current color temprature attribute from DUT several times"); - VerifyOrDo(!ShouldSkip("CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, true, chip::NullOptional); } case 11: { - LogStep(11, "Move down color temperature command"); - VerifyOrDo(!ShouldSkip("CC.S.C4B.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(11, "Wait 1000ms"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 1000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 12: { + LogStep(12, "Read current color temprature attribute from DUT several times"); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, + true, chip::NullOptional); + } + case 13: { + LogStep(13, "TH sends MoveColorTemperature command to DUT with MoveMode = Down"); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.C4B.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::MoveColorTemperature::Type value; value.moveMode = static_cast(3); value.rate = 20U; - value.colorTemperatureMinimumMireds = 1U; - value.colorTemperatureMaximumMireds = 255U; + value.colorTemperatureMinimumMireds = ColorTempPhysicalMinMiredsValue; + value.colorTemperatureMaximumMireds = ColorTempPhysicalMaxMiredsValue; value.optionsMask = 0U; value.optionsOverride = 0U; return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveColorTemperature::Id, @@ -7342,54 +6588,54 @@ class Test_TC_CC_6_2Suite : public TestCommand ); } - case 12: { - LogStep(12, "Wait 190ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 190UL; - return WaitForMs(kIdentityAlpha, value); - } - case 13: { - LogStep(13, "Read current color temprature attribute from DUT several times"); - VerifyOrDo(!ShouldSkip("CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, - true, chip::NullOptional); - } case 14: { - LogStep(14, "Wait 195ms"); + LogStep(14, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 195UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } case 15: { LogStep(15, "Read current color temprature attribute from DUT several times"); - VerifyOrDo(!ShouldSkip("CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, true, chip::NullOptional); } case 16: { - LogStep(16, "Wait 200ms"); + LogStep(16, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 200UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } case 17: { LogStep(17, "Read current color temprature attribute from DUT several times"); - VerifyOrDo(!ShouldSkip("CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, true, chip::NullOptional); } case 18: { - LogStep(18, "Move up color temperature command"); - VerifyOrDo(!ShouldSkip("CC.S.C4B.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(18, "Wait 1000ms"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 1000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 19: { + LogStep(19, "Read current color temprature attribute from DUT several times"); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, + true, chip::NullOptional); + } + case 20: { + LogStep(20, "TH sends MoveColorTemperature command to DUT with MoveMode = Up"); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.C4B.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::MoveColorTemperature::Type value; value.moveMode = static_cast(1); value.rate = 10U; - value.colorTemperatureMinimumMireds = 1U; - value.colorTemperatureMaximumMireds = 255U; + value.colorTemperatureMinimumMireds = ColorTempPhysicalMinMiredsValue; + value.colorTemperatureMaximumMireds = ColorTempPhysicalMaxMiredsValue; value.optionsMask = 0U; value.optionsOverride = 0U; return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveColorTemperature::Id, @@ -7397,9 +6643,9 @@ class Test_TC_CC_6_2Suite : public TestCommand ); } - case 19: { - LogStep(19, "Stop Color Temperature command"); - VerifyOrDo(!ShouldSkip("CC.S.C4B.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 21: { + LogStep(21, "TH sends MoveColorTemperature command to DUT with MoveMode = Stop"); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.C4B.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::MoveColorTemperature::Type value; value.moveMode = static_cast(0); @@ -7413,54 +6659,54 @@ class Test_TC_CC_6_2Suite : public TestCommand ); } - case 20: { - LogStep(20, "Wait 90ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 90UL; - return WaitForMs(kIdentityAlpha, value); - } - case 21: { - LogStep(21, "Read current color temprature attribute from DUT several times"); - VerifyOrDo(!ShouldSkip("CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, - true, chip::NullOptional); - } case 22: { - LogStep(22, "Wait 95ms"); + LogStep(22, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 95UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } case 23: { LogStep(23, "Read current color temprature attribute from DUT several times"); - VerifyOrDo(!ShouldSkip("CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, true, chip::NullOptional); } case 24: { - LogStep(24, "Wait 100ms"); + LogStep(24, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 100UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } case 25: { LogStep(25, "Read current color temprature attribute from DUT several times"); - VerifyOrDo(!ShouldSkip("CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, true, chip::NullOptional); } case 26: { - LogStep(26, "Move down color temperature command"); - VerifyOrDo(!ShouldSkip("CC.S.C4B.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(26, "Wait 1000ms"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 1000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 27: { + LogStep(27, "Read current color temprature attribute from DUT several times"); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, + true, chip::NullOptional); + } + case 28: { + LogStep(28, "TH sends MoveColorTemperature command to DUT with MoveMode = Down"); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.C4B.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::MoveColorTemperature::Type value; value.moveMode = static_cast(3); value.rate = 20U; - value.colorTemperatureMinimumMireds = 1U; - value.colorTemperatureMaximumMireds = 255U; + value.colorTemperatureMinimumMireds = ColorTempPhysicalMinMiredsValue; + value.colorTemperatureMaximumMireds = ColorTempPhysicalMaxMiredsValue; value.optionsMask = 0U; value.optionsOverride = 0U; return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveColorTemperature::Id, @@ -7468,15 +6714,15 @@ class Test_TC_CC_6_2Suite : public TestCommand ); } - case 27: { - LogStep(27, "Stop Color Temperature command"); - VerifyOrDo(!ShouldSkip("CC.S.C4B.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 29: { + LogStep(29, "TH sends MoveColorTemperature command to DUT with MoveMode = Stop"); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.C4B.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::MoveColorTemperature::Type value; value.moveMode = static_cast(0); value.rate = 10U; - value.colorTemperatureMinimumMireds = 1U; - value.colorTemperatureMaximumMireds = 255U; + value.colorTemperatureMinimumMireds = ColorTempPhysicalMinMiredsValue; + value.colorTemperatureMaximumMireds = ColorTempPhysicalMaxMiredsValue; value.optionsMask = 0U; value.optionsOverride = 0U; return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveColorTemperature::Id, @@ -7484,55 +6730,55 @@ class Test_TC_CC_6_2Suite : public TestCommand ); } - case 28: { - LogStep(28, "Wait 140ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 140UL; - return WaitForMs(kIdentityAlpha, value); - } - case 29: { - LogStep(29, "Read current color temprature attribute from DUT several times"); - VerifyOrDo(!ShouldSkip("CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, - true, chip::NullOptional); - } case 30: { - LogStep(30, "Wait 145ms"); + LogStep(30, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 145UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } case 31: { LogStep(31, "Read current color temprature attribute from DUT several times"); - VerifyOrDo(!ShouldSkip("CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, true, chip::NullOptional); } case 32: { - LogStep(32, "Wait 150ms"); + LogStep(32, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 150UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } case 33: { LogStep(33, "Read current color temprature attribute from DUT several times"); - VerifyOrDo(!ShouldSkip("CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, true, chip::NullOptional); } case 34: { - LogStep(34, "Turn off light that we turned on"); + LogStep(34, "Wait 1000ms"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 1000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 35: { + LogStep(35, "Read current color temprature attribute from DUT several times"); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, + true, chip::NullOptional); + } + case 36: { + LogStep(36, "Turn off light that we turned on"); ListFreer listFreer; chip::app::Clusters::OnOff::Commands::Off::Type value; return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::Off::Id, value, chip::NullOptional ); } - case 35: { - LogStep(35, "Check on/off attribute value is false after off command"); + case 37: { + LogStep(37, "Check on/off attribute value is false after off command"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } } @@ -7543,7 +6789,7 @@ class Test_TC_CC_6_2Suite : public TestCommand class Test_TC_CC_6_3Suite : public TestCommand { public: - Test_TC_CC_6_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_6_3", 20, credsIssuerConfig) + Test_TC_CC_6_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_6_3", 22, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -7564,6 +6810,9 @@ class Test_TC_CC_6_3Suite : public TestCommand chip::Optional mEndpoint; chip::Optional mTimeout; + uint16_t ColorTempPhysicalMinMiredsValue; + uint16_t ColorTempPhysicalMaxMiredsValue; + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } // @@ -7599,25 +6848,33 @@ class Test_TC_CC_6_3Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "", "uint16")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); + ColorTempPhysicalMinMiredsValue = value; } break; case 4: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); + ColorTempPhysicalMaxMiredsValue = value; + } break; case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 6: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, ColorTempPhysicalMaxMiredsValue)); } break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; @@ -7647,13 +6904,10 @@ class Test_TC_CC_6_3Suite : public TestCommand } break; case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 13: + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -7663,6 +6917,9 @@ class Test_TC_CC_6_3Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); } break; + case 13: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; @@ -7693,8 +6950,22 @@ class Test_TC_CC_6_3Suite : public TestCommand break; case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; break; case 19: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); + } + break; + case 20: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { bool value; @@ -7737,21 +7008,33 @@ class Test_TC_CC_6_3Suite : public TestCommand return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Read current color temprature"); - VerifyOrDo(!ShouldSkip("CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(3, "TH reads ColorTempPhysicalMinMireds attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A400b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, + ColorControl::Attributes::ColorTempPhysicalMinMireds::Id, true, chip::NullOptional); + } + case 4: { + LogStep(4, "TH reads ColorTempPhysicalMaxMireds attribute from DUT."); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A400c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, + ColorControl::Attributes::ColorTempPhysicalMaxMireds::Id, true, chip::NullOptional); + } + case 5: { + LogStep(5, "TH reads ColorTemperatureMireds attribute from DUT."); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, true, chip::NullOptional); } - case 4: { - LogStep(4, "Step up color temperature command"); - VerifyOrDo(!ShouldSkip("CC.S.C4C.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 6: { + LogStep(6, "TH sends StepColorTemperature command to DUT with MoveMode = Up"); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.C4C.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::StepColorTemperature::Type value; value.stepMode = static_cast(1); - value.stepSize = 5U; - value.transitionTime = 50U; - value.colorTemperatureMinimumMireds = 5U; - value.colorTemperatureMaximumMireds = 100U; + value.stepSize = 100U; + value.transitionTime = 15U; + value.colorTemperatureMinimumMireds = ColorTempPhysicalMinMiredsValue; + value.colorTemperatureMaximumMireds = ColorTempPhysicalMaxMiredsValue; value.optionsMask = 0U; value.optionsOverride = 0U; return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StepColorTemperature::Id, @@ -7759,55 +7042,55 @@ class Test_TC_CC_6_3Suite : public TestCommand ); } - case 5: { - LogStep(5, "Wait 40ms"); + case 7: { + LogStep(7, "Wait 500ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 40UL; + value.ms = 500UL; return WaitForMs(kIdentityAlpha, value); } - case 6: { - LogStep(6, "Read current color temprature"); - VerifyOrDo(!ShouldSkip("CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 8: { + LogStep(8, "TH reads ColorTemperatureMireds attribute from DUT several times"); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, true, chip::NullOptional); } - case 7: { - LogStep(7, "Wait 45ms"); + case 9: { + LogStep(9, "Wait 500ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 45UL; + value.ms = 500UL; return WaitForMs(kIdentityAlpha, value); } - case 8: { - LogStep(8, "Read current color temprature"); - VerifyOrDo(!ShouldSkip("CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 10: { + LogStep(10, "TH reads ColorTemperatureMireds attribute from DUT several times"); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, true, chip::NullOptional); } - case 9: { - LogStep(9, "Wait 50ms"); + case 11: { + LogStep(11, "Wait 500ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 50UL; + value.ms = 500UL; return WaitForMs(kIdentityAlpha, value); } - case 10: { - LogStep(10, "Read current color temprature"); - VerifyOrDo(!ShouldSkip("CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 12: { + LogStep(12, "TH reads ColorTemperatureMireds attribute from DUT several times"); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, true, chip::NullOptional); } - case 11: { - LogStep(11, "Step down color temperature command"); - VerifyOrDo(!ShouldSkip("CC.S.C4C.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 13: { + LogStep(13, "TH sends StepColorTemperature command to DUT with MoveMode = Down"); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.C4C.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::StepColorTemperature::Type value; value.stepMode = static_cast(3); value.stepSize = 5U; value.transitionTime = 50U; - value.colorTemperatureMinimumMireds = 5U; - value.colorTemperatureMaximumMireds = 100U; + value.colorTemperatureMinimumMireds = ColorTempPhysicalMinMiredsValue; + value.colorTemperatureMaximumMireds = ColorTempPhysicalMaxMiredsValue; value.optionsMask = 0U; value.optionsOverride = 0U; return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StepColorTemperature::Id, @@ -7815,55 +7098,55 @@ class Test_TC_CC_6_3Suite : public TestCommand ); } - case 12: { - LogStep(12, "Wait 40ms"); + case 14: { + LogStep(14, "Wait 500ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 40UL; + value.ms = 500UL; return WaitForMs(kIdentityAlpha, value); } - case 13: { - LogStep(13, "Read current color temprature"); - VerifyOrDo(!ShouldSkip("CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 15: { + LogStep(15, "TH reads ColorTemperatureMireds attribute from DUT several times"); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, true, chip::NullOptional); } - case 14: { - LogStep(14, "Wait 45ms"); + case 16: { + LogStep(16, "Wait 500ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 45UL; + value.ms = 500UL; return WaitForMs(kIdentityAlpha, value); } - case 15: { - LogStep(15, "Read current color temprature"); - VerifyOrDo(!ShouldSkip("CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 17: { + LogStep(17, "TH reads ColorTemperatureMireds attribute from DUT several times"); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, true, chip::NullOptional); } - case 16: { - LogStep(16, "Wait 50ms"); + case 18: { + LogStep(18, "Wait 500ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 50UL; + value.ms = 500UL; return WaitForMs(kIdentityAlpha, value); } - case 17: { - LogStep(17, "Read current color temprature"); - VerifyOrDo(!ShouldSkip("CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 19: { + LogStep(19, "TH reads ColorTemperatureMireds attribute from DUT several times"); + VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, true, chip::NullOptional); } - case 18: { - LogStep(18, "Turn off light that we turned on"); + case 20: { + LogStep(20, "Turn off light that we turned on"); ListFreer listFreer; chip::app::Clusters::OnOff::Commands::Off::Type value; return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::Off::Id, value, chip::NullOptional ); } - case 19: { - LogStep(19, "Check on/off attribute value is false after off command"); + case 21: { + LogStep(21, "Check on/off attribute value is false after off command"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } } @@ -7871,10 +7154,10 @@ class Test_TC_CC_6_3Suite : public TestCommand } }; -class Test_TC_CC_7_1Suite : public TestCommand +class Test_TC_CC_7_2Suite : public TestCommand { public: - Test_TC_CC_7_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_7_1", 35, credsIssuerConfig) + Test_TC_CC_7_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_7_2", 24, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -7882,7 +7165,7 @@ class Test_TC_CC_7_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CC_7_1Suite() {} + ~Test_TC_CC_7_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -7923,54 +7206,6 @@ class Test_TC_CC_7_1Suite : public TestCommand } break; case 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); - } - break; - case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 6: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); - } - break; - case 8: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 9: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); - } - break; - case 10: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -7980,14 +7215,14 @@ class Test_TC_CC_7_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); } break; - case 12: + case 4: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 13: + case 5: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 14: + case 6: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -7997,11 +7232,11 @@ class Test_TC_CC_7_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); } break; - case 15: + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 16: + case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -8011,11 +7246,11 @@ class Test_TC_CC_7_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); } break; - case 17: + case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 18: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -8025,14 +7260,10 @@ class Test_TC_CC_7_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); } break; - case 19: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 20: + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; break; - case 21: + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -8042,25 +7273,14 @@ class Test_TC_CC_7_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); } break; - case 22: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 23: + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); - } break; - case 24: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 25: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -8070,14 +7290,11 @@ class Test_TC_CC_7_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); } break; - case 26: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 27: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 28: + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -8087,11 +7304,11 @@ class Test_TC_CC_7_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); } break; - case 29: + case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 30: + case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -8101,11 +7318,10 @@ class Test_TC_CC_7_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); } break; - case 31: + case 20: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; break; - case 32: + case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -8115,10 +7331,10 @@ class Test_TC_CC_7_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); } break; - case 33: + case 22: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 34: + case 23: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { bool value; @@ -8161,252 +7377,167 @@ class Test_TC_CC_7_1Suite : public TestCommand return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Enhanced Move To Hue command"); - VerifyOrDo(!ShouldSkip("CC.S.C40.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::ColorControl::Commands::EnhancedMoveToHue::Type value; - value.enhancedHue = 1025U; - value.direction = static_cast(0); - value.transitionTime = 1U; - value.optionsMask = 0U; - value.optionsOverride = 0U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveToHue::Id, - value, chip::NullOptional - - ); - } - case 4: { - LogStep(4, "Check EnhancedCurrentHue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(3, "TH reads EnhancedCurrentHue attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, true, chip::NullOptional); } - case 5: { - LogStep(5, "Enhanced Move To Hue command"); - VerifyOrDo(!ShouldSkip("CC.S.C40.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 4: { + LogStep(4, "TH sends EnhancedMoveHue command to DUT with MoveMode Up"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.C41.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; - chip::app::Clusters::ColorControl::Commands::EnhancedMoveToHue::Type value; - value.enhancedHue = 1100U; - value.direction = static_cast(0); - value.transitionTime = 300U; + chip::app::Clusters::ColorControl::Commands::EnhancedMoveHue::Type value; + value.moveMode = static_cast(1); + value.rate = 50U; value.optionsMask = 0U; value.optionsOverride = 0U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveToHue::Id, - value, chip::NullOptional + return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveHue::Id, value, + chip::NullOptional ); } - case 6: { - LogStep(6, "Wait 290ms"); + case 5: { + LogStep(5, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 290UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } - case 7: { - LogStep(7, "Check EnhancedCurrentHue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 6: { + LogStep(6, "TH reads EnhancedCurrentHue attribute from DUT several times."); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, true, chip::NullOptional); } - case 8: { - LogStep(8, "Wait 295ms"); + case 7: { + LogStep(7, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 295UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } - case 9: { - LogStep(9, "Check EnhancedCurrentHue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 8: { + LogStep(8, "TH reads EnhancedCurrentHue attribute from DUT several times."); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, true, chip::NullOptional); } - case 10: { - LogStep(10, "Wait 300ms"); + case 9: { + LogStep(9, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 300UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } - case 11: { - LogStep(11, "Check EnhancedCurrentHue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 10: { + LogStep(10, "TH reads EnhancedCurrentHue attribute from DUT several times."); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, true, chip::NullOptional); } - case 12: { - LogStep(12, "Enhanced Move To Hue command"); - VerifyOrDo(!ShouldSkip("CC.S.C40.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 11: { + LogStep(11, "TH sends EnhancedMoveHue command to DUT with MoveMode Stop"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.C41.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; - chip::app::Clusters::ColorControl::Commands::EnhancedMoveToHue::Type value; - value.enhancedHue = 1150U; - value.direction = static_cast(1); - value.transitionTime = 300U; + chip::app::Clusters::ColorControl::Commands::EnhancedMoveHue::Type value; + value.moveMode = static_cast(0); + value.rate = 0U; value.optionsMask = 0U; value.optionsOverride = 0U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveToHue::Id, - value, chip::NullOptional + return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveHue::Id, value, + chip::NullOptional ); } - case 13: { - LogStep(13, "Wait 290ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 290UL; - return WaitForMs(kIdentityAlpha, value); - } - case 14: { - LogStep(14, "Check EnhancedCurrentHue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, - true, chip::NullOptional); - } - case 15: { - LogStep(15, "Wait 295ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 295UL; - return WaitForMs(kIdentityAlpha, value); - } - case 16: { - LogStep(16, "Check EnhancedCurrentHue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, - true, chip::NullOptional); - } - case 17: { - LogStep(17, "Wait 300ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 300UL; - return WaitForMs(kIdentityAlpha, value); - } - case 18: { - LogStep(18, "Check EnhancedCurrentHue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 12: { + LogStep(12, "TH reads EnhancedCurrentHue attribute from DUT several times"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, true, chip::NullOptional); } - case 19: { - LogStep(19, "Enhanced Move To Hue command"); - VerifyOrDo(!ShouldSkip("CC.S.C40.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 13: { + LogStep(13, "TH sends EnhancedMoveHue command to DUT with MoveMode Down"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.C41.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; - chip::app::Clusters::ColorControl::Commands::EnhancedMoveToHue::Type value; - value.enhancedHue = 1200U; - value.direction = static_cast(2); - value.transitionTime = 300U; + chip::app::Clusters::ColorControl::Commands::EnhancedMoveHue::Type value; + value.moveMode = static_cast(3); + value.rate = 15U; value.optionsMask = 0U; value.optionsOverride = 0U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveToHue::Id, - value, chip::NullOptional + return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveHue::Id, value, + chip::NullOptional ); } - case 20: { - LogStep(20, "Wait 290ms"); + case 14: { + LogStep(14, "Wait 500ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 290UL; + value.ms = 500UL; return WaitForMs(kIdentityAlpha, value); } - case 21: { - LogStep(21, "Check EnhancedCurrentHue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 15: { + LogStep(15, "TH reads EnhancedCurrentHue attribute from DUT several times"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, true, chip::NullOptional); } - case 22: { - LogStep(22, "Wait 295ms"); + case 16: { + LogStep(16, "Wait 500ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 295UL; + value.ms = 500UL; return WaitForMs(kIdentityAlpha, value); } - case 23: { - LogStep(23, "Check EnhancedCurrentHue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 17: { + LogStep(17, "TH reads EnhancedCurrentHue attribute from DUT several times"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, true, chip::NullOptional); } - case 24: { - LogStep(24, "Wait 300ms"); + case 18: { + LogStep(18, "Wait 500ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 300UL; + value.ms = 500UL; return WaitForMs(kIdentityAlpha, value); } - case 25: { - LogStep(25, "Check EnhancedCurrentHue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 19: { + LogStep(19, "TH reads EnhancedCurrentHue attribute from DUT several times"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, true, chip::NullOptional); } - case 26: { - LogStep(26, "Enhanced Move To Hue command"); - VerifyOrDo(!ShouldSkip("CC.S.C40.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 20: { + LogStep(20, "TH sends EnhancedMoveHue command to DUT with MoveMode Stop"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.C41.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; - chip::app::Clusters::ColorControl::Commands::EnhancedMoveToHue::Type value; - value.enhancedHue = 1300U; - value.direction = static_cast(3); - value.transitionTime = 300U; + chip::app::Clusters::ColorControl::Commands::EnhancedMoveHue::Type value; + value.moveMode = static_cast(0); + value.rate = 0U; value.optionsMask = 0U; value.optionsOverride = 0U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveToHue::Id, - value, chip::NullOptional + return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveHue::Id, value, + chip::NullOptional ); } - case 27: { - LogStep(27, "Wait 290ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 290UL; - return WaitForMs(kIdentityAlpha, value); - } - case 28: { - LogStep(28, "Check EnhancedCurrentHue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, - true, chip::NullOptional); - } - case 29: { - LogStep(29, "Wait 295ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 295UL; - return WaitForMs(kIdentityAlpha, value); - } - case 30: { - LogStep(30, "Check EnhancedCurrentHue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, - true, chip::NullOptional); - } - case 31: { - LogStep(31, "Wait 300ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 300UL; - return WaitForMs(kIdentityAlpha, value); - } - case 32: { - LogStep(32, "Check EnhancedCurrentHue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 21: { + LogStep(21, "TH reads EnhancedCurrentHue attribute from DUT several times."); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, true, chip::NullOptional); } - case 33: { - LogStep(33, "Turn off light that we turned on"); + case 22: { + LogStep(22, "Turn off light that we turned on"); ListFreer listFreer; chip::app::Clusters::OnOff::Commands::Off::Type value; return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::Off::Id, value, chip::NullOptional ); } - case 34: { - LogStep(34, "Check on/off attribute value is false after off command"); + case 23: { + LogStep(23, "Check on/off attribute value is false after off command"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } } @@ -8414,10 +7545,10 @@ class Test_TC_CC_7_1Suite : public TestCommand } }; -class Test_TC_CC_7_2Suite : public TestCommand +class Test_TC_CC_7_3Suite : public TestCommand { public: - Test_TC_CC_7_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_7_2", 24, credsIssuerConfig) + Test_TC_CC_7_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_7_3", 12, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -8425,7 +7556,7 @@ class Test_TC_CC_7_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CC_7_2Suite() {} + ~Test_TC_CC_7_3Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -8494,94 +7625,12 @@ class Test_TC_CC_7_2Suite : public TestCommand break; case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; break; case 8: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); - } - break; - case 9: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 10: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); - } - break; - case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 12: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); - } - break; - case 13: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 14: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 15: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); - } - break; - case 16: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 17: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); - } - break; - case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 19: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); - } - break; - case 20: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 21: + case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -8591,10 +7640,10 @@ class Test_TC_CC_7_2Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); } break; - case 22: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 23: + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { bool value; @@ -8637,373 +7686,64 @@ class Test_TC_CC_7_2Suite : public TestCommand return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Check EnhancedCurrentHue attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(3, "TH reads EnhancedCurrentHue attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, true, chip::NullOptional); } case 4: { - LogStep(4, "Enhanced Move Hue Up command"); - VerifyOrDo(!ShouldSkip("CC.S.C41.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(4, "TH sends EnhancedStepHue command to DUT with StepMode Up"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; - chip::app::Clusters::ColorControl::Commands::EnhancedMoveHue::Type value; - value.moveMode = static_cast(1); - value.rate = 50U; + chip::app::Clusters::ColorControl::Commands::EnhancedStepHue::Type value; + value.stepMode = static_cast(0); + value.stepSize = 50U; + value.transitionTime = 1U; value.optionsMask = 0U; value.optionsOverride = 0U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveHue::Id, value, + return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedStepHue::Id, value, chip::NullOptional ); } case 5: { - LogStep(5, "Wait 290ms"); + LogStep(5, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 290UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } case 6: { - LogStep(6, "Check EnhancedCurrentHue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(6, "Over TransitionTime,Read EnhancedCurrentHue attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, true, chip::NullOptional); } case 7: { - LogStep(7, "Wait 295ms"); + LogStep(7, "TH sends EnhancedStepHue command to DUT with StepMode Down"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 295UL; - return WaitForMs(kIdentityAlpha, value); + chip::app::Clusters::ColorControl::Commands::EnhancedStepHue::Type value; + value.stepMode = static_cast(1); + value.stepSize = 75U; + value.transitionTime = 1U; + value.optionsMask = 0U; + value.optionsOverride = 0U; + return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedStepHue::Id, value, + chip::NullOptional + + ); } case 8: { - LogStep(8, "Check EnhancedCurrentHue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, - true, chip::NullOptional); - } - case 9: { - LogStep(9, "Wait 300ms"); + LogStep(8, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 300UL; - return WaitForMs(kIdentityAlpha, value); - } - case 10: { - LogStep(10, "Check EnhancedCurrentHue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, - true, chip::NullOptional); - } - case 11: { - LogStep(11, "Enhanced Move Hue Stop command"); - VerifyOrDo(!ShouldSkip("CC.S.C41.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::ColorControl::Commands::EnhancedMoveHue::Type value; - value.moveMode = static_cast(0); - value.rate = 0U; - value.optionsMask = 0U; - value.optionsOverride = 0U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveHue::Id, value, - chip::NullOptional - - ); - } - case 12: { - LogStep(12, "Check EnhancedCurrentHue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, - true, chip::NullOptional); - } - case 13: { - LogStep(13, "Enhanced Move Hue Down command"); - VerifyOrDo(!ShouldSkip("CC.S.C41.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::ColorControl::Commands::EnhancedMoveHue::Type value; - value.moveMode = static_cast(3); - value.rate = 5U; - value.optionsMask = 0U; - value.optionsOverride = 0U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveHue::Id, value, - chip::NullOptional - - ); - } - case 14: { - LogStep(14, "Wait 40ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 40UL; - return WaitForMs(kIdentityAlpha, value); - } - case 15: { - LogStep(15, "Check EnhancedCurrentHue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, - true, chip::NullOptional); - } - case 16: { - LogStep(16, "Wait 45ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 45UL; - return WaitForMs(kIdentityAlpha, value); - } - case 17: { - LogStep(17, "Check EnhancedCurrentHue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, - true, chip::NullOptional); - } - case 18: { - LogStep(18, "Wait 50ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 50UL; - return WaitForMs(kIdentityAlpha, value); - } - case 19: { - LogStep(19, "Check EnhancedCurrentHue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, - true, chip::NullOptional); - } - case 20: { - LogStep(20, "Enhanced Move Hue Stop command"); - VerifyOrDo(!ShouldSkip("CC.S.C41.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::ColorControl::Commands::EnhancedMoveHue::Type value; - value.moveMode = static_cast(0); - value.rate = 0U; - value.optionsMask = 0U; - value.optionsOverride = 0U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveHue::Id, value, - chip::NullOptional - - ); - } - case 21: { - LogStep(21, "Check EnhancedCurrentHue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, - true, chip::NullOptional); - } - case 22: { - LogStep(22, "Turn off light that we turned on"); - ListFreer listFreer; - chip::app::Clusters::OnOff::Commands::Off::Type value; - return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::Off::Id, value, chip::NullOptional - - ); - } - case 23: { - LogStep(23, "Check on/off attribute value is false after off command"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_CC_7_3Suite : public TestCommand -{ -public: - Test_TC_CC_7_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_7_3", 12, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_CC_7_3Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - case 0: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 1: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 2: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - bool value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("onOff", value, 1)); - } - break; - case 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); - } - break; - case 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 6: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); - } - break; - case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 8: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 9: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); - } - break; - case 10: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - bool value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("onOff", value, 0)); - } - break; - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - { - case 0: { - LogStep(0, "Wait for the commissioned device to be retrieved"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; - value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; - return WaitForCommissionee(kIdentityAlpha, value); - } - case 1: { - LogStep(1, "Turn on light for color control tests"); - ListFreer listFreer; - chip::app::Clusters::OnOff::Commands::On::Type value; - return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id, value, chip::NullOptional - - ); - } - case 2: { - LogStep(2, "Check on/off attribute value is true after on command"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); - } - case 3: { - LogStep(3, "Reads EnhancedCurrentHue attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, - true, chip::NullOptional); - } - case 4: { - LogStep(4, "Enhanced Step Hue Up command"); - VerifyOrDo(!ShouldSkip("CC.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::ColorControl::Commands::EnhancedStepHue::Type value; - value.stepMode = static_cast(0); - value.stepSize = 50U; - value.transitionTime = 1U; - value.optionsMask = 0U; - value.optionsOverride = 0U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedStepHue::Id, value, - chip::NullOptional - - ); - } - case 5: { - LogStep(5, "Wait 10ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 10UL; - return WaitForMs(kIdentityAlpha, value); - } - case 6: { - LogStep(6, "Over TransitionTime,Read EnhancedCurrentHue attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, - true, chip::NullOptional); - } - case 7: { - LogStep(7, "Enhanced Step Hue Down command"); - VerifyOrDo(!ShouldSkip("CC.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::ColorControl::Commands::EnhancedStepHue::Type value; - value.stepMode = static_cast(1); - value.stepSize = 75U; - value.transitionTime = 1U; - value.optionsMask = 0U; - value.optionsOverride = 0U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedStepHue::Id, value, - chip::NullOptional - - ); - } - case 8: { - LogStep(8, "Wait 10ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 10UL; + value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } case 9: { LogStep(9, "Over TransitionTime,Read EnhancedCurrentHue attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, true, chip::NullOptional); } @@ -9097,6 +7837,7 @@ class Test_TC_CC_7_4Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("enhancedCurrentHue", value, 1200U)); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); @@ -9148,14 +7889,14 @@ class Test_TC_CC_7_4Suite : public TestCommand return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Reads EnhancedCurrentHue attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(3, "TH reads EnhancedCurrentHue attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, true, chip::NullOptional); } case 4: { - LogStep(4, "Enhanced move to hue and saturation command"); - VerifyOrDo(!ShouldSkip("CC.S.C43.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(4, "TH sends EnhancedMoveToHueAndSaturation command to DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.C43.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::EnhancedMoveToHueAndSaturation::Type value; value.enhancedHue = 1200U; @@ -9169,15 +7910,15 @@ class Test_TC_CC_7_4Suite : public TestCommand ); } case 5: { - LogStep(5, "Wait 10ms"); + LogStep(5, "Wait 1500ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 10UL; + value.ms = 1500UL; return WaitForMs(kIdentityAlpha, value); } case 6: { LogStep(6, "Check EnhancedCurrentHue attribute value matched the value sent by the last command"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, true, chip::NullOptional); } @@ -9222,6 +7963,13 @@ class Test_TC_CC_8_1Suite : public TestCommand chip::Optional mEndpoint; chip::Optional mTimeout; + uint8_t CurrentHueValue; + uint8_t CurrentSaturationValue; + uint16_t CurrentXValue; + uint16_t CurrentYValue; + uint16_t ColorTemperatureMiredsValue; + uint16_t EnhancedCurrentHueValue; + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } // @@ -9273,6 +8021,7 @@ class Test_TC_CC_8_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "", "uint8")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); + CurrentHueValue = value; } break; case 7: @@ -9284,6 +8033,7 @@ class Test_TC_CC_8_1Suite : public TestCommand { uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("currentHue", value, CurrentHueValue)); VerifyOrReturn(CheckConstraintType("value", "", "uint8")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); @@ -9313,6 +8063,7 @@ class Test_TC_CC_8_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "", "uint8")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); + CurrentSaturationValue = value; } break; case 13: @@ -9324,6 +8075,7 @@ class Test_TC_CC_8_1Suite : public TestCommand { uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("currentSaturation", value, CurrentSaturationValue)); VerifyOrReturn(CheckConstraintType("value", "", "uint8")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); @@ -9363,6 +8115,7 @@ class Test_TC_CC_8_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "", "uint16")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); + CurrentXValue = value; } break; case 20: @@ -9373,6 +8126,7 @@ class Test_TC_CC_8_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "", "uint16")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); + CurrentYValue = value; } break; case 21: @@ -9384,6 +8138,7 @@ class Test_TC_CC_8_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("currentX", value, CurrentXValue)); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); @@ -9394,6 +8149,7 @@ class Test_TC_CC_8_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("currentY", value, CurrentYValue)); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); @@ -9423,6 +8179,7 @@ class Test_TC_CC_8_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "", "uint16")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); + ColorTemperatureMiredsValue = value; } break; case 28: @@ -9434,6 +8191,7 @@ class Test_TC_CC_8_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("colorTemperature", value, ColorTemperatureMiredsValue)); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); @@ -9463,6 +8221,7 @@ class Test_TC_CC_8_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "", "uint16")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); + EnhancedCurrentHueValue = value; } break; case 34: @@ -9474,6 +8233,7 @@ class Test_TC_CC_8_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("enhancedCurrentHue", value, EnhancedCurrentHueValue)); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); @@ -9525,7 +8285,7 @@ class Test_TC_CC_8_1Suite : public TestCommand return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Move hue up command"); + LogStep(3, "TH sends MoveHue command to DUT"); VerifyOrDo(!ShouldSkip("CC.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::MoveHue::Type value; @@ -9539,13 +8299,13 @@ class Test_TC_CC_8_1Suite : public TestCommand ); } case 4: { - LogStep(4, "Reads CurrentHue attribute from DUT"); + LogStep(4, "TH reads CurrentHue attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, chip::NullOptional); } case 5: { - LogStep(5, "Stop Move Step command"); + LogStep(5, "TH sends StopMoveStep command to DUT"); VerifyOrDo(!ShouldSkip("CC.S.C47.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::StopMoveStep::Type value; @@ -9557,7 +8317,7 @@ class Test_TC_CC_8_1Suite : public TestCommand ); } case 6: { - LogStep(6, "Reads CurrentHue attribute from DUT"); + LogStep(6, "TH reads CurrentHue attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, chip::NullOptional); @@ -9570,13 +8330,13 @@ class Test_TC_CC_8_1Suite : public TestCommand return WaitForMs(kIdentityAlpha, value); } case 8: { - LogStep(8, "Check current hue attribute value matched the value sent by the last attribute"); + LogStep(8, "TH reads CurrentHue attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, chip::NullOptional); } case 9: { - LogStep(9, "Move saturation up command"); + LogStep(9, "TH sends MoveSaturation command to DUT"); VerifyOrDo(!ShouldSkip("CC.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::MoveSaturation::Type value; @@ -9590,13 +8350,13 @@ class Test_TC_CC_8_1Suite : public TestCommand ); } case 10: { - LogStep(10, "Check Saturation attribute value matched the value sent by the last command"); + LogStep(10, "TH reads CurrentSaturation attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); } case 11: { - LogStep(11, "Stop Move Step command"); + LogStep(11, "TH sends StopMoveStep command to DUT"); VerifyOrDo(!ShouldSkip("CC.S.C47.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::StopMoveStep::Type value; @@ -9608,7 +8368,7 @@ class Test_TC_CC_8_1Suite : public TestCommand ); } case 12: { - LogStep(12, "Reads CurrentSaturation attribute from DUT."); + LogStep(12, "TH reads CurrentSaturation attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); @@ -9621,13 +8381,13 @@ class Test_TC_CC_8_1Suite : public TestCommand return WaitForMs(kIdentityAlpha, value); } case 14: { - LogStep(14, "Check Saturation attribute value matched the value sent by the last attribute"); + LogStep(14, "TH reads CurrentSaturation attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); } case 15: { - LogStep(15, "Move Color command"); + LogStep(15, "TH sends MoveColor command to DUT"); VerifyOrDo(!ShouldSkip("CC.S.C08.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::MoveColor::Type value; @@ -9641,19 +8401,19 @@ class Test_TC_CC_8_1Suite : public TestCommand ); } case 16: { - LogStep(16, "Reads CurrentX attribute from DUT"); + LogStep(16, "TH reads CurrentX attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id, true, chip::NullOptional); } case 17: { - LogStep(17, "Reads CurrentY attribute from DUT"); + LogStep(17, "TH reads CurrentY attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id, true, chip::NullOptional); } case 18: { - LogStep(18, "Stop Move Step command"); + LogStep(18, "TH sends StopMoveStep command to DUT"); VerifyOrDo(!ShouldSkip("CC.S.C47.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::StopMoveStep::Type value; @@ -9665,13 +8425,13 @@ class Test_TC_CC_8_1Suite : public TestCommand ); } case 19: { - LogStep(19, "Reads CurrentX attribute from DUT"); + LogStep(19, "TH reads CurrentX attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id, true, chip::NullOptional); } case 20: { - LogStep(20, "Reads CurrentY attribute from DUT"); + LogStep(20, "TH reads CurrentY attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id, true, chip::NullOptional); @@ -9684,19 +8444,19 @@ class Test_TC_CC_8_1Suite : public TestCommand return WaitForMs(kIdentityAlpha, value); } case 22: { - LogStep(22, "Check current x attribute value matched the value sent by the last attribute"); + LogStep(22, "TH reads CurrentY attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id, true, chip::NullOptional); } case 23: { - LogStep(23, "Check current y attribute value matched the value sent by the last attribute"); + LogStep(23, "TH reads CurrentY attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id, true, chip::NullOptional); } case 24: { - LogStep(24, "Move up color temperature command"); + LogStep(24, "TH sends MoveColorTemperature command to DUT"); VerifyOrDo(!ShouldSkip("CC.S.C4B.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::MoveColorTemperature::Type value; @@ -9712,13 +8472,13 @@ class Test_TC_CC_8_1Suite : public TestCommand ); } case 25: { - LogStep(25, "Reads current color temprature from DUT"); + LogStep(25, "TH reads ColorTemperatureMireds attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, true, chip::NullOptional); } case 26: { - LogStep(26, "Stop Move Step command"); + LogStep(26, "TH sends StopMoveStep command to DUT"); VerifyOrDo(!ShouldSkip("CC.S.C47.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::StopMoveStep::Type value; @@ -9730,7 +8490,7 @@ class Test_TC_CC_8_1Suite : public TestCommand ); } case 27: { - LogStep(27, "Reads current color temprature from DUT"); + LogStep(27, "TH reads ColorTemperatureMireds attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, true, chip::NullOptional); @@ -9749,7 +8509,7 @@ class Test_TC_CC_8_1Suite : public TestCommand true, chip::NullOptional); } case 30: { - LogStep(30, "Enhanced Move Hue Up command"); + LogStep(30, "TH sends EnhancedMoveHue command to DUT."); VerifyOrDo(!ShouldSkip("CC.S.C41.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::EnhancedMoveHue::Type value; @@ -9763,13 +8523,13 @@ class Test_TC_CC_8_1Suite : public TestCommand ); } case 31: { - LogStep(31, "Reads EnhancedCurrentHue attribute value from DUT"); + LogStep(31, "TH reads EnhancedCurrentHue attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, true, chip::NullOptional); } case 32: { - LogStep(32, "Stop Move Step command"); + LogStep(32, "TH sends StopMoveStep command to DUT"); VerifyOrDo(!ShouldSkip("CC.S.C47.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::StopMoveStep::Type value; @@ -9781,7 +8541,7 @@ class Test_TC_CC_8_1Suite : public TestCommand ); } case 33: { - LogStep(33, "Reads EnhancedCurrentHue attribute value from DUT"); + LogStep(33, "TH reads EnhancedCurrentHue attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, true, chip::NullOptional); @@ -9794,7 +8554,7 @@ class Test_TC_CC_8_1Suite : public TestCommand return WaitForMs(kIdentityAlpha, value); } case 35: { - LogStep(35, "Check EnhancedCurrentHue attribute value matched the value sent by the last attribute"); + LogStep(35, "TH reads EnhancedCurrentHue attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, true, chip::NullOptional); @@ -14182,7 +12942,7 @@ class Test_TC_LVL_1_1Suite : public TestCommand true, chip::NullOptional); } case 7: { - LogStep(7, "Read the optonal attribute(MinLevel) in AttributeList"); + LogStep(7, "Read the optonal attribute(MaxLevel) in AttributeList"); VerifyOrDo(!ShouldSkip("LVL.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::AttributeList::Id, true, chip::NullOptional); @@ -14247,7 +13007,7 @@ class Test_TC_LVL_1_1Suite : public TestCommand class Test_TC_LVL_2_1Suite : public TestCommand { public: - Test_TC_LVL_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LVL_2_1", 24, credsIssuerConfig) + Test_TC_LVL_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LVL_2_1", 21, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -14270,9 +13030,9 @@ class Test_TC_LVL_2_1Suite : public TestCommand uint8_t CurrentLevelValue; uint8_t MinLevelValue; - uint8_t MinLevelValue1; + uint8_t MinLevelFeatureMapNotSupportedValue; uint8_t MaxLevelValue; - uint8_t MaxLevelValue1; + uint8_t MaxLevelFeatureMapNotSupportedValue; uint16_t MinFrequencyValue; uint16_t MaxFrequencyValue; @@ -14293,21 +13053,6 @@ class Test_TC_LVL_2_1Suite : public TestCommand shouldContinue = true; break; case 1: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 2: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("currentLevel", value, 254U)); - } - break; - case 4: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -14318,7 +13063,7 @@ class Test_TC_LVL_2_1Suite : public TestCommand CurrentLevelValue = value; } break; - case 5: + case 2: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -14328,7 +13073,7 @@ class Test_TC_LVL_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); } break; - case 6: + case 3: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -14338,7 +13083,7 @@ class Test_TC_LVL_2_1Suite : public TestCommand MinLevelValue = value; } break; - case 7: + case 4: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -14346,10 +13091,10 @@ class Test_TC_LVL_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "", "uint8")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U)); - MinLevelValue1 = value; + MinLevelFeatureMapNotSupportedValue = value; } break; - case 8: + case 5: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -14360,18 +13105,18 @@ class Test_TC_LVL_2_1Suite : public TestCommand MaxLevelValue = value; } break; - case 9: + case 6: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, MinLevelValue1)); + VerifyOrReturn(CheckConstraintMinValue("value", value, MinLevelFeatureMapNotSupportedValue)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); - MaxLevelValue1 = value; + MaxLevelFeatureMapNotSupportedValue = value; } break; - case 10: + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -14381,17 +13126,17 @@ class Test_TC_LVL_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxLevelValue)); } break; - case 11: + case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, MinLevelValue1)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxLevelValue1)); + VerifyOrReturn(CheckConstraintMinValue("value", value, MinLevelFeatureMapNotSupportedValue)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxLevelFeatureMapNotSupportedValue)); } break; - case 12: + case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -14401,7 +13146,7 @@ class Test_TC_LVL_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); } break; - case 13: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -14412,7 +13157,7 @@ class Test_TC_LVL_2_1Suite : public TestCommand MinFrequencyValue = value; } break; - case 14: + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -14423,7 +13168,7 @@ class Test_TC_LVL_2_1Suite : public TestCommand MaxFrequencyValue = value; } break; - case 15: + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -14433,7 +13178,7 @@ class Test_TC_LVL_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxFrequencyValue)); } break; - case 16: + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -14443,7 +13188,7 @@ class Test_TC_LVL_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); } break; - case 17: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -14453,17 +13198,17 @@ class Test_TC_LVL_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxLevelValue)); } break; - case 18: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, MinLevelValue1)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxLevelValue1)); + VerifyOrReturn(CheckConstraintMinValue("value", value, MinLevelFeatureMapNotSupportedValue)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxLevelFeatureMapNotSupportedValue)); } break; - case 19: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -14473,7 +13218,7 @@ class Test_TC_LVL_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); } break; - case 20: + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -14483,7 +13228,7 @@ class Test_TC_LVL_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); } break; - case 21: + case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -14493,7 +13238,7 @@ class Test_TC_LVL_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U)); } break; - case 22: + case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -14502,7 +13247,7 @@ class Test_TC_LVL_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "", "map8")); } break; - case 23: + case 20: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -14535,149 +13280,121 @@ class Test_TC_LVL_2_1Suite : public TestCommand return WaitForCommissionee(kIdentityAlpha, value); } case 1: { - LogStep(1, "Precondition: Reset level to 254"); - VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LevelControl::Commands::MoveToLevel::Type value; - value.level = 254U; - value.transitionTime = 0U; - value.optionMask = 1U; - value.optionOverride = 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Commands::MoveToLevel::Id, value, - chip::NullOptional - - ); - } - case 2: { - LogStep(2, "Wait 100ms"); - VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 100UL; - return WaitForMs(kIdentityAlpha, value); - } - case 3: { - LogStep(3, "Precondition: Reads the CurrentLevel attribute"); + LogStep(1, "Reads the CurrentLevel attribute"); VerifyOrDo(!ShouldSkip("LVL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 4: { - LogStep(4, "Reads the CurrentLevel attribute"); - VerifyOrDo(!ShouldSkip("LVL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, - chip::NullOptional); - } - case 5: { - LogStep(5, "Reads the RemainingTime attribute"); + case 2: { + LogStep(2, "Reads the RemainingTime attribute"); VerifyOrDo(!ShouldSkip("LVL.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::RemainingTime::Id, true, chip::NullOptional); } - case 6: { - LogStep(6, "Reads the MinLevel attribute"); + case 3: { + LogStep(3, "Reads the MinLevel attribute"); VerifyOrDo(!ShouldSkip("LVL.S.A0002 && LVL.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::MinLevel::Id, true, chip::NullOptional); } - case 7: { - LogStep(7, "Reads the MinLevel attribute"); + case 4: { + LogStep(4, "Reads the MinLevel attribute"); VerifyOrDo(!ShouldSkip("LVL.S.A0002 && !LVL.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::MinLevel::Id, true, chip::NullOptional); } - case 8: { - LogStep(8, "Reads the MaxLevel attribute"); + case 5: { + LogStep(5, "Reads the MaxLevel attribute"); VerifyOrDo(!ShouldSkip("LVL.S.A0003 && LVL.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::MaxLevel::Id, true, chip::NullOptional); } - case 9: { - LogStep(9, "Reads the MaxLevel attribute"); + case 6: { + LogStep(6, "Reads the MaxLevel attribute"); VerifyOrDo(!ShouldSkip("LVL.S.A0003 && !LVL.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::MaxLevel::Id, true, chip::NullOptional); } - case 10: { - LogStep(10, "Step 4b & 4C Reads the CurrentLevel attribute"); + case 7: { + LogStep(7, "Step 4b & 4C Reads the CurrentLevel attribute"); VerifyOrDo(!ShouldSkip("LVL.S.F01 && LVL.S.A0002 && LVL.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 11: { - LogStep(11, "Step 4b & 4C Reads the CurrentLevel attribute"); + case 8: { + LogStep(8, "Step 4b & 4C Reads the CurrentLevel attribute"); VerifyOrDo(!ShouldSkip("LVL.S.A0002 && LVL.S.A0003 && !LVL.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 12: { - LogStep(12, "Reads the CurrentFrequency attribute"); + case 9: { + LogStep(9, "Reads the CurrentFrequency attribute"); VerifyOrDo(!ShouldSkip("LVL.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentFrequency::Id, true, chip::NullOptional); } - case 13: { - LogStep(13, "Reads the MinFrequency attribute"); + case 10: { + LogStep(10, "Reads the MinFrequency attribute"); VerifyOrDo(!ShouldSkip("LVL.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::MinFrequency::Id, true, chip::NullOptional); } - case 14: { - LogStep(14, "Reads the MaxFrequency attribute"); + case 11: { + LogStep(11, "Reads the MaxFrequency attribute"); VerifyOrDo(!ShouldSkip("LVL.S.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::MaxFrequency::Id, true, chip::NullOptional); } - case 15: { - LogStep(15, "Step 7b & 7C Reads the CurrentFrequency attribute"); + case 12: { + LogStep(12, "Step 7b & 7C Reads the CurrentFrequency attribute"); VerifyOrDo(!ShouldSkip("LVL.S.A0004 && LVL.S.A0005 && LVL.S.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentFrequency::Id, true, chip::NullOptional); } - case 16: { - LogStep(16, "Reads the OnOffTransitionTime attribute"); + case 13: { + LogStep(13, "Reads the OnOffTransitionTime attribute"); VerifyOrDo(!ShouldSkip("LVL.S.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnOffTransitionTime::Id, true, chip::NullOptional); } - case 17: { - LogStep(17, "Reads the OnLevel attribute "); + case 14: { + LogStep(14, "Reads the OnLevel attribute "); VerifyOrDo(!ShouldSkip("LVL.S.F01 && LVL.S.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnLevel::Id, true, chip::NullOptional); } - case 18: { - LogStep(18, "Reads the OnLevel attribute "); + case 15: { + LogStep(15, "Reads the OnLevel attribute "); VerifyOrDo(!ShouldSkip("LVL.S.A0011 && !LVL.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnLevel::Id, true, chip::NullOptional); } - case 19: { - LogStep(19, "Reads the OnTransitionTime attribute "); + case 16: { + LogStep(16, "Reads the OnTransitionTime attribute "); VerifyOrDo(!ShouldSkip("LVL.S.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnTransitionTime::Id, true, chip::NullOptional); } - case 20: { - LogStep(20, "Reads the OffTransitionTime attribute "); + case 17: { + LogStep(17, "Reads the OffTransitionTime attribute "); VerifyOrDo(!ShouldSkip("LVL.S.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OffTransitionTime::Id, true, chip::NullOptional); } - case 21: { - LogStep(21, "Reads the DefaultMoveRate attribute "); + case 18: { + LogStep(18, "Reads the DefaultMoveRate attribute "); VerifyOrDo(!ShouldSkip("LVL.S.A0014"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::DefaultMoveRate::Id, true, chip::NullOptional); } - case 22: { - LogStep(22, "Reads the Options attribute "); + case 19: { + LogStep(19, "Reads the Options attribute "); VerifyOrDo(!ShouldSkip("LVL.S.A000f"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::Options::Id, true, chip::NullOptional); } - case 23: { - LogStep(23, "Reads the StartUpCurrentLevel attribute "); + case 20: { + LogStep(20, "Reads the StartUpCurrentLevel attribute "); VerifyOrDo(!ShouldSkip("LVL.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::StartUpCurrentLevel::Id, true, chip::NullOptional); @@ -15076,7 +13793,7 @@ class Test_TC_LVL_2_2Suite : public TestCommand class Test_TC_LVL_3_1Suite : public TestCommand { public: - Test_TC_LVL_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LVL_3_1", 22, credsIssuerConfig) + Test_TC_LVL_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LVL_3_1", 20, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -15218,13 +13935,6 @@ class Test_TC_LVL_3_1Suite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 19: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 20: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { bool value; @@ -15394,28 +14104,7 @@ class Test_TC_LVL_3_1Suite : public TestCommand chip::NullOptional); } case 18: { - LogStep(18, "Reset level to 254"); - VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0010 && LVL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LevelControl::Commands::MoveToLevel::Type value; - value.level = 254U; - value.transitionTime = 0U; - value.optionMask = 1U; - value.optionOverride = 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Commands::MoveToLevel::Id, value, - chip::NullOptional - - ); - } - case 19: { - LogStep(19, "Wait 100ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 100UL; - return WaitForMs(kIdentityAlpha, value); - } - case 20: { - LogStep(20, "Precondition send Off Command"); + LogStep(18, "Precondition send Off Command"); VerifyOrDo(!ShouldSkip("OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::OnOff::Commands::Off::Type value; @@ -15423,8 +14112,8 @@ class Test_TC_LVL_3_1Suite : public TestCommand ); } - case 21: { - LogStep(21, "Check on/off attribute value is false after off command"); + case 19: { + LogStep(19, "Check on/off attribute value is false after off command"); VerifyOrDo(!ShouldSkip("OO.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } @@ -15436,7 +14125,7 @@ class Test_TC_LVL_3_1Suite : public TestCommand class Test_TC_LVL_4_1Suite : public TestCommand { public: - Test_TC_LVL_4_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LVL_4_1", 22, credsIssuerConfig) + Test_TC_LVL_4_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LVL_4_1", 20, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -15579,13 +14268,6 @@ class Test_TC_LVL_4_1Suite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 19: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 20: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { bool value; @@ -15769,28 +14451,7 @@ class Test_TC_LVL_4_1Suite : public TestCommand return UserPrompt(kIdentityAlpha, value); } case 18: { - LogStep(18, "Reset level to 254"); - VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0010 && LVL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LevelControl::Commands::MoveToLevel::Type value; - value.level = 254U; - value.transitionTime = 0U; - value.optionMask = 1U; - value.optionOverride = 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Commands::MoveToLevel::Id, value, - chip::NullOptional - - ); - } - case 19: { - LogStep(19, "Wait 100ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 100UL; - return WaitForMs(kIdentityAlpha, value); - } - case 20: { - LogStep(20, "Precondition send Off Command"); + LogStep(18, "Precondition send Off Command"); VerifyOrDo(!ShouldSkip("OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::OnOff::Commands::Off::Type value; @@ -15798,8 +14459,8 @@ class Test_TC_LVL_4_1Suite : public TestCommand ); } - case 21: { - LogStep(21, "Check on/off attribute value is false after off command"); + case 19: { + LogStep(19, "Check on/off attribute value is false after off command"); VerifyOrDo(!ShouldSkip("OO.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } @@ -15811,7 +14472,7 @@ class Test_TC_LVL_4_1Suite : public TestCommand class Test_TC_LVL_5_1Suite : public TestCommand { public: - Test_TC_LVL_5_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LVL_5_1", 16, credsIssuerConfig) + Test_TC_LVL_5_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LVL_5_1", 17, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -15877,25 +14538,39 @@ class Test_TC_LVL_5_1Suite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 6: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("currentLevel", value, MinlevelValue)); + VerifyOrReturn(CheckValue("currentLevel", value, static_cast(MinlevelValue + 1))); VerifyOrReturn(CheckConstraintType("value", "", "uint8")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U)); CurrentlevelValue = value; } break; - case 6: + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("currentLevel", value, 2U)); + VerifyOrReturn(CheckConstraintType("value", "", "uint8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U)); + } break; - case 7: + case 8: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 8: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -15905,14 +14580,14 @@ class Test_TC_LVL_5_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 68U)); } break; - case 9: + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 10: + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 11: + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -15920,17 +14595,18 @@ class Test_TC_LVL_5_1Suite : public TestCommand VerifyOrReturn(CheckValue("currentLevel", value, CurrentlevelValue)); } break; - case 12: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 13: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("currentLevel", value, 2U)); + } break; case 15: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { bool value; @@ -15982,10 +14658,10 @@ class Test_TC_LVL_5_1Suite : public TestCommand } case 4: { LogStep(4, "Sends MoveToLevelWithOnOff command to DUT"); - VerifyOrDo(!ShouldSkip("LVL.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("LVL.S.C04.Rsp && LVL.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LevelControl::Commands::MoveToLevelWithOnOff::Type value; - value.level = MinlevelValue; + value.level = static_cast(MinlevelValue + 1); value.transitionTime = 0U; return SendCommand(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Commands::MoveToLevelWithOnOff::Id, value, chip::NullOptional @@ -15993,13 +14669,31 @@ class Test_TC_LVL_5_1Suite : public TestCommand ); } case 5: { - LogStep(5, "Reads current level attribute from DUT"); + LogStep(5, "Sends MoveToLevelWithOnOff command to DUT"); + VerifyOrDo(!ShouldSkip("LVL.S.C04.Rsp && !LVL.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LevelControl::Commands::MoveToLevelWithOnOff::Type value; + value.level = 2U; + value.transitionTime = 0U; + return SendCommand(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Commands::MoveToLevelWithOnOff::Id, + value, chip::NullOptional + + ); + } + case 6: { + LogStep(6, "Reads current level attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 6: { - LogStep(6, "Sends step up command to DUT"); + case 7: { + LogStep(7, "Reads current level attribute from DUT"); + VerifyOrDo(!ShouldSkip("LVL.S.A0000 && !LVL.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, + chip::NullOptional); + } + case 8: { + LogStep(8, "Sends step up command to DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C02.Rsp && LVL.S.M.VarRate"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LevelControl::Commands::Step::Type value; @@ -16013,21 +14707,21 @@ class Test_TC_LVL_5_1Suite : public TestCommand ); } - case 7: { - LogStep(7, "Wait 4000ms"); + case 9: { + LogStep(9, "Wait 4000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 4000UL; return WaitForMs(kIdentityAlpha, value); } - case 8: { - LogStep(8, "Reads current level attribute from DUT"); + case 10: { + LogStep(10, "Reads current level attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.A0000 && LVL.S.C02.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 9: { - LogStep(9, "Sends a StepWithOnOff command"); + case 11: { + LogStep(11, "Sends a StepWithOnOff command"); VerifyOrDo(!ShouldSkip("LVL.S.C06.Rsp && LVL.S.M.VarRate"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LevelControl::Commands::StepWithOnOff::Type value; @@ -16039,42 +14733,27 @@ class Test_TC_LVL_5_1Suite : public TestCommand ); } - case 10: { - LogStep(10, "Wait 4000ms"); + case 12: { + LogStep(12, "Wait 4000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 4000UL; return WaitForMs(kIdentityAlpha, value); } - case 11: { - LogStep(11, "Reads current level attribute from DUT"); + case 13: { + LogStep(13, "Reads current level attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C06.Rsp && LVL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 12: { - LogStep(12, "Reset level to 254"); - VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LevelControl::Commands::MoveToLevel::Type value; - value.level = 254U; - value.transitionTime = 0U; - value.optionMask = 1U; - value.optionOverride = 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Commands::MoveToLevel::Id, value, - chip::NullOptional - - ); - } - case 13: { - LogStep(13, "Wait 100ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 100UL; - return WaitForMs(kIdentityAlpha, value); - } case 14: { - LogStep(14, "Precondition send Off Command"); + LogStep(14, "Reads current level attribute from DUT"); + VerifyOrDo(!ShouldSkip("LVL.S.C06.Rsp && LVL.S.A0000 && !LVL.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, + chip::NullOptional); + } + case 15: { + LogStep(15, "Precondition send Off Command"); VerifyOrDo(!ShouldSkip("OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::OnOff::Commands::Off::Type value; @@ -16082,8 +14761,8 @@ class Test_TC_LVL_5_1Suite : public TestCommand ); } - case 15: { - LogStep(15, "Check on/off attribute value is false after off command"); + case 16: { + LogStep(16, "Check on/off attribute value is false after off command"); VerifyOrDo(!ShouldSkip("OO.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } @@ -16095,7 +14774,7 @@ class Test_TC_LVL_5_1Suite : public TestCommand class Test_TC_LVL_6_1Suite : public TestCommand { public: - Test_TC_LVL_6_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LVL_6_1", 20, credsIssuerConfig) + Test_TC_LVL_6_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LVL_6_1", 18, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -16222,13 +14901,6 @@ class Test_TC_LVL_6_1Suite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 17: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 18: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { bool value; @@ -16396,28 +15068,7 @@ class Test_TC_LVL_6_1Suite : public TestCommand chip::NullOptional); } case 16: { - LogStep(16, "Reset level to 254"); - VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0010 && LVL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LevelControl::Commands::MoveToLevel::Type value; - value.level = 254U; - value.transitionTime = 0U; - value.optionMask = 1U; - value.optionOverride = 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Commands::MoveToLevel::Id, value, - chip::NullOptional - - ); - } - case 17: { - LogStep(17, "Wait 100ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 100UL; - return WaitForMs(kIdentityAlpha, value); - } - case 18: { - LogStep(18, "Precondition send Off Command"); + LogStep(16, "Precondition send Off Command"); VerifyOrDo(!ShouldSkip("OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::OnOff::Commands::Off::Type value; @@ -16425,8 +15076,8 @@ class Test_TC_LVL_6_1Suite : public TestCommand ); } - case 19: { - LogStep(19, "Check on/off attribute value is false after off command"); + case 17: { + LogStep(17, "Check on/off attribute value is false after off command"); VerifyOrDo(!ShouldSkip("OO.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } @@ -16732,7 +15383,7 @@ class Test_TC_KEYPADINPUT_1_2Suite : public TestCommand true, chip::NullOptional); } case 2: { - LogStep(2, "Read the optional global attribute: FeatureMap"); + LogStep(2, "Read the global attribute: FeatureMap"); VerifyOrDo(!ShouldSkip("KEYPADINPUT.S.NV || KEYPADINPUT.S.LK || KEYPADINPUT.S.NK"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), KeypadInput::Id, KeypadInput::Attributes::FeatureMap::Id, true, @@ -16920,7 +15571,7 @@ class Test_TC_APPLAUNCHER_1_3Suite : public TestCommand ApplicationLauncher::Attributes::ClusterRevision::Id, true, chip::NullOptional); } case 2: { - LogStep(2, "Read the optional global attribute: FeatureMap"); + LogStep(2, "Read the global attribute: FeatureMap"); VerifyOrDo(!ShouldSkip("APPLAUNCHER.S.AP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ApplicationLauncher::Id, ApplicationLauncher::Attributes::FeatureMap::Id, true, chip::NullOptional); @@ -17121,7 +15772,7 @@ class Test_TC_MEDIAINPUT_1_4Suite : public TestCommand chip::NullOptional); } case 2: { - LogStep(2, "Read the optional global attribute: FeatureMap"); + LogStep(2, "Read the global attribute: FeatureMap"); VerifyOrDo(!ShouldSkip("MEDIAINPUT.S.NU"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaInput::Id, MediaInput::Attributes::FeatureMap::Id, true, chip::NullOptional); @@ -17337,7 +15988,7 @@ class Test_TC_CHANNEL_1_6Suite : public TestCommand { public: Test_TC_CHANNEL_1_6Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_CHANNEL_1_6", 10, credsIssuerConfig) + TestCommand("Test_TC_CHANNEL_1_6", 12, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -17440,8 +16091,6 @@ class Test_TC_CHANNEL_1_6Suite : public TestCommand VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "list")); VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 2UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); } break; case 8: @@ -17450,9 +16099,28 @@ class Test_TC_CHANNEL_1_6Suite : public TestCommand chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 2UL)); } break; case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); + } + break; + case 10: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); + } + break; + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; @@ -17484,7 +16152,7 @@ class Test_TC_CHANNEL_1_6Suite : public TestCommand chip::NullOptional); } case 2: { - LogStep(2, "Read the optional global attribute: FeatureMap"); + LogStep(2, "Read the global attribute: FeatureMap"); VerifyOrDo(!ShouldSkip("CHANNEL.S.CL || CHANNEL.S.LI"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Channel::Id, Channel::Attributes::FeatureMap::Id, true, chip::NullOptional); @@ -17515,17 +16183,31 @@ class Test_TC_CHANNEL_1_6Suite : public TestCommand chip::NullOptional); } case 7: { - LogStep(7, "Read the global attribute: AcceptedCommandList"); + LogStep(7, "Read the optional command(ChangeChannel) in AcceptedCommandList"); + VerifyOrDo(!ShouldSkip("CHANNEL.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Channel::Id, Channel::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } case 8: { - LogStep(8, "Read the global attribute: GeneratedCommandList"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Channel::Id, Channel::Attributes::GeneratedCommandList::Id, true, + LogStep(8, "Read the optional command(ChangeChannelByNumber) in AcceptedCommandList"); + VerifyOrDo(!ShouldSkip("CHANNEL.S.C02.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Channel::Id, Channel::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } case 9: { - LogStep(9, + LogStep(9, "Read the optional command(SkipChannel) in AcceptedCommandList"); + VerifyOrDo(!ShouldSkip("CHANNEL.S.C03.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Channel::Id, Channel::Attributes::AcceptedCommandList::Id, true, + chip::NullOptional); + } + case 10: { + LogStep(10, "Read the global attribute: GeneratedCommandList"); + VerifyOrDo(!ShouldSkip("CHANNEL.S.C01.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Channel::Id, Channel::Attributes::GeneratedCommandList::Id, true, + chip::NullOptional); + } + case 11: { + LogStep(11, "Read EventList attribute from the DUT and Verify that the DUT response provides a list of supported events."); VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; @@ -17544,7 +16226,7 @@ class Test_TC_MEDIAPLAYBACK_1_7Suite : public TestCommand { public: Test_TC_MEDIAPLAYBACK_1_7Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_MEDIAPLAYBACK_1_7", 13, credsIssuerConfig) + TestCommand("Test_TC_MEDIAPLAYBACK_1_7", 21, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -17685,10 +16367,82 @@ class Test_TC_MEDIAPLAYBACK_1_7Suite : public TestCommand chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 10UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); } break; case 12: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 4UL)); + } + break; + case 13: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 5UL)); + } + break; + case 14: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 6UL)); + } + break; + case 15: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 7UL)); + } + break; + case 16: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 8UL)); + } + break; + case 17: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 9UL)); + } + break; + case 18: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 11UL)); + } + break; + case 19: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 10UL)); + } + break; + case 20: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; @@ -17720,7 +16474,7 @@ class Test_TC_MEDIAPLAYBACK_1_7Suite : public TestCommand true, chip::NullOptional); } case 2: { - LogStep(2, "Read the optional global attribute: FeatureMap"); + LogStep(2, "Read the global attribute: FeatureMap"); VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.AS || MEDIAPLAYBACK.S.VS"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Attributes::FeatureMap::Id, true, chip::NullOptional); @@ -17772,12 +16526,60 @@ class Test_TC_MEDIAPLAYBACK_1_7Suite : public TestCommand MediaPlayback::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } case 11: { - LogStep(11, "Read the global attribute: GeneratedCommandList"); + LogStep(11, "Read the optional command(StartOver) in AcceptedCommandList"); + VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C03.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, - MediaPlayback::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); + MediaPlayback::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } case 12: { - LogStep(12, + LogStep(12, "Read the optional command(Previous) in AcceptedCommandList"); + VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, + MediaPlayback::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); + } + case 13: { + LogStep(13, "Read the optional command(Next) in AcceptedCommandList"); + VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C05.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, + MediaPlayback::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); + } + case 14: { + LogStep(14, "Read the optional command(Rewind) in AcceptedCommandList"); + VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C06.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, + MediaPlayback::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); + } + case 15: { + LogStep(15, "Read the optional command(FastForward) in AcceptedCommandList"); + VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C07.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, + MediaPlayback::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); + } + case 16: { + LogStep(16, "Read the optional command(SkipForward) in AcceptedCommandList"); + VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C08.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, + MediaPlayback::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); + } + case 17: { + LogStep(17, "Read the optional command(SkipBackward) in AcceptedCommandList"); + VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C09.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, + MediaPlayback::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); + } + case 18: { + LogStep(18, "Read the optional command(Seek) in AcceptedCommandList"); + VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C0B.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, + MediaPlayback::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); + } + case 19: { + LogStep(19, "Read the global attribute: GeneratedCommandList"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, + MediaPlayback::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); + } + case 20: { + LogStep(20, "Read EventList attribute from the DUT and Verify that the DUT response provides a list of supported events."); VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; @@ -18474,15 +17276,13 @@ class Test_TC_CONTENTLAUNCHER_1_11Suite : public TestCommand ContentLauncher::Attributes::ClusterRevision::Id, true, chip::NullOptional); } case 2: { - LogStep(2, "Read the optional global attribute: FeatureMap"); + LogStep(2, "Read the global attribute: FeatureMap"); VerifyOrDo(!ShouldSkip("CONTENTLAUNCHER.S.CS || CONTENTLAUNCHER.S.UP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ContentLauncher::Id, ContentLauncher::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 3: { LogStep(3, "Read the global attribute: AttributeList"); - VerifyOrDo(!ShouldSkip("CONTENTLAUNCHER.S.A0000 && CONTENTLAUNCHER.S.A0001"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ContentLauncher::Id, ContentLauncher::Attributes::AttributeList::Id, true, chip::NullOptional); } @@ -20222,7 +19022,7 @@ class Test_TC_CHANNEL_5_2Suite : public TestCommand } case 2: { LogStep(2, "TH sends a ChangeChannelByNumber command"); - VerifyOrDo(!ShouldSkip("CHANNEL.S.C0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CHANNEL.S.C02.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::Channel::Commands::ChangeChannelByNumber::Type value; value.majorNumber = mMajornumber.HasValue() ? mMajornumber.Value() : 9U; @@ -20382,7 +19182,7 @@ class Test_TC_CHANNEL_5_3Suite : public TestCommand } case 4: { LogStep(4, "Sends a SkipChannel command to the DUT"); - VerifyOrDo(!ShouldSkip("CHANNEL.S.C0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CHANNEL.S.C03.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::Channel::Commands::SkipChannel::Type value; value.count = 1U; @@ -20590,7 +19390,7 @@ class Test_TC_MEDIAPLAYBACK_6_1Suite : public TestCommand return UserPrompt(kIdentityAlpha, value); } case 5: { - LogStep(5, "Reads the playback state attribute"); + LogStep(5, "Reads the CurrentState attribute"); VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Attributes::CurrentState::Id, true, chip::NullOptional); @@ -20617,7 +19417,7 @@ class Test_TC_MEDIAPLAYBACK_6_1Suite : public TestCommand return UserPrompt(kIdentityAlpha, value); } case 8: { - LogStep(8, "Reads the playback state attribute"); + LogStep(8, "Reads the CurrentState attribute"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Attributes::CurrentState::Id, true, chip::NullOptional); } @@ -20643,7 +19443,7 @@ class Test_TC_MEDIAPLAYBACK_6_1Suite : public TestCommand return UserPrompt(kIdentityAlpha, value); } case 11: { - LogStep(11, "Reads the playback state attribute"); + LogStep(11, "Reads the CurrentState attribute"); VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Attributes::CurrentState::Id, true, chip::NullOptional); @@ -20873,7 +19673,7 @@ class Test_TC_MEDIAPLAYBACK_6_2Suite : public TestCommand } case 6: { LogStep(6, "Sends a StartOver command to the DUT"); - VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C03.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::MediaPlayback::Commands::StartOver::Type value; return SendCommand(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Commands::StartOver::Id, value, @@ -20894,7 +19694,7 @@ class Test_TC_MEDIAPLAYBACK_6_2Suite : public TestCommand } case 8: { LogStep(8, "Sends a Next command to the DUT"); - VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C05.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::MediaPlayback::Commands::Next::Type value; return SendCommand(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Commands::Next::Id, value, @@ -20915,7 +19715,7 @@ class Test_TC_MEDIAPLAYBACK_6_2Suite : public TestCommand } case 10: { LogStep(10, "Sends a Previous command to the DUT"); - VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::MediaPlayback::Commands::Previous::Type value; return SendCommand(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Commands::Previous::Id, value, @@ -20936,7 +19736,7 @@ class Test_TC_MEDIAPLAYBACK_6_2Suite : public TestCommand } case 12: { LogStep(12, "Sends a SkipForward command to the DUT "); - VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C0008"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C08.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::MediaPlayback::Commands::SkipForward::Type value; value.deltaPositionMilliseconds = 10000ULL; @@ -20964,7 +19764,7 @@ class Test_TC_MEDIAPLAYBACK_6_2Suite : public TestCommand } case 15: { LogStep(15, "Sends a SkipBackward command to the DUT "); - VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C0009"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C09.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::MediaPlayback::Commands::SkipBackward::Type value; value.deltaPositionMilliseconds = 10000ULL; @@ -21124,7 +19924,7 @@ class Test_TC_MEDIAPLAYBACK_6_3Suite : public TestCommand } case 2: { LogStep(2, "Sends a Seek command"); - VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C000B"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C0B.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::MediaPlayback::Commands::Seek::Type value; value.position = 10000ULL; @@ -21192,7 +19992,7 @@ class Test_TC_MEDIAPLAYBACK_6_3Suite : public TestCommand } case 9: { LogStep(9, "Sends a Seek command Position value beyond the furthest valid position"); - VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C000B"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C0B.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::MediaPlayback::Commands::Seek::Type value; value.position = mSeekPosition.HasValue() ? mSeekPosition.Value() : 100000000ULL; @@ -21413,7 +20213,7 @@ class Test_TC_MEDIAPLAYBACK_6_4Suite : public TestCommand } case 4: { LogStep(4, "Sends a FastForward command"); - VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C07.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::MediaPlayback::Commands::FastForward::Type value; return SendCommand(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Commands::FastForward::Id, value, @@ -21435,7 +20235,7 @@ class Test_TC_MEDIAPLAYBACK_6_4Suite : public TestCommand } case 7: { LogStep(7, "Sends a FastForward command"); - VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C07.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::MediaPlayback::Commands::FastForward::Type value; return SendCommand(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Commands::FastForward::Id, value, @@ -21451,7 +20251,7 @@ class Test_TC_MEDIAPLAYBACK_6_4Suite : public TestCommand } case 9: { LogStep(9, "Sends a Rewind command to the DUT"); - VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C06.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::MediaPlayback::Commands::Rewind::Type value; return SendCommand(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Commands::Rewind::Id, value, @@ -21467,7 +20267,7 @@ class Test_TC_MEDIAPLAYBACK_6_4Suite : public TestCommand } case 11: { LogStep(11, "Reads the PlaybackSpeed attribute from the DUT"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && MEDIAPLAYBACK.S.C0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && MEDIAPLAYBACK.S.C07.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; value.message = @@ -21478,7 +20278,7 @@ class Test_TC_MEDIAPLAYBACK_6_4Suite : public TestCommand } case 12: { LogStep(12, "Sends a Rewind command to the DUT"); - VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C06.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::MediaPlayback::Commands::Rewind::Type value; return SendCommand(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Commands::Rewind::Id, value, @@ -21515,7 +20315,7 @@ class Test_TC_MEDIAPLAYBACK_6_4Suite : public TestCommand } case 16: { LogStep(16, "Sends consecutive FastForward commands"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && MEDIAPLAYBACK.S.C0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && MEDIAPLAYBACK.S.C07.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); @@ -21525,7 +20325,7 @@ class Test_TC_MEDIAPLAYBACK_6_4Suite : public TestCommand } case 17: { LogStep(17, "Sends consecutive Rewind commands"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && MEDIAPLAYBACK.S.C0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && MEDIAPLAYBACK.S.C06.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); @@ -24322,13 +23122,7 @@ class Test_TC_PS_1_1Suite : public TestCommand chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 4UL)); VerifyOrReturn(CheckConstraintContains("value", value, 5UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 7UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 8UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 9UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 10UL)); } break; case 5: @@ -24337,14 +23131,9 @@ class Test_TC_PS_1_1Suite : public TestCommand chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 11UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 12UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 13UL)); VerifyOrReturn(CheckConstraintContains("value", value, 14UL)); VerifyOrReturn(CheckConstraintContains("value", value, 15UL)); VerifyOrReturn(CheckConstraintContains("value", value, 16UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 17UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 18UL)); } break; case 6: @@ -24354,10 +23143,7 @@ class Test_TC_PS_1_1Suite : public TestCommand VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "list")); VerifyOrReturn(CheckConstraintContains("value", value, 26UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 27UL)); VerifyOrReturn(CheckConstraintContains("value", value, 28UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 29UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 30UL)); } break; case 7: @@ -24367,11 +23153,6 @@ class Test_TC_PS_1_1Suite : public TestCommand VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "list")); VerifyOrReturn(CheckConstraintContains("value", value, 19UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 20UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 21UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 22UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 23UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 24UL)); VerifyOrReturn(CheckConstraintContains("value", value, 25UL)); } break; @@ -28631,12 +27412,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 5UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 6UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 7UL)); VerifyOrReturn(CheckConstraintContains("value", value, 17UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 23UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 24UL)); } break; case 5: @@ -28654,12 +27430,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 4UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 8UL)); VerifyOrReturn(CheckConstraintContains("value", value, 18UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 21UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 22UL)); } break; case 7: @@ -28687,7 +27458,6 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "list")); VerifyOrReturn(CheckConstraintContains("value", value, 25UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 30UL)); } break; case 10: @@ -28815,7 +27585,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand } case 7: { LogStep(7, "Read the Feature dependent(TSTAT.S.F01(COOL) & TSTAT.S.F02(OCC)) attribute in AttributeList"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, chip::NullOptional); } @@ -34249,7 +33019,9 @@ class Test_TC_DGWIFI_2_3Suite : public TestCommand { uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("beaconLostCount", value, 0UL)); + VerifyOrReturn(CheckConstraintType("value", "", "uint32")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0UL)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 4294967295UL)); } break; case 3: @@ -34257,7 +33029,9 @@ class Test_TC_DGWIFI_2_3Suite : public TestCommand { uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("beaconRxCount", value, 0UL)); + VerifyOrReturn(CheckConstraintType("value", "", "uint32")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0UL)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 4294967295UL)); } break; case 4: @@ -34265,7 +33039,9 @@ class Test_TC_DGWIFI_2_3Suite : public TestCommand { uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("packetMulticastRxCount", value, 0UL)); + VerifyOrReturn(CheckConstraintType("value", "", "uint32")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0UL)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 4294967295UL)); } break; case 5: @@ -34273,7 +33049,9 @@ class Test_TC_DGWIFI_2_3Suite : public TestCommand { uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("packetMulticastTxCount", value, 0UL)); + VerifyOrReturn(CheckConstraintType("value", "", "uint32")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0UL)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 4294967295UL)); } break; case 6: @@ -34281,7 +33059,9 @@ class Test_TC_DGWIFI_2_3Suite : public TestCommand { uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("packetUnicastRxCount", value, 0UL)); + VerifyOrReturn(CheckConstraintType("value", "", "uint32")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0UL)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 4294967295UL)); } break; case 7: @@ -34289,7 +33069,9 @@ class Test_TC_DGWIFI_2_3Suite : public TestCommand { uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("packetUnicastTxCount", value, 0UL)); + VerifyOrReturn(CheckConstraintType("value", "", "uint32")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0UL)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 4294967295UL)); } break; default: @@ -67742,6 +66524,62 @@ class Test_TC_DD_3_20Suite : public TestCommand } }; +class Test_TC_DD_3_21Suite : public TestCommand +{ +public: + Test_TC_DD_3_21Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DD_3_21", 0, credsIssuerConfig) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_DD_3_21Suite() {} + + chip::System::Clock::Timeout GetWaitDuration() const override + { + return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); + } + +private: + chip::Optional mNodeId; + chip::Optional mCluster; + chip::Optional mEndpoint; + chip::Optional mTimeout; + + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } + + // + // Tests methods + // + + void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override + { + bool shouldContinue = false; + + switch (mTestIndex - 1) + { + default: + LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + } + + if (shouldContinue) + { + ContinueOnChipMainThread(CHIP_NO_ERROR); + } + } + + CHIP_ERROR DoTestStep(uint16_t testIndex) override + { + using namespace chip::app::Clusters; + switch (testIndex) + { + } + return CHIP_NO_ERROR; + } +}; + class TestGroupDemoCommandSuite : public TestCommand { public: @@ -76014,6 +74852,7 @@ class Test_TC_CADMIN_1_3Suite : public TestCommand { case 0: { LogStep(0, "TH_CR1 starts a commissioning process with DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; @@ -76021,7 +74860,7 @@ class Test_TC_CADMIN_1_3Suite : public TestCommand } case 1: { LogStep(1, "TH_CR1 opens a commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; value.commissioningTimeout = 180U; @@ -76065,6 +74904,7 @@ class Test_TC_CADMIN_1_3Suite : public TestCommand } case 5: { LogStep(5, "TH_CR2 starts a commissioning process with DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -76114,7 +74954,7 @@ class Test_TC_CADMIN_1_3Suite : public TestCommand } case 12: { LogStep(12, "TH_CR2 opens a commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; value.commissioningTimeout = 180U; @@ -76148,7 +74988,7 @@ class Test_TC_CADMIN_1_3Suite : public TestCommand } case 15: { LogStep(15, "TH_CR2 opens a commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; value.commissioningTimeout = 180U; @@ -76169,6 +75009,7 @@ class Test_TC_CADMIN_1_3Suite : public TestCommand } case 16: { LogStep(16, "TH_CR1 starts a commissioning process with DUT_CE before the timeout from step 12"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -76339,6 +75180,7 @@ class Test_TC_CADMIN_1_4Suite : public TestCommand { case 0: { LogStep(0, "TH_CR1 starts a commissioning process with DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; @@ -76346,7 +75188,7 @@ class Test_TC_CADMIN_1_4Suite : public TestCommand } case 1: { LogStep(1, "TH_CR1 opens a commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; value.commissioningTimeout = 180U; @@ -76381,6 +75223,7 @@ class Test_TC_CADMIN_1_4Suite : public TestCommand } case 5: { LogStep(5, "TH_CR2 starts a commissioning process with DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -76430,7 +75273,7 @@ class Test_TC_CADMIN_1_4Suite : public TestCommand } case 12: { LogStep(12, "TH_CR2 opens a commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; value.commissioningTimeout = 180U; @@ -76455,7 +75298,7 @@ class Test_TC_CADMIN_1_4Suite : public TestCommand } case 15: { LogStep(15, "TH_CR2 opens a commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; value.commissioningTimeout = 180U; @@ -76467,6 +75310,7 @@ class Test_TC_CADMIN_1_4Suite : public TestCommand } case 16: { LogStep(16, "TH_CR1 starts a commissioning process with DUT_CE before the timeout from step 12"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -76565,7 +75409,7 @@ class Test_TC_CADMIN_1_5Suite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 12: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 1)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_FAILURE)); break; case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); @@ -76595,6 +75439,7 @@ class Test_TC_CADMIN_1_5Suite : public TestCommand { case 0: { LogStep(0, "TH_CR1 starts a commissioning process with DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; @@ -76602,7 +75447,7 @@ class Test_TC_CADMIN_1_5Suite : public TestCommand } case 1: { LogStep(1, "TH_CR1 opens a new commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; value.commissioningTimeout = 180U; @@ -76630,7 +75475,7 @@ class Test_TC_CADMIN_1_5Suite : public TestCommand } case 3: { LogStep(3, "TH_CR2 starts a commissioning process with DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -76639,7 +75484,7 @@ class Test_TC_CADMIN_1_5Suite : public TestCommand } case 4: { LogStep(4, "TH_CR1 opens a new commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; value.commissioningTimeout = 180U; @@ -76660,7 +75505,7 @@ class Test_TC_CADMIN_1_5Suite : public TestCommand } case 5: { LogStep(5, "TH_CR1 revokes the commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C02.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::RevokeCommissioning::Type value; return SendCommand(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, @@ -76671,6 +75516,7 @@ class Test_TC_CADMIN_1_5Suite : public TestCommand } case 6: { LogStep(6, "TH_CR2 starts a commissioning process with DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -76679,7 +75525,7 @@ class Test_TC_CADMIN_1_5Suite : public TestCommand } case 7: { LogStep(7, "TH_CR1 revokes the commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C02.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::RevokeCommissioning::Type value; return SendCommand(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, @@ -76704,8 +75550,8 @@ class Test_TC_CADMIN_1_5Suite : public TestCommand chip::NullOptional); } case 10: { - LogStep(10, "TH_CR1 opens a new commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(10, "TH_CR1 opens a new commissioning window on DUT_CE using wrong PakeVerifier value"); + VerifyOrDo(!ShouldSkip("CADMIN.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; value.commissioningTimeout = 180U; @@ -76726,7 +75572,7 @@ class Test_TC_CADMIN_1_5Suite : public TestCommand } case 11: { LogStep(11, "TH_CR1 opens a new commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; value.commissioningTimeout = 180U; @@ -76747,7 +75593,7 @@ class Test_TC_CADMIN_1_5Suite : public TestCommand } case 12: { LogStep(12, "TH_CR1 opens a new commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; value.commissioningTimeout = 180U; @@ -76768,7 +75614,7 @@ class Test_TC_CADMIN_1_5Suite : public TestCommand } case 13: { LogStep(13, "TH_CR2 starts a commissioning process with DUT_CE"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP && CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -76777,7 +75623,7 @@ class Test_TC_CADMIN_1_5Suite : public TestCommand } case 14: { LogStep(14, "TH_CR1 tries to revoke the commissioning window on DUT_CE using RevokeCommissioning command"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0002 && PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C02.Rsp && PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::RevokeCommissioning::Type value; return SendCommand(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, @@ -76788,6 +75634,7 @@ class Test_TC_CADMIN_1_5Suite : public TestCommand } case 15: { LogStep(15, "TH_CR3 starts a commissioning process with DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId3.HasValue() ? mNodeId3.Value() : 12586990ULL; @@ -76883,7 +75730,7 @@ class Test_TC_CADMIN_1_6Suite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 1)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_FAILURE)); break; case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); @@ -76917,6 +75764,7 @@ class Test_TC_CADMIN_1_6Suite : public TestCommand { case 0: { LogStep(0, "TH_CR1 starts a commissioning process with DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; @@ -76924,7 +75772,7 @@ class Test_TC_CADMIN_1_6Suite : public TestCommand } case 1: { LogStep(1, "TH_CR1 opens a commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; value.commissioningTimeout = 180U; @@ -76935,7 +75783,7 @@ class Test_TC_CADMIN_1_6Suite : public TestCommand ); } case 2: { - LogStep(2, "Wait for PIXIT_COMM_WIN(180) + 10"); + LogStep(2, "Wait for PIXIT.CADMIN.CwDuration + 10"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 190000UL; @@ -76943,7 +75791,7 @@ class Test_TC_CADMIN_1_6Suite : public TestCommand } case 3: { LogStep(3, "Commission from beta"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -76952,7 +75800,7 @@ class Test_TC_CADMIN_1_6Suite : public TestCommand } case 4: { LogStep(4, "TH_CR1 opens a commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; value.commissioningTimeout = 180U; @@ -76964,7 +75812,7 @@ class Test_TC_CADMIN_1_6Suite : public TestCommand } case 5: { LogStep(5, "TH_CR1 revokes the commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C02.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::RevokeCommissioning::Type value; return SendCommand(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, @@ -76974,7 +75822,7 @@ class Test_TC_CADMIN_1_6Suite : public TestCommand ); } case 6: { - LogStep(6, "Commission from beta"); + LogStep(6, "TH_CR2 starts a commissioning process with DUT_CE"); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -76983,7 +75831,7 @@ class Test_TC_CADMIN_1_6Suite : public TestCommand } case 7: { LogStep(7, "TH_CR1 revokes the commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C02.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::RevokeCommissioning::Type value; return SendCommand(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, @@ -77009,7 +75857,7 @@ class Test_TC_CADMIN_1_6Suite : public TestCommand } case 10: { LogStep(10, "TH_CR1 opens a commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; value.commissioningTimeout = 180U; @@ -77020,8 +75868,8 @@ class Test_TC_CADMIN_1_6Suite : public TestCommand ); } case 11: { - LogStep(11, "TH_CR1 opens a commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(11, "TH_CR1 opens another commissioning window on DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; value.commissioningTimeout = 180U; @@ -77041,6 +75889,7 @@ class Test_TC_CADMIN_1_6Suite : public TestCommand } case 13: { LogStep(13, "TH_CR2 starts a commissioning process on DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -77048,7 +75897,7 @@ class Test_TC_CADMIN_1_6Suite : public TestCommand } case 14: { LogStep(14, "TH_CR1 tries to revoke the commissioning window on DUT_CE using RevokeCommissioning command"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C02.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::RevokeCommissioning::Type value; return SendCommand(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, @@ -77059,6 +75908,7 @@ class Test_TC_CADMIN_1_6Suite : public TestCommand } case 15: { LogStep(15, "TH_CR3 starts a commissioning process with DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId3.HasValue() ? mNodeId3.Value() : 12586990ULL; @@ -77225,6 +76075,7 @@ class Test_TC_CADMIN_1_9Suite : public TestCommand { case 0: { LogStep(0, "TH_CR1 starts a commissioning process with DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; @@ -77232,7 +76083,7 @@ class Test_TC_CADMIN_1_9Suite : public TestCommand } case 1: { LogStep(1, "TH_CR1 opens a new commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; value.commissioningTimeout = 900U; @@ -77253,6 +76104,7 @@ class Test_TC_CADMIN_1_9Suite : public TestCommand } case 2: { LogStep(2, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -77261,6 +76113,7 @@ class Test_TC_CADMIN_1_9Suite : public TestCommand } case 3: { LogStep(3, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -77269,6 +76122,7 @@ class Test_TC_CADMIN_1_9Suite : public TestCommand } case 4: { LogStep(4, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -77277,6 +76131,7 @@ class Test_TC_CADMIN_1_9Suite : public TestCommand } case 5: { LogStep(5, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -77285,6 +76140,7 @@ class Test_TC_CADMIN_1_9Suite : public TestCommand } case 6: { LogStep(6, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -77293,6 +76149,7 @@ class Test_TC_CADMIN_1_9Suite : public TestCommand } case 7: { LogStep(7, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -77301,6 +76158,7 @@ class Test_TC_CADMIN_1_9Suite : public TestCommand } case 8: { LogStep(8, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -77309,6 +76167,7 @@ class Test_TC_CADMIN_1_9Suite : public TestCommand } case 9: { LogStep(9, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -77317,6 +76176,7 @@ class Test_TC_CADMIN_1_9Suite : public TestCommand } case 10: { LogStep(10, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -77325,6 +76185,7 @@ class Test_TC_CADMIN_1_9Suite : public TestCommand } case 11: { LogStep(11, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -77333,6 +76194,7 @@ class Test_TC_CADMIN_1_9Suite : public TestCommand } case 12: { LogStep(12, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -77341,6 +76203,7 @@ class Test_TC_CADMIN_1_9Suite : public TestCommand } case 13: { LogStep(13, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -77349,6 +76212,7 @@ class Test_TC_CADMIN_1_9Suite : public TestCommand } case 14: { LogStep(14, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -77357,6 +76221,7 @@ class Test_TC_CADMIN_1_9Suite : public TestCommand } case 15: { LogStep(15, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -77365,6 +76230,7 @@ class Test_TC_CADMIN_1_9Suite : public TestCommand } case 16: { LogStep(16, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -77373,6 +76239,7 @@ class Test_TC_CADMIN_1_9Suite : public TestCommand } case 17: { LogStep(17, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -77381,6 +76248,7 @@ class Test_TC_CADMIN_1_9Suite : public TestCommand } case 18: { LogStep(18, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -77389,6 +76257,7 @@ class Test_TC_CADMIN_1_9Suite : public TestCommand } case 19: { LogStep(19, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -77397,6 +76266,7 @@ class Test_TC_CADMIN_1_9Suite : public TestCommand } case 20: { LogStep(20, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -77405,6 +76275,7 @@ class Test_TC_CADMIN_1_9Suite : public TestCommand } case 21: { LogStep(21, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -77413,6 +76284,7 @@ class Test_TC_CADMIN_1_9Suite : public TestCommand } case 22: { LogStep(22, "TH_CR2 starts a commissioning process with DUT_CE using valid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; @@ -77421,6 +76293,7 @@ class Test_TC_CADMIN_1_9Suite : public TestCommand } case 23: { LogStep(23, "TH_CR3 starts a commissioning process with DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; value.nodeId = mNodeId3.HasValue() ? mNodeId3.Value() : 12586990ULL; @@ -77436,7 +76309,7 @@ class Test_TC_CADMIN_1_10Suite : public TestCommand { public: Test_TC_CADMIN_1_10Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_CADMIN_1_10", 24, credsIssuerConfig) + TestCommand("Test_TC_CADMIN_1_10", 23, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); @@ -77567,10 +76440,368 @@ class Test_TC_CADMIN_1_10Suite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_FAILURE)); shouldContinue = true; break; - case 23: + default: + LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + } + + if (shouldContinue) + { + ContinueOnChipMainThread(CHIP_NO_ERROR); + } + } + + CHIP_ERROR DoTestStep(uint16_t testIndex) override + { + using namespace chip::app::Clusters; + switch (testIndex) + { + case 0: { + LogStep(0, "TH_CR1 starts a commissioning process with DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + return WaitForCommissionee(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "TH_CR1 opens a commissioning window on DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; + value.commissioningTimeout = 900U; + return SendCommand(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, + AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Id, value, + chip::Optional(10000), chip::NullOptional + + ); + } + case 2: { + LogStep(2, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); + return PairWithCode(kIdentityBeta, value); + } + case 3: { + LogStep(3, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); + return PairWithCode(kIdentityBeta, value); + } + case 4: { + LogStep(4, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); + return PairWithCode(kIdentityBeta, value); + } + case 5: { + LogStep(5, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); + return PairWithCode(kIdentityBeta, value); + } + case 6: { + LogStep(6, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); + return PairWithCode(kIdentityBeta, value); + } + case 7: { + LogStep(7, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); + return PairWithCode(kIdentityBeta, value); + } + case 8: { + LogStep(8, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); + return PairWithCode(kIdentityBeta, value); + } + case 9: { + LogStep(9, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); + return PairWithCode(kIdentityBeta, value); + } + case 10: { + LogStep(10, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); + return PairWithCode(kIdentityBeta, value); + } + case 11: { + LogStep(11, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); + return PairWithCode(kIdentityBeta, value); + } + case 12: { + LogStep(12, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); + return PairWithCode(kIdentityBeta, value); + } + case 13: { + LogStep(13, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); + return PairWithCode(kIdentityBeta, value); + } + case 14: { + LogStep(14, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); + return PairWithCode(kIdentityBeta, value); + } + case 15: { + LogStep(15, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); + return PairWithCode(kIdentityBeta, value); + } + case 16: { + LogStep(16, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); + return PairWithCode(kIdentityBeta, value); + } + case 17: { + LogStep(17, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); + return PairWithCode(kIdentityBeta, value); + } + case 18: { + LogStep(18, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); + return PairWithCode(kIdentityBeta, value); + } + case 19: { + LogStep(19, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); + return PairWithCode(kIdentityBeta, value); + } + case 20: { + LogStep(20, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); + return PairWithCode(kIdentityBeta, value); + } + case 21: { + LogStep(21, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); + return PairWithCode(kIdentityBeta, value); + } + case 22: { + LogStep(22, "TH_CR2 attempts to do PASE to DUT_CE using the correct onboarding payload"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + value.payload = mPayload.HasValue() ? mPayload.Value() : chip::Span("MT:0000000000I31506010", 22); + return PairWithCode(kIdentityBeta, value); + } + } + return CHIP_NO_ERROR; + } +}; + +class Test_TC_CADMIN_1_13Suite : public TestCommand +{ +public: + Test_TC_CADMIN_1_13Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_CADMIN_1_13", 17, credsIssuerConfig) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + AddArgument("nodeIdForDuplicateCommissioning", 0, UINT64_MAX, &mNodeIdForDuplicateCommissioning); + AddArgument("nodeId2", 0, UINT64_MAX, &mNodeId2); + AddArgument("nodeId3", 0, UINT64_MAX, &mNodeId3); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("discriminator", 0, UINT16_MAX, &mDiscriminator); + AddArgument("payload", &mPayload); + } + + ~Test_TC_CADMIN_1_13Suite() {} + + chip::System::Clock::Timeout GetWaitDuration() const override { return chip::System::Clock::Seconds16(mTimeout.ValueOr(500)); } + +private: + chip::Optional mNodeId; + chip::Optional mTimeout; + chip::Optional mNodeIdForDuplicateCommissioning; + chip::Optional mNodeId2; + chip::Optional mNodeId3; + chip::Optional mEndpoint; + chip::Optional mDiscriminator; + chip::Optional mPayload; + + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } + + // + // Tests methods + // + + void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override + { + bool shouldContinue = false; + + switch (mTestIndex - 1) + { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 1: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_FAILURE)); + break; + case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList< + chip::app::Clusters::OperationalCredentials::Structs::FabricDescriptor::DecodableType> + value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + { + auto iter_0 = value.begin(); + VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 0)); + VerifyOrReturn(CheckValueAsString("fabrics[0].label", iter_0.GetValue().label, chip::CharSpan("", 0))); + VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 1)); + VerifyOrReturn(CheckValueAsString("fabrics[1].label", iter_0.GetValue().label, chip::CharSpan("", 0))); + VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 2)); + VerifyOrReturn(CheckValueAsString("fabrics[2].label", iter_0.GetValue().label, chip::CharSpan("", 0))); + VerifyOrReturn(CheckNoMoreListItems("fabrics", iter_0, 3)); + } + VerifyOrReturn(CheckConstraintType("value", "", "list")); + } + break; + case 10: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 11: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 12: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_FAILURE)); + break; + case 13: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList< + chip::app::Clusters::OperationalCredentials::Structs::FabricDescriptor::DecodableType> + value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + { + auto iter_0 = value.begin(); + VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 0)); + VerifyOrReturn(CheckValueAsString("fabrics[0].label", iter_0.GetValue().label, chip::CharSpan("", 0))); + VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 1)); + VerifyOrReturn(CheckValueAsString("fabrics[1].label", iter_0.GetValue().label, chip::CharSpan("", 0))); + VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 2)); + VerifyOrReturn(CheckValueAsString("fabrics[2].label", iter_0.GetValue().label, chip::CharSpan("", 0))); + VerifyOrReturn(CheckNoMoreListItems("fabrics", iter_0, 3)); + } + VerifyOrReturn(CheckConstraintType("value", "", "list")); + } + break; + case 14: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 15: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 16: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_FAILURE)); + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -77588,6 +76819,7 @@ class Test_TC_CADMIN_1_10Suite : public TestCommand { case 0: { LogStep(0, "TH_CR1 starts a commissioning process with DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; @@ -77595,356 +76827,7 @@ class Test_TC_CADMIN_1_10Suite : public TestCommand } case 1: { LogStep(1, "TH_CR1 opens a commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; - value.commissioningTimeout = 900U; - return SendCommand(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, - AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Id, value, - chip::Optional(10000), chip::NullOptional - - ); - } - case 2: { - LogStep(2, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); - ListFreer listFreer; - chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; - value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; - value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); - return PairWithCode(kIdentityBeta, value); - } - case 3: { - LogStep(3, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); - ListFreer listFreer; - chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; - value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; - value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); - return PairWithCode(kIdentityBeta, value); - } - case 4: { - LogStep(4, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); - ListFreer listFreer; - chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; - value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; - value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); - return PairWithCode(kIdentityBeta, value); - } - case 5: { - LogStep(5, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); - ListFreer listFreer; - chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; - value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; - value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); - return PairWithCode(kIdentityBeta, value); - } - case 6: { - LogStep(6, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); - ListFreer listFreer; - chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; - value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; - value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); - return PairWithCode(kIdentityBeta, value); - } - case 7: { - LogStep(7, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); - ListFreer listFreer; - chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; - value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; - value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); - return PairWithCode(kIdentityBeta, value); - } - case 8: { - LogStep(8, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); - ListFreer listFreer; - chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; - value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; - value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); - return PairWithCode(kIdentityBeta, value); - } - case 9: { - LogStep(9, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); - ListFreer listFreer; - chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; - value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; - value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); - return PairWithCode(kIdentityBeta, value); - } - case 10: { - LogStep(10, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); - ListFreer listFreer; - chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; - value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; - value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); - return PairWithCode(kIdentityBeta, value); - } - case 11: { - LogStep(11, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); - ListFreer listFreer; - chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; - value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; - value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); - return PairWithCode(kIdentityBeta, value); - } - case 12: { - LogStep(12, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); - ListFreer listFreer; - chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; - value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; - value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); - return PairWithCode(kIdentityBeta, value); - } - case 13: { - LogStep(13, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); - ListFreer listFreer; - chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; - value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; - value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); - return PairWithCode(kIdentityBeta, value); - } - case 14: { - LogStep(14, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); - ListFreer listFreer; - chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; - value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; - value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); - return PairWithCode(kIdentityBeta, value); - } - case 15: { - LogStep(15, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); - ListFreer listFreer; - chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; - value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; - value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); - return PairWithCode(kIdentityBeta, value); - } - case 16: { - LogStep(16, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); - ListFreer listFreer; - chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; - value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; - value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); - return PairWithCode(kIdentityBeta, value); - } - case 17: { - LogStep(17, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); - ListFreer listFreer; - chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; - value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; - value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); - return PairWithCode(kIdentityBeta, value); - } - case 18: { - LogStep(18, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); - ListFreer listFreer; - chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; - value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; - value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); - return PairWithCode(kIdentityBeta, value); - } - case 19: { - LogStep(19, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); - ListFreer listFreer; - chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; - value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; - value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); - return PairWithCode(kIdentityBeta, value); - } - case 20: { - LogStep(20, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); - ListFreer listFreer; - chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; - value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; - value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); - return PairWithCode(kIdentityBeta, value); - } - case 21: { - LogStep(21, "TH_CR2 starts a commissioning process with DUT_CE using Invalid setup code"); - ListFreer listFreer; - chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; - value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; - value.payload = mPayload2.HasValue() ? mPayload2.Value() : chip::Span("MT:0000000000I.0648G00", 22); - return PairWithCode(kIdentityBeta, value); - } - case 22: { - LogStep(22, "TH_CR2 starts a commissioning process with DUT_CE using valid setup code"); - ListFreer listFreer; - chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; - value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; - value.payload = mPayload.HasValue() ? mPayload.Value() : chip::Span("MT:0000000000I31506010", 22); - return PairWithCode(kIdentityBeta, value); - } - case 23: { - LogStep(23, "TH_CR3 starts a commissioning process with DUT_CE"); - ListFreer listFreer; - chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; - value.nodeId = mNodeId3.HasValue() ? mNodeId3.Value() : 12586990ULL; - value.payload = mPayload.HasValue() ? mPayload.Value() : chip::Span("MT:0000000000I31506010", 22); - return PairWithCode(kIdentityGamma, value); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_CADMIN_1_13Suite : public TestCommand -{ -public: - Test_TC_CADMIN_1_13Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_CADMIN_1_13", 17, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - AddArgument("nodeIdForDuplicateCommissioning", 0, UINT64_MAX, &mNodeIdForDuplicateCommissioning); - AddArgument("nodeId2", 0, UINT64_MAX, &mNodeId2); - AddArgument("nodeId3", 0, UINT64_MAX, &mNodeId3); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("discriminator", 0, UINT16_MAX, &mDiscriminator); - AddArgument("payload", &mPayload); - } - - ~Test_TC_CADMIN_1_13Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override { return chip::System::Clock::Seconds16(mTimeout.ValueOr(500)); } - -private: - chip::Optional mNodeId; - chip::Optional mTimeout; - chip::Optional mNodeIdForDuplicateCommissioning; - chip::Optional mNodeId2; - chip::Optional mNodeId3; - chip::Optional mEndpoint; - chip::Optional mDiscriminator; - chip::Optional mPayload; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - case 0: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 1: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 2: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 6: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 8: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_FAILURE)); - break; - case 9: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::DecodableList< - chip::app::Clusters::OperationalCredentials::Structs::FabricDescriptor::DecodableType> - value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - { - auto iter_0 = value.begin(); - VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 0)); - VerifyOrReturn(CheckValueAsString("fabrics[0].label", iter_0.GetValue().label, chip::CharSpan("", 0))); - VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 1)); - VerifyOrReturn(CheckValueAsString("fabrics[1].label", iter_0.GetValue().label, chip::CharSpan("", 0))); - VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 2)); - VerifyOrReturn(CheckValueAsString("fabrics[2].label", iter_0.GetValue().label, chip::CharSpan("", 0))); - VerifyOrReturn(CheckNoMoreListItems("fabrics", iter_0, 3)); - } - VerifyOrReturn(CheckConstraintType("value", "", "list")); - } - break; - case 10: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 12: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_FAILURE)); - break; - case 13: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::DecodableList< - chip::app::Clusters::OperationalCredentials::Structs::FabricDescriptor::DecodableType> - value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - { - auto iter_0 = value.begin(); - VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 0)); - VerifyOrReturn(CheckValueAsString("fabrics[0].label", iter_0.GetValue().label, chip::CharSpan("", 0))); - VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 1)); - VerifyOrReturn(CheckValueAsString("fabrics[1].label", iter_0.GetValue().label, chip::CharSpan("", 0))); - VerifyOrReturn(CheckNextListItemDecodes("fabrics", iter_0, 2)); - VerifyOrReturn(CheckValueAsString("fabrics[2].label", iter_0.GetValue().label, chip::CharSpan("", 0))); - VerifyOrReturn(CheckNoMoreListItems("fabrics", iter_0, 3)); - } - VerifyOrReturn(CheckConstraintType("value", "", "list")); - } - break; - case 14: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 15: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 16: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_FAILURE)); - break; - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - { - case 0: { - LogStep(0, "TH_CR1 starts a commissioning process with DUT_CE"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; - value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; - return WaitForCommissionee(kIdentityAlpha, value); - } - case 1: { - LogStep(1, "TH_CR1 opens a commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; value.commissioningTimeout = 180U; @@ -77964,6 +76847,7 @@ class Test_TC_CADMIN_1_13Suite : public TestCommand } case 3: { LogStep(3, "TH_CR3 starts a commissioning process with DUT_CE"); + VerifyOrDo(!ShouldSkip("CADMIN.S"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; value.nodeId = mNodeId3.HasValue() ? mNodeId3.Value() : 12586990ULL; @@ -77971,7 +76855,7 @@ class Test_TC_CADMIN_1_13Suite : public TestCommand } case 4: { LogStep(4, "TH_CR1 opens a commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; value.commissioningTimeout = 180U; @@ -77998,7 +76882,7 @@ class Test_TC_CADMIN_1_13Suite : public TestCommand } case 7: { LogStep(7, "TH_CR1 opens a commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; value.commissioningTimeout = 180U; @@ -78010,7 +76894,7 @@ class Test_TC_CADMIN_1_13Suite : public TestCommand } case 8: { LogStep(8, "TH_CR1 opens a new commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; value.commissioningTimeout = 180U; @@ -78044,7 +76928,7 @@ class Test_TC_CADMIN_1_13Suite : public TestCommand } case 11: { LogStep(11, "TH_CR1 re-opens new commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; value.commissioningTimeout = 180U; @@ -78065,7 +76949,7 @@ class Test_TC_CADMIN_1_13Suite : public TestCommand } case 12: { LogStep(12, "TH_CR3 opens a new commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; value.commissioningTimeout = 180U; @@ -78099,7 +76983,7 @@ class Test_TC_CADMIN_1_13Suite : public TestCommand } case 15: { LogStep(15, "TH_CR1 opens a new commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; value.commissioningTimeout = 180U; @@ -78120,7 +77004,7 @@ class Test_TC_CADMIN_1_13Suite : public TestCommand } case 16: { LogStep(16, "TH_CR2 opens a new commissioning window on DUT_CE"); - VerifyOrDo(!ShouldSkip("CADMIN.S.C0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CADMIN.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; value.commissioningTimeout = 180U; @@ -82842,6 +81726,1064 @@ class Test_TC_CC_9_4Suite : public TestCommand } }; +class Test_TC_CC_3_1Suite : public TestCommand +{ +public: + Test_TC_CC_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_3_1", 34, credsIssuerConfig) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_CC_3_1Suite() {} + + chip::System::Clock::Timeout GetWaitDuration() const override { return chip::System::Clock::Seconds16(mTimeout.ValueOr(150)); } + +private: + chip::Optional mNodeId; + chip::Optional mCluster; + chip::Optional mEndpoint; + chip::Optional mTimeout; + + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } + + // + // Tests methods + // + + void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override + { + bool shouldContinue = false; + + switch (mTestIndex - 1) + { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 1: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + bool value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("onOff", value, 1)); + } + break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); + } + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); + } + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 8: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); + } + break; + case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 10: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("currentHue", value, 150U)); + } + break; + case 11: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 12: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 13: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); + } + break; + case 14: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 15: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); + } + break; + case 16: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 17: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("currentHue", value, 200U)); + } + break; + case 18: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 19: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 20: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); + } + break; + case 21: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 22: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); + } + break; + case 23: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 24: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("currentHue", value, 250U)); + } + break; + case 25: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 26: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 27: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); + } + break; + case 28: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 29: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); + } + break; + case 30: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 31: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("currentHue", value, 200U)); + } + break; + case 32: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 33: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + bool value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("onOff", value, 0)); + } + break; + default: + LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + } + + if (shouldContinue) + { + ContinueOnChipMainThread(CHIP_NO_ERROR); + } + } + + CHIP_ERROR DoTestStep(uint16_t testIndex) override + { + using namespace chip::app::Clusters; + switch (testIndex) + { + case 0: { + LogStep(0, "Wait for the commissioned device to be retrieved"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + return WaitForCommissionee(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "Turn on light for color control tests"); + ListFreer listFreer; + chip::app::Clusters::OnOff::Commands::On::Type value; + return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id, value, chip::NullOptional + + ); + } + case 2: { + LogStep(2, "Check on/off attribute value is true after on command"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); + } + case 3: { + LogStep(3, "Reads CurrentHue attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, + chip::NullOptional); + } + case 4: { + LogStep(4, "Move to hue shortest distance command"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::ColorControl::Commands::MoveToHue::Type value; + value.hue = 150U; + value.direction = static_cast(0); + value.transitionTime = 300U; + value.optionsMask = 0U; + value.optionsOverride = 0U; + return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToHue::Id, value, + chip::NullOptional + + ); + } + case 5: { + LogStep(5, "Wait 5000ms"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 5000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 6: { + LogStep(6, "Check current hue attribute value matched the value sent by the last command"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, + chip::NullOptional); + } + case 7: { + LogStep(7, "Wait 5000ms"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 5000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 8: { + LogStep(8, "Check current hue attribute value matched the value sent by the last command"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, + chip::NullOptional); + } + case 9: { + LogStep(9, "Wait 20s"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 20000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 10: { + LogStep(10, "Check current hue attribute value matched the value sent by the last command"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, + chip::NullOptional); + } + case 11: { + LogStep(11, "Move to hue longest distance command"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::ColorControl::Commands::MoveToHue::Type value; + value.hue = 200U; + value.direction = static_cast(1); + value.transitionTime = 300U; + value.optionsMask = 0U; + value.optionsOverride = 0U; + return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToHue::Id, value, + chip::NullOptional + + ); + } + case 12: { + LogStep(12, "Wait 5000ms"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 5000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 13: { + LogStep(13, "Check current hue attribute value matched the value sent by the last command"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, + chip::NullOptional); + } + case 14: { + LogStep(14, "Wait 5000ms"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 5000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 15: { + LogStep(15, "Check current hue attribute value matched the value sent by the last command"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, + chip::NullOptional); + } + case 16: { + LogStep(16, "Wait 20s"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 20000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 17: { + LogStep(17, "Check current hue attribute value matched the value sent by the last command"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, + chip::NullOptional); + } + case 18: { + LogStep(18, "Move to hue up command"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::ColorControl::Commands::MoveToHue::Type value; + value.hue = 250U; + value.direction = static_cast(2); + value.transitionTime = 300U; + value.optionsMask = 0U; + value.optionsOverride = 0U; + return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToHue::Id, value, + chip::NullOptional + + ); + } + case 19: { + LogStep(19, "Wait 5000ms"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 5000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 20: { + LogStep(20, "Check current hue attribute value matched the value sent by the last command"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, + chip::NullOptional); + } + case 21: { + LogStep(21, "Wait 5000ms"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 5000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 22: { + LogStep(22, "Check current hue attribute value matched the value sent by the last command"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, + chip::NullOptional); + } + case 23: { + LogStep(23, "Wait 20s"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 20000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 24: { + LogStep(24, "Check current hue attribute value matched the value sent by the last command"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, + chip::NullOptional); + } + case 25: { + LogStep(25, "Move to hue down command"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::ColorControl::Commands::MoveToHue::Type value; + value.hue = 200U; + value.direction = static_cast(3); + value.transitionTime = 300U; + value.optionsMask = 0U; + value.optionsOverride = 0U; + return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToHue::Id, value, + chip::NullOptional + + ); + } + case 26: { + LogStep(26, "Wait 5000ms"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 5000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 27: { + LogStep(27, "Check current hue attribute value matched the value sent by the last command"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, + chip::NullOptional); + } + case 28: { + LogStep(28, "Wait 5000ms"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 5000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 29: { + LogStep(29, "Check current hue attribute value matched the value sent by the last command"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, + chip::NullOptional); + } + case 30: { + LogStep(30, "Wait 20s"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 20000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 31: { + LogStep(31, "Check current hue attribute value matched the value sent by the last command"); + VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, + chip::NullOptional); + } + case 32: { + LogStep(32, "Turn off light that we turned on"); + ListFreer listFreer; + chip::app::Clusters::OnOff::Commands::Off::Type value; + return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::Off::Id, value, chip::NullOptional + + ); + } + case 33: { + LogStep(33, "Check on/off attribute value is false after off command"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); + } + } + return CHIP_NO_ERROR; + } +}; + +class Test_TC_CC_7_1Suite : public TestCommand +{ +public: + Test_TC_CC_7_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_7_1", 35, credsIssuerConfig) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_CC_7_1Suite() {} + + chip::System::Clock::Timeout GetWaitDuration() const override { return chip::System::Clock::Seconds16(mTimeout.ValueOr(150)); } + +private: + chip::Optional mNodeId; + chip::Optional mCluster; + chip::Optional mEndpoint; + chip::Optional mTimeout; + + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } + + // + // Tests methods + // + + void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override + { + bool shouldContinue = false; + + switch (mTestIndex - 1) + { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 1: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + bool value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("onOff", value, 1)); + } + break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); + } + break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); + } + break; + case 8: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); + } + break; + case 10: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 11: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("enhancedCurrentHue", value, 1100U)); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); + } + break; + case 12: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 13: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 14: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); + } + break; + case 15: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 16: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); + } + break; + case 17: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 18: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("enhancedCurrentHue", value, 1150U)); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); + } + break; + case 19: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 20: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 21: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); + } + break; + case 22: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 23: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); + } + break; + case 24: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 25: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("enhancedCurrentHue", value, 1200U)); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); + } + break; + case 26: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 27: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 28: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); + } + break; + case 29: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 30: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); + } + break; + case 31: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 32: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("enhancedCurrentHue", value, 1300U)); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); + } + break; + case 33: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 34: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + bool value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("onOff", value, 0)); + } + break; + default: + LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + } + + if (shouldContinue) + { + ContinueOnChipMainThread(CHIP_NO_ERROR); + } + } + + CHIP_ERROR DoTestStep(uint16_t testIndex) override + { + using namespace chip::app::Clusters; + switch (testIndex) + { + case 0: { + LogStep(0, "Wait for the commissioned device to be retrieved"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + return WaitForCommissionee(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "Turn on light for color control tests"); + ListFreer listFreer; + chip::app::Clusters::OnOff::Commands::On::Type value; + return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id, value, chip::NullOptional + + ); + } + case 2: { + LogStep(2, "Check on/off attribute value is true after on command"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); + } + case 3: { + LogStep(3, "TH sends EnhancedMoveToHue command to DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.C40.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::ColorControl::Commands::EnhancedMoveToHue::Type value; + value.enhancedHue = 1025U; + value.direction = static_cast(0); + value.transitionTime = 0U; + value.optionsMask = 0U; + value.optionsOverride = 0U; + return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveToHue::Id, + value, chip::NullOptional + + ); + } + case 4: { + LogStep(4, "TH reads EnhancedCurrentHue attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, + true, chip::NullOptional); + } + case 5: { + LogStep(5, "TH sends EnhancedMoveToHue command to DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.C40.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::ColorControl::Commands::EnhancedMoveToHue::Type value; + value.enhancedHue = 1100U; + value.direction = static_cast(0); + value.transitionTime = 300U; + value.optionsMask = 0U; + value.optionsOverride = 0U; + return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveToHue::Id, + value, chip::NullOptional + + ); + } + case 6: { + LogStep(6, "Wait 5500ms"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 5500UL; + return WaitForMs(kIdentityAlpha, value); + } + case 7: { + LogStep(7, "TH reads EnhancedCurrentHue attribute from DUT periodically"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, + true, chip::NullOptional); + } + case 8: { + LogStep(8, "Wait 5500ms"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 5500UL; + return WaitForMs(kIdentityAlpha, value); + } + case 9: { + LogStep(9, "TH reads EnhancedCurrentHue attribute from DUT periodically"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, + true, chip::NullOptional); + } + case 10: { + LogStep(10, "Wait 20s"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 20000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 11: { + LogStep(11, "TH reads EnhancedCurrentHue attribute from DUT periodically"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, + true, chip::NullOptional); + } + case 12: { + LogStep(12, "TH sends EnhancedMoveToHue command to DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.C40.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::ColorControl::Commands::EnhancedMoveToHue::Type value; + value.enhancedHue = 1150U; + value.direction = static_cast(1); + value.transitionTime = 300U; + value.optionsMask = 0U; + value.optionsOverride = 0U; + return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveToHue::Id, + value, chip::NullOptional + + ); + } + case 13: { + LogStep(13, "Wait 5500ms"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 5500UL; + return WaitForMs(kIdentityAlpha, value); + } + case 14: { + LogStep(14, "TH reads EnhancedCurrentHue attribute from DUT periodically"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, + true, chip::NullOptional); + } + case 15: { + LogStep(15, "Wait 5500ms"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 5500UL; + return WaitForMs(kIdentityAlpha, value); + } + case 16: { + LogStep(16, "TH reads EnhancedCurrentHue attribute from DUT periodically"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, + true, chip::NullOptional); + } + case 17: { + LogStep(17, "Wait 20s"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 20000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 18: { + LogStep(18, "TH reads EnhancedCurrentHue attribute from DUT periodically"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, + true, chip::NullOptional); + } + case 19: { + LogStep(19, "TH sends EnhancedMoveToHue command to DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.C40.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::ColorControl::Commands::EnhancedMoveToHue::Type value; + value.enhancedHue = 1200U; + value.direction = static_cast(2); + value.transitionTime = 300U; + value.optionsMask = 0U; + value.optionsOverride = 0U; + return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveToHue::Id, + value, chip::NullOptional + + ); + } + case 20: { + LogStep(20, "Wait 5500ms"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 5500UL; + return WaitForMs(kIdentityAlpha, value); + } + case 21: { + LogStep(21, "TH reads EnhancedCurrentHue attribute from DUT periodically"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, + true, chip::NullOptional); + } + case 22: { + LogStep(22, "Wait 5500ms"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 5500UL; + return WaitForMs(kIdentityAlpha, value); + } + case 23: { + LogStep(23, "TH reads EnhancedCurrentHue attribute from DUT periodically"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, + true, chip::NullOptional); + } + case 24: { + LogStep(24, "Wait 20s"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 20000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 25: { + LogStep(25, "TH reads EnhancedCurrentHue attribute from DUT periodically"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, + true, chip::NullOptional); + } + case 26: { + LogStep(26, "TH sends EnhancedMoveToHue command to DUT "); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.C40.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::ColorControl::Commands::EnhancedMoveToHue::Type value; + value.enhancedHue = 1300U; + value.direction = static_cast(3); + value.transitionTime = 300U; + value.optionsMask = 0U; + value.optionsOverride = 0U; + return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveToHue::Id, + value, chip::NullOptional + + ); + } + case 27: { + LogStep(27, "Wait 5500ms"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 5500UL; + return WaitForMs(kIdentityAlpha, value); + } + case 28: { + LogStep(28, "TH reads EnhancedCurrentHue attribute from DUT periodically"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, + true, chip::NullOptional); + } + case 29: { + LogStep(29, "Wait 5500ms"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 5500UL; + return WaitForMs(kIdentityAlpha, value); + } + case 30: { + LogStep(30, "TH reads EnhancedCurrentHue attribute from DUT periodically"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, + true, chip::NullOptional); + } + case 31: { + LogStep(31, "Wait 20s"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 20000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 32: { + LogStep(32, "TH reads EnhancedCurrentHue attribute from DUT periodically"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, + true, chip::NullOptional); + } + case 33: { + LogStep(33, "Turn off light that we turned on"); + ListFreer listFreer; + chip::app::Clusters::OnOff::Commands::Off::Type value; + return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::Off::Id, value, chip::NullOptional + + ); + } + case 34: { + LogStep(34, "Check on/off attribute value is false after off command"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); + } + } + return CHIP_NO_ERROR; + } +}; + class Test_TC_CC_9_1Suite : public TestCommand { public: @@ -82863,14 +82805,14 @@ class Test_TC_CC_9_1Suite : public TestCommand chip::Optional mCluster; chip::Optional mEndpoint; - uint16_t ColorLoopStartEnhancedHue; - uint16_t ColorLoopStoredEnhancedHueValue1; - uint16_t ColorLoopStartEnhancedHue2; - uint16_t ColorLoopStoredEnhancedHueValue2; - uint16_t ColorLoopStartEnhancedHue3; - uint16_t ColorLoopStoredEnhancedHueValue3; - uint16_t ColorLoopStartEnhancedHue4; - uint16_t ColorLoopStoredEnhancedHue4; + uint16_t ColorLoopStartEnhancedHueStep5d; + uint16_t ColorLoopStoredEnhancedHueStep6c; + uint16_t ColorLoopStartEnhancedHueStep8d; + uint16_t ColorLoopStoredEnhancedHueStep9c; + uint16_t ColorLoopStartEnhancedHueStep12d; + uint16_t ColorLoopStoredEnhancedHueStep13c; + uint16_t ColorLoopStartEnhancedHueStep15d; + uint16_t ColorLoopStoredEnhancedHueStep16b; chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } @@ -82978,7 +82920,7 @@ class Test_TC_CC_9_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - ColorLoopStartEnhancedHue = value; + ColorLoopStartEnhancedHueStep5d = value; } break; case 18: @@ -82987,7 +82929,7 @@ class Test_TC_CC_9_1Suite : public TestCommand uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, ColorLoopStartEnhancedHue)); + VerifyOrReturn(CheckConstraintMinValue("value", value, ColorLoopStartEnhancedHueStep5d)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); } break; @@ -83001,7 +82943,7 @@ class Test_TC_CC_9_1Suite : public TestCommand uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, ColorLoopStartEnhancedHue)); + VerifyOrReturn(CheckConstraintMinValue("value", value, ColorLoopStartEnhancedHueStep5d)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); } break; @@ -83021,7 +82963,7 @@ class Test_TC_CC_9_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - ColorLoopStoredEnhancedHueValue1 = value; + ColorLoopStoredEnhancedHueStep6c = value; } break; case 24: @@ -83029,7 +82971,7 @@ class Test_TC_CC_9_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("enhancedCurrentHue", value, ColorLoopStoredEnhancedHueValue1)); + VerifyOrReturn(CheckValue("enhancedCurrentHue", value, ColorLoopStoredEnhancedHueStep6c)); } break; case 25: @@ -83071,7 +83013,7 @@ class Test_TC_CC_9_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - ColorLoopStartEnhancedHue2 = value; + ColorLoopStartEnhancedHueStep8d = value; } break; case 32: @@ -83080,7 +83022,7 @@ class Test_TC_CC_9_1Suite : public TestCommand uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, ColorLoopStartEnhancedHue2)); + VerifyOrReturn(CheckConstraintMinValue("value", value, ColorLoopStartEnhancedHueStep8d)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); } break; @@ -83094,7 +83036,7 @@ class Test_TC_CC_9_1Suite : public TestCommand uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, ColorLoopStartEnhancedHue2)); + VerifyOrReturn(CheckConstraintMinValue("value", value, ColorLoopStartEnhancedHueStep8d)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); } break; @@ -83114,7 +83056,7 @@ class Test_TC_CC_9_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - ColorLoopStoredEnhancedHueValue2 = value; + ColorLoopStoredEnhancedHueStep9c = value; } break; case 38: @@ -83122,7 +83064,7 @@ class Test_TC_CC_9_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("enhancedCurrentHue", value, ColorLoopStoredEnhancedHueValue2)); + VerifyOrReturn(CheckValue("enhancedCurrentHue", value, ColorLoopStoredEnhancedHueStep9c)); } break; case 39: @@ -83179,7 +83121,7 @@ class Test_TC_CC_9_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - ColorLoopStartEnhancedHue3 = value; + ColorLoopStartEnhancedHueStep12d = value; } break; case 49: @@ -83188,7 +83130,7 @@ class Test_TC_CC_9_1Suite : public TestCommand uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, ColorLoopStartEnhancedHue3)); + VerifyOrReturn(CheckConstraintMinValue("value", value, ColorLoopStartEnhancedHueStep12d)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); } break; @@ -83202,7 +83144,7 @@ class Test_TC_CC_9_1Suite : public TestCommand uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, ColorLoopStartEnhancedHue3)); + VerifyOrReturn(CheckConstraintMinValue("value", value, ColorLoopStartEnhancedHueStep12d)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); } break; @@ -83222,7 +83164,7 @@ class Test_TC_CC_9_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - ColorLoopStoredEnhancedHueValue3 = value; + ColorLoopStoredEnhancedHueStep13c = value; } break; case 55: @@ -83230,7 +83172,7 @@ class Test_TC_CC_9_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("enhancedCurrentHue", value, ColorLoopStoredEnhancedHueValue3)); + VerifyOrReturn(CheckValue("enhancedCurrentHue", value, ColorLoopStoredEnhancedHueStep13c)); } break; case 56: @@ -83272,7 +83214,7 @@ class Test_TC_CC_9_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - ColorLoopStartEnhancedHue4 = value; + ColorLoopStartEnhancedHueStep15d = value; } break; case 63: @@ -83281,7 +83223,7 @@ class Test_TC_CC_9_1Suite : public TestCommand uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, ColorLoopStartEnhancedHue3)); + VerifyOrReturn(CheckConstraintMinValue("value", value, ColorLoopStartEnhancedHueStep15d)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); } break; @@ -83295,7 +83237,7 @@ class Test_TC_CC_9_1Suite : public TestCommand uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, ColorLoopStartEnhancedHue4)); + VerifyOrReturn(CheckConstraintMinValue("value", value, ColorLoopStartEnhancedHueStep15d)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); } break; @@ -83315,7 +83257,7 @@ class Test_TC_CC_9_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - ColorLoopStoredEnhancedHue4 = value; + ColorLoopStoredEnhancedHueStep16b = value; } break; case 69: @@ -83323,7 +83265,7 @@ class Test_TC_CC_9_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("enhancedCurrentHue", value, ColorLoopStoredEnhancedHue4)); + VerifyOrReturn(CheckValue("enhancedCurrentHue", value, ColorLoopStoredEnhancedHueStep16b)); } break; case 70: @@ -84005,7 +83947,7 @@ class Test_TC_CC_9_2Suite : public TestCommand chip::Optional mTimeout; uint16_t ColorLoopStartEnhancedHueValue; - uint16_t ColorLoopStartEnhancedHue1; + uint16_t ColorLoopStartEnhancedHue; uint16_t ColorLoopStoredEnhancedHueValue; chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } @@ -84152,7 +84094,7 @@ class Test_TC_CC_9_2Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - ColorLoopStartEnhancedHue1 = value; + ColorLoopStartEnhancedHue = value; } break; case 22: @@ -84161,7 +84103,7 @@ class Test_TC_CC_9_2Suite : public TestCommand uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, ColorLoopStartEnhancedHue1)); + VerifyOrReturn(CheckConstraintMinValue("value", value, ColorLoopStartEnhancedHue)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); } break; @@ -84175,7 +84117,7 @@ class Test_TC_CC_9_2Suite : public TestCommand uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, ColorLoopStartEnhancedHue1)); + VerifyOrReturn(CheckConstraintMinValue("value", value, ColorLoopStartEnhancedHue)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); } break; @@ -84253,497 +84195,7 @@ class Test_TC_CC_9_2Suite : public TestCommand } case 3: { LogStep(3, "Precondition : Set DUT EnhancedCurrentHue to 0x4000 using EnhancedMoveToHue command"); - VerifyOrDo(!ShouldSkip("CC.S.C40.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::ColorControl::Commands::EnhancedMoveToHue::Type value; - value.enhancedHue = 16384U; - value.direction = static_cast(0); - value.transitionTime = 0U; - value.optionsMask = 0U; - value.optionsOverride = 0U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveToHue::Id, - value, chip::NullOptional - - ); - } - case 4: { - LogStep(4, "Wait for 1000ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 1000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 5: { - LogStep(5, "Sends ColorLoopSet Command - Set all Attributes"); - VerifyOrDo(!ShouldSkip("CC.S.C44.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::ColorControl::Commands::ColorLoopSet::Type value; - value.updateFlags = static_cast>(15U); - value.action = static_cast(0); - value.direction = static_cast(0); - value.time = 30U; - value.startHue = 160U; - value.optionsMask = 0U; - value.optionsOverride = 0U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::ColorLoopSet::Id, value, - chip::NullOptional - - ); - } - case 6: { - LogStep(6, "Read ColorLoopActive attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A4002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopActive::Id, - true, chip::NullOptional); - } - case 7: { - LogStep(7, "Read ColorLoopDirection attribute from DUT."); - VerifyOrDo(!ShouldSkip("CC.S.A4003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopDirection::Id, - true, chip::NullOptional); - } - case 8: { - LogStep(8, "Read ColorLoopTime attribute from DUT."); - VerifyOrDo(!ShouldSkip("CC.S.A4004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopTime::Id, - true, chip::NullOptional); - } - case 9: { - LogStep(9, "Read ColorLoopStartEnhancedHue attribute from DUT."); - VerifyOrDo(!ShouldSkip("CC.S.A4005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, - ColorControl::Attributes::ColorLoopStartEnhancedHue::Id, true, chip::NullOptional); - } - case 10: { - LogStep(10, "Color Loop Set Command - Set all Attributes"); - VerifyOrDo(!ShouldSkip("CC.S.C44.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::ColorControl::Commands::ColorLoopSet::Type value; - value.updateFlags = static_cast>(1U); - value.action = static_cast(1); - value.direction = static_cast(0); - value.time = 0U; - value.startHue = 0U; - value.optionsMask = 0U; - value.optionsOverride = 0U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::ColorLoopSet::Id, value, - chip::NullOptional - - ); - } - case 11: { - LogStep(11, "Read ColorLoopActive attribute from DUT."); - VerifyOrDo(!ShouldSkip("CC.S.A4002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopActive::Id, - true, chip::NullOptional); - } - case 12: { - LogStep(12, "Read ColorLoopStoredEnhancedHue attribute from DUT."); - VerifyOrDo(!ShouldSkip("CC.S.A4006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, - ColorControl::Attributes::ColorLoopStoredEnhancedHue::Id, true, chip::NullOptional); - } - case 13: { - LogStep(13, "Wait for 30S"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 30000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 14: { - LogStep(14, "Read ColorLoopStartEnhancedHue attribute from DUT."); - VerifyOrDo(!ShouldSkip("CC.S.A4005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, - ColorControl::Attributes::ColorLoopStartEnhancedHue::Id, true, chip::NullOptional); - } - case 15: { - LogStep(15, "Read EnhancedCurrentHue attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, - true, chip::NullOptional); - } - case 16: { - LogStep(16, "Wait for 30S"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 30000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 17: { - LogStep(17, "Read EnhancedCurrentHue attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, - true, chip::NullOptional); - } - case 18: { - LogStep(18, "Color Loop Set Command - Start Color Loop"); - VerifyOrDo(!ShouldSkip("CC.S.C44.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::ColorControl::Commands::ColorLoopSet::Type value; - value.updateFlags = static_cast>(2U); - value.action = static_cast(0); - value.direction = static_cast(1); - value.time = 0U; - value.startHue = 0U; - value.optionsMask = 0U; - value.optionsOverride = 0U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::ColorLoopSet::Id, value, - chip::NullOptional - - ); - } - case 19: { - LogStep(19, "Read ColorLoopDirection attribute from DUT."); - VerifyOrDo(!ShouldSkip("CC.S.A4003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopDirection::Id, - true, chip::NullOptional); - } - case 20: { - LogStep(20, "Wait for 30S"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 30000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 21: { - LogStep(21, "Read ColorLoopStartEnhancedHue attribute from DUT."); - VerifyOrDo(!ShouldSkip("CC.S.A4005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, - ColorControl::Attributes::ColorLoopStartEnhancedHue::Id, true, chip::NullOptional); - } - case 22: { - LogStep(22, "Read EnhancedCurrentHue attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, - true, chip::NullOptional); - } - case 23: { - LogStep(23, "Wait for 30S"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 30000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 24: { - LogStep(24, "Read EnhancedCurrentHue attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, - true, chip::NullOptional); - } - case 25: { - LogStep(25, "Color Loop Set Command - Start Color Loop"); - VerifyOrDo(!ShouldSkip("CC.S.C44.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::ColorControl::Commands::ColorLoopSet::Type value; - value.updateFlags = static_cast>(1U); - value.action = static_cast(0); - value.direction = static_cast(0); - value.time = 0U; - value.startHue = 0U; - value.optionsMask = 0U; - value.optionsOverride = 0U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::ColorLoopSet::Id, value, - chip::NullOptional - - ); - } - case 26: { - LogStep(26, "Read ColorLoopActive attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A4002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopActive::Id, - true, chip::NullOptional); - } - case 27: { - LogStep(27, "Read ColorLoopStoredEnhancedHue attribute from DUT."); - VerifyOrDo(!ShouldSkip("CC.S.A4006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, - ColorControl::Attributes::ColorLoopStoredEnhancedHue::Id, true, chip::NullOptional); - } - case 28: { - LogStep(28, "Read EnhancedCurrentHue attribute from DUT."); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, - true, chip::NullOptional); - } - case 29: { - LogStep(29, "Turn off light for color control tests"); - ListFreer listFreer; - chip::app::Clusters::OnOff::Commands::Off::Type value; - return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::Off::Id, value, chip::NullOptional - - ); - } - case 30: { - LogStep(30, "Check on/off attribute value is false after off command"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_CC_9_3Suite : public TestCommand -{ -public: - Test_TC_CC_9_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_9_3", 30, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_CC_9_3Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override { return chip::System::Clock::Seconds16(mTimeout.ValueOr(400)); } - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - uint16_t ColorLoopStartEnhancedHueValue; - uint16_t ColorLoopStoredEnhancedHueValue; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - case 0: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 1: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 2: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - bool value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("onOff", value, 1)); - } - break; - case 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 6: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("colorLoopActive", value, 0U)); - } - break; - case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("colorLoopDirection", value, 0U)); - } - break; - case 8: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("colorLoopTime", value, 30U)); - } - break; - case 9: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("colorLoopStartEnhancedHue", value, 160U)); - } - break; - case 10: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("colorLoopActive", value, 1U)); - } - break; - case 12: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("colorLoopStoredEnhancedHue", value, 16384U)); - } - break; - case 13: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 14: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - ColorLoopStartEnhancedHueValue = value; - } - break; - case 15: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, ColorLoopStartEnhancedHueValue)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); - } - break; - case 16: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 17: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, ColorLoopStartEnhancedHueValue)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); - } - break; - case 18: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 19: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("colorLoopTime", value, 60U)); - } - break; - case 20: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 21: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); - } - break; - case 22: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 23: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); - } - break; - case 24: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 25: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("colorLoopActive", value, 0U)); - } - break; - case 26: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - ColorLoopStoredEnhancedHueValue = value; - } - break; - case 27: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("enhancedCurrentHue", value, ColorLoopStoredEnhancedHueValue)); - } - break; - case 28: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 29: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - bool value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("onOff", value, 0)); - } - break; - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - { - case 0: { - LogStep(0, "Wait for the commissioned device to be retrieved"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; - value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; - return WaitForCommissionee(kIdentityAlpha, value); - } - case 1: { - LogStep(1, "Precondition: Turn on light for color control tests"); - ListFreer listFreer; - chip::app::Clusters::OnOff::Commands::On::Type value; - return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id, value, chip::NullOptional - - ); - } - case 2: { - LogStep(2, "Precondition: Check on/off attribute value is true after on command"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); - } - case 3: { - LogStep(3, "Precondition : Set DUT EnhancedCurrentHue to 0x4000 using EnhancedMoveToHue command"); - VerifyOrDo(!ShouldSkip("CC.S.C40.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.C40.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::EnhancedMoveToHue::Type value; value.enhancedHue = 16384U; @@ -84765,7 +84217,7 @@ class Test_TC_CC_9_3Suite : public TestCommand } case 5: { LogStep(5, "Sends ColorLoopSet Command - Set all Attributes"); - VerifyOrDo(!ShouldSkip("CC.S.C44.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.C44.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::ColorLoopSet::Type value; value.updateFlags = static_cast>(15U); @@ -84782,31 +84234,31 @@ class Test_TC_CC_9_3Suite : public TestCommand } case 6: { LogStep(6, "Read ColorLoopActive attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A4002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopActive::Id, true, chip::NullOptional); } case 7: { LogStep(7, "Read ColorLoopDirection attribute from DUT."); - VerifyOrDo(!ShouldSkip("CC.S.A4003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopDirection::Id, true, chip::NullOptional); } case 8: { LogStep(8, "Read ColorLoopTime attribute from DUT."); - VerifyOrDo(!ShouldSkip("CC.S.A4004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopTime::Id, true, chip::NullOptional); } case 9: { LogStep(9, "Read ColorLoopStartEnhancedHue attribute from DUT."); - VerifyOrDo(!ShouldSkip("CC.S.A4005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopStartEnhancedHue::Id, true, chip::NullOptional); } case 10: { LogStep(10, "Color Loop Set Command - Set all Attributes"); - VerifyOrDo(!ShouldSkip("CC.S.C44.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.C44.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::ColorLoopSet::Type value; value.updateFlags = static_cast>(1U); @@ -84823,13 +84275,13 @@ class Test_TC_CC_9_3Suite : public TestCommand } case 11: { LogStep(11, "Read ColorLoopActive attribute from DUT."); - VerifyOrDo(!ShouldSkip("CC.S.A4002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopActive::Id, true, chip::NullOptional); } case 12: { LogStep(12, "Read ColorLoopStoredEnhancedHue attribute from DUT."); - VerifyOrDo(!ShouldSkip("CC.S.A4006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopStoredEnhancedHue::Id, true, chip::NullOptional); } @@ -84842,13 +84294,13 @@ class Test_TC_CC_9_3Suite : public TestCommand } case 14: { LogStep(14, "Read ColorLoopStartEnhancedHue attribute from DUT."); - VerifyOrDo(!ShouldSkip("CC.S.A4005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopStartEnhancedHue::Id, true, chip::NullOptional); } case 15: { LogStep(15, "Read EnhancedCurrentHue attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, true, chip::NullOptional); } @@ -84861,13 +84313,503 @@ class Test_TC_CC_9_3Suite : public TestCommand } case 17: { LogStep(17, "Read EnhancedCurrentHue attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, true, chip::NullOptional); } case 18: { LogStep(18, "Color Loop Set Command - Start Color Loop"); - VerifyOrDo(!ShouldSkip("CC.S.C44.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.C44.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::ColorControl::Commands::ColorLoopSet::Type value; + value.updateFlags = static_cast>(2U); + value.action = static_cast(0); + value.direction = static_cast(1); + value.time = 0U; + value.startHue = 0U; + value.optionsMask = 0U; + value.optionsOverride = 0U; + return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::ColorLoopSet::Id, value, + chip::NullOptional + + ); + } + case 19: { + LogStep(19, "Read ColorLoopDirection attribute from DUT."); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopDirection::Id, + true, chip::NullOptional); + } + case 20: { + LogStep(20, "Wait for 30S"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 30000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 21: { + LogStep(21, "Read ColorLoopStartEnhancedHue attribute from DUT."); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, + ColorControl::Attributes::ColorLoopStartEnhancedHue::Id, true, chip::NullOptional); + } + case 22: { + LogStep(22, "Read EnhancedCurrentHue attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, + true, chip::NullOptional); + } + case 23: { + LogStep(23, "Wait for 30S"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 30000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 24: { + LogStep(24, "Read EnhancedCurrentHue attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, + true, chip::NullOptional); + } + case 25: { + LogStep(25, "Color Loop Set Command - Start Color Loop"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.C44.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::ColorControl::Commands::ColorLoopSet::Type value; + value.updateFlags = static_cast>(1U); + value.action = static_cast(0); + value.direction = static_cast(0); + value.time = 0U; + value.startHue = 0U; + value.optionsMask = 0U; + value.optionsOverride = 0U; + return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::ColorLoopSet::Id, value, + chip::NullOptional + + ); + } + case 26: { + LogStep(26, "Read ColorLoopActive attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopActive::Id, + true, chip::NullOptional); + } + case 27: { + LogStep(27, "Read ColorLoopStoredEnhancedHue attribute from DUT."); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, + ColorControl::Attributes::ColorLoopStoredEnhancedHue::Id, true, chip::NullOptional); + } + case 28: { + LogStep(28, "Read EnhancedCurrentHue attribute from DUT."); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, + true, chip::NullOptional); + } + case 29: { + LogStep(29, "Turn off light for color control tests"); + ListFreer listFreer; + chip::app::Clusters::OnOff::Commands::Off::Type value; + return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::Off::Id, value, chip::NullOptional + + ); + } + case 30: { + LogStep(30, "Check on/off attribute value is false after off command"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); + } + } + return CHIP_NO_ERROR; + } +}; + +class Test_TC_CC_9_3Suite : public TestCommand +{ +public: + Test_TC_CC_9_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_9_3", 30, credsIssuerConfig) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_CC_9_3Suite() {} + + chip::System::Clock::Timeout GetWaitDuration() const override { return chip::System::Clock::Seconds16(mTimeout.ValueOr(400)); } + +private: + chip::Optional mNodeId; + chip::Optional mCluster; + chip::Optional mEndpoint; + chip::Optional mTimeout; + + uint16_t ColorLoopStartEnhancedHueValue; + uint16_t ColorLoopStoredEnhancedHueValue; + + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } + + // + // Tests methods + // + + void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override + { + bool shouldContinue = false; + + switch (mTestIndex - 1) + { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 1: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + bool value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("onOff", value, 1)); + } + break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("colorLoopActive", value, 0U)); + } + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("colorLoopDirection", value, 0U)); + } + break; + case 8: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("colorLoopTime", value, 30U)); + } + break; + case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("colorLoopStartEnhancedHue", value, 160U)); + } + break; + case 10: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 11: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("colorLoopActive", value, 1U)); + } + break; + case 12: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("colorLoopStoredEnhancedHue", value, 16384U)); + } + break; + case 13: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 14: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + ColorLoopStartEnhancedHueValue = value; + } + break; + case 15: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, ColorLoopStartEnhancedHueValue)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); + } + break; + case 16: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 17: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, ColorLoopStartEnhancedHueValue)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); + } + break; + case 18: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 19: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("colorLoopTime", value, 60U)); + } + break; + case 20: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 21: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); + } + break; + case 22: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 23: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); + } + break; + case 24: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 25: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("colorLoopActive", value, 0U)); + } + break; + case 26: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + ColorLoopStoredEnhancedHueValue = value; + } + break; + case 27: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("enhancedCurrentHue", value, ColorLoopStoredEnhancedHueValue)); + } + break; + case 28: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 29: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + bool value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("onOff", value, 0)); + } + break; + default: + LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + } + + if (shouldContinue) + { + ContinueOnChipMainThread(CHIP_NO_ERROR); + } + } + + CHIP_ERROR DoTestStep(uint16_t testIndex) override + { + using namespace chip::app::Clusters; + switch (testIndex) + { + case 0: { + LogStep(0, "Wait for the commissioned device to be retrieved"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + return WaitForCommissionee(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "Precondition: Turn on light for color control tests"); + ListFreer listFreer; + chip::app::Clusters::OnOff::Commands::On::Type value; + return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id, value, chip::NullOptional + + ); + } + case 2: { + LogStep(2, "Precondition: Check on/off attribute value is true after on command"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); + } + case 3: { + LogStep(3, "Precondition : Set DUT EnhancedCurrentHue to 0x4000 using EnhancedMoveToHue command"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.C40.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::ColorControl::Commands::EnhancedMoveToHue::Type value; + value.enhancedHue = 16384U; + value.direction = static_cast(0); + value.transitionTime = 0U; + value.optionsMask = 0U; + value.optionsOverride = 0U; + return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveToHue::Id, + value, chip::NullOptional + + ); + } + case 4: { + LogStep(4, "Wait for 1000ms"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 1000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 5: { + LogStep(5, "Sends ColorLoopSet Command - Set all Attributes"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.C44.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::ColorControl::Commands::ColorLoopSet::Type value; + value.updateFlags = static_cast>(15U); + value.action = static_cast(0); + value.direction = static_cast(0); + value.time = 30U; + value.startHue = 160U; + value.optionsMask = 0U; + value.optionsOverride = 0U; + return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::ColorLoopSet::Id, value, + chip::NullOptional + + ); + } + case 6: { + LogStep(6, "Read ColorLoopActive attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopActive::Id, + true, chip::NullOptional); + } + case 7: { + LogStep(7, "Read ColorLoopDirection attribute from DUT."); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopDirection::Id, + true, chip::NullOptional); + } + case 8: { + LogStep(8, "Read ColorLoopTime attribute from DUT."); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopTime::Id, + true, chip::NullOptional); + } + case 9: { + LogStep(9, "Read ColorLoopStartEnhancedHue attribute from DUT."); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, + ColorControl::Attributes::ColorLoopStartEnhancedHue::Id, true, chip::NullOptional); + } + case 10: { + LogStep(10, "Color Loop Set Command - Set all Attributes"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.C44.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::ColorControl::Commands::ColorLoopSet::Type value; + value.updateFlags = static_cast>(1U); + value.action = static_cast(1); + value.direction = static_cast(0); + value.time = 0U; + value.startHue = 0U; + value.optionsMask = 0U; + value.optionsOverride = 0U; + return SendCommand(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Commands::ColorLoopSet::Id, value, + chip::NullOptional + + ); + } + case 11: { + LogStep(11, "Read ColorLoopActive attribute from DUT."); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopActive::Id, + true, chip::NullOptional); + } + case 12: { + LogStep(12, "Read ColorLoopStoredEnhancedHue attribute from DUT."); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, + ColorControl::Attributes::ColorLoopStoredEnhancedHue::Id, true, chip::NullOptional); + } + case 13: { + LogStep(13, "Wait for 30S"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 30000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 14: { + LogStep(14, "Read ColorLoopStartEnhancedHue attribute from DUT."); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, + ColorControl::Attributes::ColorLoopStartEnhancedHue::Id, true, chip::NullOptional); + } + case 15: { + LogStep(15, "Read EnhancedCurrentHue attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, + true, chip::NullOptional); + } + case 16: { + LogStep(16, "Wait for 30S"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 30000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 17: { + LogStep(17, "Read EnhancedCurrentHue attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, + true, chip::NullOptional); + } + case 18: { + LogStep(18, "Color Loop Set Command - Start Color Loop"); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.C44.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::ColorLoopSet::Type value; value.updateFlags = static_cast>(4U); @@ -84884,7 +84826,7 @@ class Test_TC_CC_9_3Suite : public TestCommand } case 19: { LogStep(19, "Read ColorLoopTime attribute from DUT."); - VerifyOrDo(!ShouldSkip("CC.S.A4004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopTime::Id, true, chip::NullOptional); } @@ -84897,7 +84839,7 @@ class Test_TC_CC_9_3Suite : public TestCommand } case 21: { LogStep(21, "Read EnhancedCurrentHue attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, true, chip::NullOptional); } @@ -84910,13 +84852,13 @@ class Test_TC_CC_9_3Suite : public TestCommand } case 23: { LogStep(23, "Read EnhancedCurrentHue attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, true, chip::NullOptional); } case 24: { LogStep(24, "Color Loop Set Command - Start Color Loop"); - VerifyOrDo(!ShouldSkip("CC.S.C44.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.C44.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::ColorLoopSet::Type value; value.updateFlags = static_cast>(1U); @@ -84933,19 +84875,19 @@ class Test_TC_CC_9_3Suite : public TestCommand } case 25: { LogStep(25, "Read ColorLoopActive attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A4002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopActive::Id, true, chip::NullOptional); } case 26: { LogStep(26, "Read ColorLoopStoredEnhancedHue attribute from DUT."); - VerifyOrDo(!ShouldSkip("CC.S.A4006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopStoredEnhancedHue::Id, true, chip::NullOptional); } case 27: { LogStep(27, "Read EnhancedCurrentHue attribute from DUT."); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("CC.S.F01 && CC.S.F02 && CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, true, chip::NullOptional); } @@ -86003,8 +85945,8 @@ class Test_TC_OO_2_3Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMinValue("value", value, 270U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 320U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 255U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 345U)); } break; case 38: @@ -86052,8 +85994,8 @@ class Test_TC_OO_2_3Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMinValue("value", value, 270U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 325U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 255U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 345U)); } break; case 48: @@ -86092,8 +86034,8 @@ class Test_TC_OO_2_3Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMinValue("value", value, 270U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 320U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 255U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 345U)); } break; case 54: @@ -86124,8 +86066,8 @@ class Test_TC_OO_2_3Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMinValue("value", value, 180U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 220U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 170U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 230U)); } break; case 59: @@ -86193,8 +86135,8 @@ class Test_TC_OO_2_3Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMinValue("value", value, 270U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 320U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 255U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 345U)); } break; case 71: @@ -86281,7 +86223,8 @@ class Test_TC_OO_2_3Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("onTime", value, 300U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 255U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 345U)); } break; case 85: @@ -86341,8 +86284,8 @@ class Test_TC_OO_2_3Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMinValue("value", value, 270U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 320U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 255U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 345U)); } break; case 94: @@ -86380,8 +86323,8 @@ class Test_TC_OO_2_3Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMinValue("value", value, 180U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 220U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 170U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 230U)); } break; case 101: @@ -86416,8 +86359,8 @@ class Test_TC_OO_2_3Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMinValue("value", value, 270U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 320U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 255U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 345U)); } break; case 106: @@ -86444,8 +86387,8 @@ class Test_TC_OO_2_3Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMinValue("value", value, 180U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 220U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 170U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 230U)); } break; case 110: @@ -86506,8 +86449,8 @@ class Test_TC_OO_2_3Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMinValue("value", value, 270U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 320U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 255U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 345U)); } break; case 120: @@ -86536,7 +86479,7 @@ class Test_TC_OO_2_3Suite : public TestCommand uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 10U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 15U)); } break; case 124: @@ -86555,8 +86498,8 @@ class Test_TC_OO_2_3Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMinValue("value", value, 270U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 320U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 255U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 345U)); } break; case 127: @@ -86593,7 +86536,7 @@ class Test_TC_OO_2_3Suite : public TestCommand uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 10U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 15U)); } break; case 132: @@ -87292,18 +87235,18 @@ class Test_TC_OO_2_3Suite : public TestCommand } case 92: { LogStep(92, "18b:Reads OnOff attribute from DUT"); - VerifyOrDo(!ShouldSkip("OO.S.A0000 && PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("OO.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } case 93: { LogStep(93, "18b:Reads OnTime attribute from DUT"); - VerifyOrDo(!ShouldSkip("OO.S.A4001 && PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("OO.S.A4001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnTime::Id, true, chip::NullOptional); } case 94: { LogStep(94, "18b:Reads OffWaitTime attribute from DUT"); - VerifyOrDo(!ShouldSkip("OO.S.A4002 && PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("OO.S.A4002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OffWaitTime::Id, true, chip::NullOptional); } @@ -90983,7 +90926,6 @@ void registerCommandsTests(Commands & commands, CredentialIssuerCommands * creds make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), - make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), @@ -90996,7 +90938,6 @@ void registerCommandsTests(Commands & commands, CredentialIssuerCommands * creds make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), - make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), @@ -91203,6 +91144,7 @@ void registerCommandsTests(Commands & commands, CredentialIssuerCommands * creds make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), + make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), @@ -91426,6 +91368,8 @@ void registerCommandsTests(Commands & commands, CredentialIssuerCommands * creds make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), + make_unique(credsIssuerConfig), + make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), 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 03f270678c92eb..6bc5360c4ffbc4 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h @@ -39,7 +39,6 @@ class TestList : public Command { printf("Test_TC_ACT_1_1\n"); printf("Test_TC_CC_1_1\n"); printf("Test_TC_CC_2_1\n"); - printf("Test_TC_CC_3_1\n"); printf("Test_TC_CC_3_2\n"); printf("Test_TC_CC_3_3\n"); printf("Test_TC_CC_4_1\n"); @@ -52,7 +51,6 @@ class TestList : public Command { printf("Test_TC_CC_6_1\n"); printf("Test_TC_CC_6_2\n"); printf("Test_TC_CC_6_3\n"); - printf("Test_TC_CC_7_1\n"); printf("Test_TC_CC_7_2\n"); printf("Test_TC_CC_7_3\n"); printf("Test_TC_CC_7_4\n"); @@ -2832,87 +2830,22 @@ class Test_TC_CC_1_1 : public TestCommandBridge { err = TestReadTheGlobalAttributeAttributeList_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Read the feature dependent attribute(CC.S.F00) in AttributeList\n"); - if (ShouldSkip("CC.S.F00")) { - NextTest(); - return; - } - err = TestReadTheFeatureDependentAttributeCCSF00InAttributeList_4(); + ChipLogProgress(chipTool, " ***** Test Step 4 : Read the global attribute: AcceptedCommandList\n"); + err = TestReadTheGlobalAttributeAcceptedCommandList_4(); break; case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Read the feature dependent attribute(CC.S.F03) in AttributeList\n"); - if (ShouldSkip("CC.S.F03")) { - NextTest(); - return; - } - err = TestReadTheFeatureDependentAttributeCCSF03InAttributeList_5(); + ChipLogProgress(chipTool, " ***** Test Step 5 : Read the global attribute: GeneratedCommandList\n"); + err = TestReadTheGlobalAttributeGeneratedCommandList_5(); break; case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : Read the feature dependent attribute(CC.S.F04) in AttributeList\n"); - if (ShouldSkip("CC.S.F04")) { - NextTest(); - return; - } - err = TestReadTheFeatureDependentAttributeCCSF04InAttributeList_6(); - break; - case 7: - ChipLogProgress(chipTool, - " ***** Test Step 7 : Read the feature dependent attribute(CC.S.F04) or ColorTemperatureMireds in AttributeList\n"); - if (ShouldSkip("CC.S.F04 && CC.S.A4010")) { - NextTest(); - return; - } - err = TestReadTheFeatureDependentAttributeCCSF04OrColorTemperatureMiredsInAttributeList_7(); - break; - case 8: - ChipLogProgress(chipTool, " ***** Test Step 8 : Read the feature dependent attribute(CC.S.F01) in AttributeList\n"); - if (ShouldSkip("CC.S.F01")) { - NextTest(); - return; - } - err = TestReadTheFeatureDependentAttributeCCSF01InAttributeList_8(); - break; - case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Read the feature dependent attribute(CC.S.F02) in AttributeList\n"); - if (ShouldSkip("CC.S.F02")) { - NextTest(); - return; - } - err = TestReadTheFeatureDependentAttributeCCSF02InAttributeList_9(); - break; - case 10: - ChipLogProgress(chipTool, " ***** Test Step 10 : Read the feature dependent attribute(CC.S.F00) in AttributeList\n"); - if (ShouldSkip("CC.S.F00")) { - NextTest(); - return; - } - err = TestReadTheFeatureDependentAttributeCCSF00InAttributeList_10(); - break; - case 11: - ChipLogProgress(chipTool, " ***** Test Step 11 : Read the feature dependent attribute(CC.S.F00) in AttributeList\n"); - if (ShouldSkip("CC.S.F00")) { - NextTest(); - return; - } - err = TestReadTheFeatureDependentAttributeCCSF00InAttributeList_11(); - break; - case 12: - ChipLogProgress(chipTool, " ***** Test Step 12 : Read the global attribute: AcceptedCommandList\n"); - err = TestReadTheGlobalAttributeAcceptedCommandList_12(); - break; - case 13: - ChipLogProgress(chipTool, " ***** Test Step 13 : Read the global attribute: GeneratedCommandList\n"); - err = TestReadTheGlobalAttributeGeneratedCommandList_13(); - break; - case 14: ChipLogProgress(chipTool, - " ***** Test Step 14 : Read EventList attribute from the DUT and Verify that the DUT response provides a list of " + " ***** Test Step 6 : Read EventList attribute from the DUT and Verify that the DUT response provides a list of " "supported events.\n"); if (ShouldSkip("PICS_USER_PROMPT")) { NextTest(); return; } - err = TestReadEventListAttributeFromTheDutAndVerifyThatTheDutResponseProvidesAListOfSupportedEvents_14(); + err = TestReadEventListAttributeFromTheDutAndVerifyThatTheDutResponseProvidesAListOfSupportedEvents_6(); break; } @@ -2946,30 +2879,6 @@ class Test_TC_CC_1_1 : public TestCommandBridge { case 6: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 8: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 9: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 10: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 12: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 13: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 14: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; } // Go on to the next test. @@ -2983,7 +2892,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 15; + const uint16_t mTestCount = 7; chip::Optional mNodeId; chip::Optional mCluster; @@ -3075,188 +2984,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheFeatureDependentAttributeCCSF00InAttributeList_4() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeAttributeListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the feature dependent attribute(CC.S.F00) in AttributeList Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("attributeList", "", "list")); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 0UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 1UL)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadTheFeatureDependentAttributeCCSF03InAttributeList_5() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeAttributeListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the feature dependent attribute(CC.S.F03) in AttributeList Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("attributeList", "", "list")); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 3UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 4UL)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadTheFeatureDependentAttributeCCSF04InAttributeList_6() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeAttributeListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the feature dependent attribute(CC.S.F04) in AttributeList Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("attributeList", "", "list")); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 7UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 16395UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 16396UL)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadTheFeatureDependentAttributeCCSF04OrColorTemperatureMiredsInAttributeList_7() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeAttributeListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the feature dependent attribute(CC.S.F04) or ColorTemperatureMireds in AttributeList Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("attributeList", "", "list")); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 16397UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 16400UL)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadTheFeatureDependentAttributeCCSF01InAttributeList_8() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeAttributeListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the feature dependent attribute(CC.S.F01) in AttributeList Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("attributeList", "", "list")); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 16384UL)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadTheFeatureDependentAttributeCCSF02InAttributeList_9() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeAttributeListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the feature dependent attribute(CC.S.F02) in AttributeList Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("attributeList", "", "list")); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 16386UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 16387UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 16388UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 16389UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 16390UL)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadTheFeatureDependentAttributeCCSF00InAttributeList_10() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeAttributeListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the feature dependent attribute(CC.S.F00) in AttributeList Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("attributeList", "", "list")); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadTheFeatureDependentAttributeCCSF00InAttributeList_11() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeAttributeListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the feature dependent attribute(CC.S.F00) in AttributeList Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("attributeList", "", "list")); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadTheGlobalAttributeAcceptedCommandList_12() + CHIP_ERROR TestReadTheGlobalAttributeAcceptedCommandList_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -3276,7 +3004,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheGlobalAttributeGeneratedCommandList_13() + CHIP_ERROR TestReadTheGlobalAttributeGeneratedCommandList_5() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -3301,7 +3029,7 @@ class Test_TC_CC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadEventListAttributeFromTheDutAndVerifyThatTheDutResponseProvidesAListOfSupportedEvents_14() + CHIP_ERROR TestReadEventListAttributeFromTheDutAndVerifyThatTheDutResponseProvidesAListOfSupportedEvents_6() { chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); @@ -3355,7 +3083,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { break; case 1: ChipLogProgress(chipTool, " ***** Test Step 1 : TH reads CurrentHue attribute from DUT\n"); - if (ShouldSkip("CC.S.A0000 && CC.S.F00")) { + if (ShouldSkip("CC.S.A0000")) { NextTest(); return; } @@ -3363,7 +3091,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { break; case 2: ChipLogProgress(chipTool, " ***** Test Step 2 : TH reads CurrentSaturation attribute from DUT\n"); - if (ShouldSkip("CC.S.A0001 && CC.S.F00")) { + if (ShouldSkip("CC.S.A0001")) { NextTest(); return; } @@ -3379,7 +3107,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { break; case 4: ChipLogProgress(chipTool, " ***** Test Step 4 : TH reads CurrentX attribute from DUT\n"); - if (ShouldSkip("CC.S.A0003 && CC.S.F03")) { + if (ShouldSkip("CC.S.A0003")) { NextTest(); return; } @@ -3387,7 +3115,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { break; case 5: ChipLogProgress(chipTool, " ***** Test Step 5 : TH reads CurrentY attribute from DUT\n"); - if (ShouldSkip("CC.S.A0004 && CC.S.F04")) { + if (ShouldSkip("CC.S.A0004")) { NextTest(); return; } @@ -3411,7 +3139,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { break; case 8: ChipLogProgress(chipTool, " ***** Test Step 8 : TH reads ColorTemperatureMireds attribute from DUT\n"); - if (ShouldSkip("CC.S.A0007 && CC.S.F04")) { + if (ShouldSkip("CC.S.A0007")) { NextTest(); return; } @@ -3435,7 +3163,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { break; case 11: ChipLogProgress(chipTool, " ***** Test Step 11 : TH reads EnhancedCurrentHue attribute from DUT\n"); - if (ShouldSkip("CC.S.A4000 && CC.S.F01")) { + if (ShouldSkip("CC.S.A4000")) { NextTest(); return; } @@ -3443,7 +3171,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { break; case 12: ChipLogProgress(chipTool, " ***** Test Step 12 : TH reads EnhancedColorMode attribute from DUT\n"); - if (ShouldSkip("CC.S.F02 && CC.S.A4001")) { + if (ShouldSkip("CC.S.F02")) { NextTest(); return; } @@ -3451,7 +3179,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { break; case 13: ChipLogProgress(chipTool, " ***** Test Step 13 : TH reads ColorLoopActive attribute from DUT\n"); - if (ShouldSkip("CC.S.A4002 && CC.S.F02")) { + if (ShouldSkip("CC.S.A4002")) { NextTest(); return; } @@ -3459,7 +3187,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { break; case 14: ChipLogProgress(chipTool, " ***** Test Step 14 : TH reads ColorLoopDirection attribute from DUT\n"); - if (ShouldSkip("CC.S.A4003 && CC.S.F02")) { + if (ShouldSkip("CC.S.A4003")) { NextTest(); return; } @@ -3467,7 +3195,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { break; case 15: ChipLogProgress(chipTool, " ***** Test Step 15 : TH reads ColorLoopTime attribute from DUT\n"); - if (ShouldSkip("CC.S.A4004 && CC.S.F02")) { + if (ShouldSkip("CC.S.A4004")) { NextTest(); return; } @@ -3475,7 +3203,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { break; case 16: ChipLogProgress(chipTool, " ***** Test Step 16 : TH reads ColorLoopStartEnhancedHue attribute from DUT\n"); - if (ShouldSkip("CC.S.A4005 && CC.S.F02")) { + if (ShouldSkip("CC.S.A4005")) { NextTest(); return; } @@ -3483,7 +3211,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { break; case 17: ChipLogProgress(chipTool, " ***** Test Step 17 : TH reads ColorLoopStoredEnhancedHue attribute from DUT\n"); - if (ShouldSkip("CC.S.A4006 && CC.S.F02")) { + if (ShouldSkip("CC.S.A4006")) { NextTest(); return; } @@ -3503,7 +3231,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { break; case 20: ChipLogProgress(chipTool, " ***** Test Step 20 : TH reads ColorTempPhysicalMinMireds attribute from DUT\n"); - if (ShouldSkip("CC.S.A400b && CC.S.F04")) { + if (ShouldSkip("CC.S.A400b")) { NextTest(); return; } @@ -3511,7 +3239,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { break; case 21: ChipLogProgress(chipTool, " ***** Test Step 21 : TH reads ColorTempPhysicalMaxMireds attribute from DUT\n"); - if (ShouldSkip("CC.S.A400c && CC.S.F04")) { + if (ShouldSkip("CC.S.A400c")) { NextTest(); return; } @@ -3519,7 +3247,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { break; case 22: ChipLogProgress(chipTool, " ***** Test Step 22 : TH reads CoupleColorTempToLevelMinMireds attribute from DUT\n"); - if (ShouldSkip("CC.S.A400d && CC.S.F04")) { + if (ShouldSkip("CC.S.A400d")) { NextTest(); return; } @@ -3527,7 +3255,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { break; case 23: ChipLogProgress(chipTool, " ***** Test Step 23 : TH reads StartUpColorTemperatureMireds attribute from DUT\n"); - if (ShouldSkip("CC.S.A4010 && CC.S.F04")) { + if (ShouldSkip("CC.S.A4010")) { NextTest(); return; } @@ -3542,148 +3270,184 @@ class Test_TC_CC_2_1 : public TestCommandBridge { err = TestThReadsNumberOfPrimariesAttributeFromDut_24(); break; case 25: - ChipLogProgress(chipTool, " ***** Test Step 25 : TH reads Primary1X attribute from DUT\n"); - if (ShouldSkip("CC.S.A0011")) { + ChipLogProgress(chipTool, + " ***** Test Step 25 : TH reads Primary1X attribute from DUT and Verify that the DUT response contains an uint16 " + "[Min:0 Max:0xfeff] if NumberOfPrimaries is 1 or more\n"); + if (ShouldSkip("PICS_USER_PROMPT && CC.S.A0011")) { NextTest(); return; } - err = TestThReadsPrimary1XAttributeFromDut_25(); + err = TestThReadsPrimary1XAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint16Min0Max0xfeffIfNumberOfPrimariesIs1OrMore_25(); break; case 26: - ChipLogProgress(chipTool, " ***** Test Step 26 : TH reads Primary1Y attribute from DUT\n"); - if (ShouldSkip("CC.S.A0012")) { + ChipLogProgress(chipTool, + " ***** Test Step 26 : TH reads Primary1Y attribute from DUT and Verify that the DUT response contains an uint16 " + "[Min:0 Max:0xfeff] if NumberOfPrimaries is 1 or more\n"); + if (ShouldSkip("PICS_USER_PROMPT && CC.S.A0012")) { NextTest(); return; } - err = TestThReadsPrimary1YAttributeFromDut_26(); + err = TestThReadsPrimary1YAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint16Min0Max0xfeffIfNumberOfPrimariesIs1OrMore_26(); break; case 27: - ChipLogProgress(chipTool, " ***** Test Step 27 : TH reads Primary1Intensity attribute from DUT\n"); - if (ShouldSkip("CC.S.A0013")) { + ChipLogProgress(chipTool, + " ***** Test Step 27 : TH reads Primary1Intensity attribute from DUT and Verify that the DUT response contains an " + "uint8 if NumberOfPrimaries is 1 or more\n"); + if (ShouldSkip("PICS_USER_PROMPT && CC.S.A0013")) { NextTest(); return; } - err = TestThReadsPrimary1IntensityAttributeFromDut_27(); + err = TestThReadsPrimary1IntensityAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint8IfNumberOfPrimariesIs1OrMore_27(); break; case 28: - ChipLogProgress(chipTool, " ***** Test Step 28 : TH reads Primary2X attribute from DUT\n"); - if (ShouldSkip("CC.S.A0015")) { + ChipLogProgress(chipTool, + " ***** Test Step 28 : TH reads Primary2X attribute from DUT and Verify that the DUT response contains an uint16 " + "[Min:0 Max:0xfeff] if NumberOfPrimaries is 2 or more\n"); + if (ShouldSkip("PICS_USER_PROMPT && CC.S.A0015")) { NextTest(); return; } - err = TestThReadsPrimary2XAttributeFromDut_28(); + err = TestThReadsPrimary2XAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint16Min0Max0xfeffIfNumberOfPrimariesIs2OrMore_28(); break; case 29: - ChipLogProgress(chipTool, " ***** Test Step 29 : TH reads Primary2Y attribute from DUT\n"); - if (ShouldSkip("CC.S.A0016")) { + ChipLogProgress(chipTool, + " ***** Test Step 29 : TH reads Primary2Y attribute from DUT and Verify that the DUT response contains an uint16 " + "[Min:0 Max:0xfeff] if NumberOfPrimaries is 2 or more\n"); + if (ShouldSkip("PICS_USER_PROMPT && CC.S.A0016")) { NextTest(); return; } - err = TestThReadsPrimary2YAttributeFromDut_29(); + err = TestThReadsPrimary2YAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint16Min0Max0xfeffIfNumberOfPrimariesIs2OrMore_29(); break; case 30: - ChipLogProgress(chipTool, " ***** Test Step 30 : TH reads Primary2Intensity attribute from DUT\n"); - if (ShouldSkip("CC.S.A0017")) { + ChipLogProgress(chipTool, + " ***** Test Step 30 : TH reads Primary2Intensity attribute from DUT and Verify that the DUT response contains an " + "uint8 if NumberOfPrimaries is 2 or more\n"); + if (ShouldSkip("PICS_USER_PROMPT && CC.S.A0017")) { NextTest(); return; } - err = TestThReadsPrimary2IntensityAttributeFromDut_30(); + err = TestThReadsPrimary2IntensityAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint8IfNumberOfPrimariesIs2OrMore_30(); break; case 31: - ChipLogProgress(chipTool, " ***** Test Step 31 : TH reads Primary3X attribute from DUT\n"); - if (ShouldSkip("CC.S.A0019")) { + ChipLogProgress(chipTool, + " ***** Test Step 31 : TH reads Primary3X attribute from DUT and Verify that the DUT response contains an uint16 " + "[Min:0 Max:0xfeff] if NumberOfPrimaries is 3 or more\n"); + if (ShouldSkip("PICS_USER_PROMPT && CC.S.A0019")) { NextTest(); return; } - err = TestThReadsPrimary3XAttributeFromDut_31(); + err = TestThReadsPrimary3XAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint16Min0Max0xfeffIfNumberOfPrimariesIs3OrMore_31(); break; case 32: - ChipLogProgress(chipTool, " ***** Test Step 32 : TH reads Primary3Y attribute from DUT\n"); - if (ShouldSkip("CC.S.A001a")) { + ChipLogProgress(chipTool, + " ***** Test Step 32 : TH reads Primary3Y attribute from DUT and Verify that the DUT response contains an uint16 " + "[Min:0 Max:0xfeff] if NumberOfPrimaries is 3 or more\n"); + if (ShouldSkip("PICS_USER_PROMPT && CC.S.A001a")) { NextTest(); return; } - err = TestThReadsPrimary3YAttributeFromDut_32(); + err = TestThReadsPrimary3YAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint16Min0Max0xfeffIfNumberOfPrimariesIs3OrMore_32(); break; case 33: - ChipLogProgress(chipTool, " ***** Test Step 33 : TH reads Primary3Intensity attribute from DUT\n"); - if (ShouldSkip("CC.S.A001b")) { + ChipLogProgress(chipTool, + " ***** Test Step 33 : TH reads Primary3Intensity attribute from DUT and Verify that the DUT response contains an " + "uint8 if NumberOfPrimaries is 3 or more\n"); + if (ShouldSkip("PICS_USER_PROMPT && CC.S.A001b")) { NextTest(); return; } - err = TestThReadsPrimary3IntensityAttributeFromDut_33(); + err = TestThReadsPrimary3IntensityAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint8IfNumberOfPrimariesIs3OrMore_33(); break; case 34: - ChipLogProgress(chipTool, " ***** Test Step 34 : TH reads Primary4X attribute from DUT\n"); - if (ShouldSkip("CC.S.A0020")) { + ChipLogProgress(chipTool, + " ***** Test Step 34 : TH reads Primary4X attribute from DUT Verify that the DUT response contains an uint16 " + "[Min:0 Max:0xfeff] if NumberOfPrimaries is 4 or more\n"); + if (ShouldSkip("PICS_USER_PROMPT && CC.S.A0020")) { NextTest(); return; } - err = TestThReadsPrimary4XAttributeFromDut_34(); + err = TestThReadsPrimary4XAttributeFromDutVerifyThatTheDutResponseContainsAnUint16Min0Max0xfeffIfNumberOfPrimariesIs4OrMore_34(); break; case 35: - ChipLogProgress(chipTool, " ***** Test Step 35 : TH reads Primary4Y attribute from DUT\n"); - if (ShouldSkip("CC.S.A0021")) { + ChipLogProgress(chipTool, + " ***** Test Step 35 : TH reads Primary4Y attribute from DUT and Verify that the DUT response contains an uint16 " + "[Min:0 Max:0xfeff] if NumberOfPrimaries is 4 or more\n"); + if (ShouldSkip("PICS_USER_PROMPT && CC.S.A0021")) { NextTest(); return; } - err = TestThReadsPrimary4YAttributeFromDut_35(); + err = TestThReadsPrimary4YAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint16Min0Max0xfeffIfNumberOfPrimariesIs4OrMore_35(); break; case 36: - ChipLogProgress(chipTool, " ***** Test Step 36 : TH reads Primary4Intensity attribute from DUT\n"); - if (ShouldSkip("CC.S.A0022")) { + ChipLogProgress(chipTool, + " ***** Test Step 36 : TH reads Primary4Intensity attribute from DUT and Verify that the DUT response contains an " + "uint8 if NumberOfPrimaries is 4 or more\n"); + if (ShouldSkip("PICS_USER_PROMPT && CC.S.A0022")) { NextTest(); return; } - err = TestThReadsPrimary4IntensityAttributeFromDut_36(); + err = TestThReadsPrimary4IntensityAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint8IfNumberOfPrimariesIs4OrMore_36(); break; case 37: - ChipLogProgress(chipTool, " ***** Test Step 37 : TH reads Primary5X attribute from DUT\n"); - if (ShouldSkip("CC.S.A0024")) { + ChipLogProgress(chipTool, + " ***** Test Step 37 : TH reads Primary5X attribute from DUT and Verify that the DUT response contains an uint16 " + "[Min:0 Max:0xfeff] if NumberOfPrimaries is 5 or more\n"); + if (ShouldSkip("PICS_USER_PROMPT && CC.S.A0024")) { NextTest(); return; } - err = TestThReadsPrimary5XAttributeFromDut_37(); + err = TestThReadsPrimary5XAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint16Min0Max0xfeffIfNumberOfPrimariesIs5OrMore_37(); break; case 38: - ChipLogProgress(chipTool, " ***** Test Step 38 : TH reads Primary5Y attribute from DUT\n"); - if (ShouldSkip("CC.S.A0025")) { + ChipLogProgress(chipTool, + " ***** Test Step 38 : TH reads Primary5Y attribute from DUT and Verify that the DUT response contains an uint16 " + "[Min:0 Max:0xfeff] if NumberOfPrimaries is 5 or more\n"); + if (ShouldSkip("PICS_USER_PROMPT && CC.S.A0025")) { NextTest(); return; } - err = TestThReadsPrimary5YAttributeFromDut_38(); + err = TestThReadsPrimary5YAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint16Min0Max0xfeffIfNumberOfPrimariesIs5OrMore_38(); break; case 39: - ChipLogProgress(chipTool, " ***** Test Step 39 : TH reads Primary5Intensity attribute from DUT\n"); - if (ShouldSkip("CC.S.A0026")) { + ChipLogProgress(chipTool, + " ***** Test Step 39 : TH reads Primary5Intensity attribute from DUT and Verify that the DUT response contains an " + "uint8 if NumberOfPrimaries is 5 or more\n"); + if (ShouldSkip("PICS_USER_PROMPT && CC.S.A0026")) { NextTest(); return; } - err = TestThReadsPrimary5IntensityAttributeFromDut_39(); + err = TestThReadsPrimary5IntensityAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint8IfNumberOfPrimariesIs5OrMore_39(); break; case 40: - ChipLogProgress(chipTool, " ***** Test Step 40 : TH reads Primary6X attribute from DUT\n"); - if (ShouldSkip("CC.S.A0028")) { + ChipLogProgress(chipTool, + " ***** Test Step 40 : TH reads Primary6X attribute from DUT and Verify that the DUT response contains an uint16 " + "[Min:0 Max:0xfeff] if NumberOfPrimaries is 6 or more\n"); + if (ShouldSkip("PICS_USER_PROMPT && CC.S.A0028")) { NextTest(); return; } - err = TestThReadsPrimary6XAttributeFromDut_40(); + err = TestThReadsPrimary6XAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint16Min0Max0xfeffIfNumberOfPrimariesIs6OrMore_40(); break; case 41: - ChipLogProgress(chipTool, " ***** Test Step 41 : TH reads Primary6Y attribute from DUT\n"); - if (ShouldSkip("CC.S.A0029")) { + ChipLogProgress(chipTool, + " ***** Test Step 41 : TH reads Primary6Y attribute from DUT and Verify that the DUT response contains an uint16 " + "[Min:0 Max:0xfeff] if NumberOfPrimaries is 6 or more\n"); + if (ShouldSkip("PICS_USER_PROMPT && CC.S.A0029")) { NextTest(); return; } - err = TestThReadsPrimary6YAttributeFromDut_41(); + err = TestThReadsPrimary6YAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint16Min0Max0xfeffIfNumberOfPrimariesIs6OrMore_41(); break; case 42: - ChipLogProgress(chipTool, " ***** Test Step 42 : TH reads Primary6Intensity attribute from DUT\n"); - if (ShouldSkip("CC.S.A002a")) { + ChipLogProgress(chipTool, + " ***** Test Step 42 : TH reads Primary6Intensity attribute from DUT and Verify that the DUT response contains an " + "uint8 if NumberOfPrimaries is 6 or more\n"); + if (ShouldSkip("PICS_USER_PROMPT && CC.S.A002a")) { NextTest(); return; } - err = TestThReadsPrimary6IntensityAttributeFromDut_42(); + err = TestThReadsPrimary6IntensityAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint8IfNumberOfPrimariesIs6OrMore_42(); break; case 43: ChipLogProgress(chipTool, " ***** Test Step 43 : TH reads WhitePointX attribute from DUT\n"); @@ -4539,436 +4303,184 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestThReadsPrimary1XAttributeFromDut_25() + CHIP_ERROR + TestThReadsPrimary1XAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint16Min0Max0xfeffIfNumberOfPrimariesIs1OrMore_25() { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributePrimary1XWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"TH reads Primary1X attribute from DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("primary1X", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("primary1X", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("primary1X", [value unsignedShortValue], 65279U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); } - CHIP_ERROR TestThReadsPrimary1YAttributeFromDut_26() + CHIP_ERROR + TestThReadsPrimary1YAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint16Min0Max0xfeffIfNumberOfPrimariesIs1OrMore_26() { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributePrimary1YWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"TH reads Primary1Y attribute from DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("primary1Y", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("primary1Y", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("primary1Y", [value unsignedShortValue], 65279U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); } - CHIP_ERROR TestThReadsPrimary1IntensityAttributeFromDut_27() + CHIP_ERROR + TestThReadsPrimary1IntensityAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint8IfNumberOfPrimariesIs1OrMore_27() { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributePrimary1IntensityWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"TH reads Primary1Intensity attribute from DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - if (value != nil) { - - VerifyOrReturn(CheckConstraintType("primary1Intensity", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("primary1Intensity", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("primary1Intensity", [value unsignedCharValue], 255U)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); } - CHIP_ERROR TestThReadsPrimary2XAttributeFromDut_28() + CHIP_ERROR + TestThReadsPrimary2XAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint16Min0Max0xfeffIfNumberOfPrimariesIs2OrMore_28() { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributePrimary2XWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"TH reads Primary2X attribute from DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("primary2X", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("primary2X", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("primary2X", [value unsignedShortValue], 65279U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); } - CHIP_ERROR TestThReadsPrimary2YAttributeFromDut_29() + CHIP_ERROR + TestThReadsPrimary2YAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint16Min0Max0xfeffIfNumberOfPrimariesIs2OrMore_29() { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributePrimary2YWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"TH reads Primary2Y attribute from DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("primary2Y", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("primary2Y", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("primary2Y", [value unsignedShortValue], 65279U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); } - CHIP_ERROR TestThReadsPrimary2IntensityAttributeFromDut_30() + CHIP_ERROR + TestThReadsPrimary2IntensityAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint8IfNumberOfPrimariesIs2OrMore_30() { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributePrimary2IntensityWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"TH reads Primary2Intensity attribute from DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - if (value != nil) { - - VerifyOrReturn(CheckConstraintType("primary2Intensity", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("primary2Intensity", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("primary2Intensity", [value unsignedCharValue], 255U)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); } - CHIP_ERROR TestThReadsPrimary3XAttributeFromDut_31() + CHIP_ERROR + TestThReadsPrimary3XAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint16Min0Max0xfeffIfNumberOfPrimariesIs3OrMore_31() { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributePrimary3XWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"TH reads Primary3X attribute from DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("primary3X", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("primary3X", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("primary3X", [value unsignedShortValue], 65279U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); } - CHIP_ERROR TestThReadsPrimary3YAttributeFromDut_32() + CHIP_ERROR + TestThReadsPrimary3YAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint16Min0Max0xfeffIfNumberOfPrimariesIs3OrMore_32() { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributePrimary3YWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"TH reads Primary3Y attribute from DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("primary3Y", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("primary3Y", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("primary3Y", [value unsignedShortValue], 65279U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); } - CHIP_ERROR TestThReadsPrimary3IntensityAttributeFromDut_33() + CHIP_ERROR + TestThReadsPrimary3IntensityAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint8IfNumberOfPrimariesIs3OrMore_33() { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributePrimary3IntensityWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"TH reads Primary3Intensity attribute from DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - if (value != nil) { - - VerifyOrReturn(CheckConstraintType("primary3Intensity", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("primary3Intensity", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("primary3Intensity", [value unsignedCharValue], 255U)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); } - CHIP_ERROR TestThReadsPrimary4XAttributeFromDut_34() + CHIP_ERROR + TestThReadsPrimary4XAttributeFromDutVerifyThatTheDutResponseContainsAnUint16Min0Max0xfeffIfNumberOfPrimariesIs4OrMore_34() { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributePrimary4XWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"TH reads Primary4X attribute from DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("primary4X", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("primary4X", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("primary4X", [value unsignedShortValue], 65279U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); } - CHIP_ERROR TestThReadsPrimary4YAttributeFromDut_35() + CHIP_ERROR + TestThReadsPrimary4YAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint16Min0Max0xfeffIfNumberOfPrimariesIs4OrMore_35() { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributePrimary4YWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"TH reads Primary4Y attribute from DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("primary4Y", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("primary4Y", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("primary4Y", [value unsignedShortValue], 65279U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); } - CHIP_ERROR TestThReadsPrimary4IntensityAttributeFromDut_36() + CHIP_ERROR + TestThReadsPrimary4IntensityAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint8IfNumberOfPrimariesIs4OrMore_36() { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributePrimary4IntensityWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"TH reads Primary4Intensity attribute from DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - if (value != nil) { - - VerifyOrReturn(CheckConstraintType("primary4Intensity", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("primary4Intensity", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("primary4Intensity", [value unsignedCharValue], 255U)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); } - CHIP_ERROR TestThReadsPrimary5XAttributeFromDut_37() + CHIP_ERROR + TestThReadsPrimary5XAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint16Min0Max0xfeffIfNumberOfPrimariesIs5OrMore_37() { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributePrimary5XWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"TH reads Primary5X attribute from DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("primary5X", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("primary5X", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("primary5X", [value unsignedShortValue], 65279U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); } - CHIP_ERROR TestThReadsPrimary5YAttributeFromDut_38() + CHIP_ERROR + TestThReadsPrimary5YAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint16Min0Max0xfeffIfNumberOfPrimariesIs5OrMore_38() { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributePrimary5YWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"TH reads Primary5Y attribute from DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("primary5Y", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("primary5Y", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("primary5Y", [value unsignedShortValue], 65279U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); } - CHIP_ERROR TestThReadsPrimary5IntensityAttributeFromDut_39() + CHIP_ERROR + TestThReadsPrimary5IntensityAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint8IfNumberOfPrimariesIs5OrMore_39() { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributePrimary5IntensityWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"TH reads Primary5Intensity attribute from DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - if (value != nil) { - - VerifyOrReturn(CheckConstraintType("primary5Intensity", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("primary5Intensity", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("primary5Intensity", [value unsignedCharValue], 255U)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); } - CHIP_ERROR TestThReadsPrimary6XAttributeFromDut_40() + CHIP_ERROR + TestThReadsPrimary6XAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint16Min0Max0xfeffIfNumberOfPrimariesIs6OrMore_40() { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributePrimary6XWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"TH reads Primary6X attribute from DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("primary6X", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("primary6X", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("primary6X", [value unsignedShortValue], 65279U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); } - CHIP_ERROR TestThReadsPrimary6YAttributeFromDut_41() + CHIP_ERROR + TestThReadsPrimary6YAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint16Min0Max0xfeffIfNumberOfPrimariesIs6OrMore_41() { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributePrimary6YWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"TH reads Primary6Y attribute from DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("primary6Y", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("primary6Y", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("primary6Y", [value unsignedShortValue], 65279U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); } - CHIP_ERROR TestThReadsPrimary6IntensityAttributeFromDut_42() + CHIP_ERROR + TestThReadsPrimary6IntensityAttributeFromDutAndVerifyThatTheDutResponseContainsAnUint8IfNumberOfPrimariesIs6OrMore_42() { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributePrimary6IntensityWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"TH reads Primary6Intensity attribute from DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - if (value != nil) { - - VerifyOrReturn(CheckConstraintType("primary6Intensity", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("primary6Intensity", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("primary6Intensity", [value unsignedCharValue], 255U)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); } CHIP_ERROR TestThReadsWhitePointXAttributeFromDut_43() @@ -5234,11 +4746,11 @@ class Test_TC_CC_2_1 : public TestCommandBridge { } }; -class Test_TC_CC_3_1 : public TestCommandBridge { +class Test_TC_CC_3_2 : public TestCommandBridge { public: // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced - Test_TC_CC_3_1() - : TestCommandBridge("Test_TC_CC_3_1") + Test_TC_CC_3_2() + : TestCommandBridge("Test_TC_CC_3_2") , mTestIndex(0) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); @@ -5248,7 +4760,7 @@ class Test_TC_CC_3_1 : public TestCommandBridge { } // NOLINTEND(clang-analyzer-nullability.NullPassedToNonnull) - ~Test_TC_CC_3_1() {} + ~Test_TC_CC_3_2() {} /////////// TestCommand Interface ///////// void NextTest() override @@ -5256,11 +4768,11 @@ class Test_TC_CC_3_1 : public TestCommandBridge { CHIP_ERROR err = CHIP_NO_ERROR; if (0 == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Start: Test_TC_CC_3_1\n"); + ChipLogProgress(chipTool, " **** Test Start: Test_TC_CC_3_2\n"); } if (mTestCount == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Complete: Test_TC_CC_3_1\n"); + ChipLogProgress(chipTool, " **** Test Complete: Test_TC_CC_3_2\n"); SetCommandExitStatus(CHIP_NO_ERROR); return; } @@ -5286,207 +4798,181 @@ class Test_TC_CC_3_1 : public TestCommandBridge { break; case 3: ChipLogProgress(chipTool, " ***** Test Step 3 : Reads CurrentHue attribute from DUT\n"); - if (ShouldSkip("CC.S.A0000")) { + if (ShouldSkip("CC.S.F00 && CC.S.A0000")) { NextTest(); return; } err = TestReadsCurrentHueAttributeFromDut_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Move to hue shortest distance command\n"); - if (ShouldSkip("CC.S.C00.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 4 : Move hue up command\n"); + if (ShouldSkip("CC.S.F00 && CC.S.C01.Rsp")) { NextTest(); return; } - err = TestMoveToHueShortestDistanceCommand_4(); + err = TestMoveHueUpCommand_4(); break; case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Wait 290ms\n"); - err = TestWait290ms_5(); + ChipLogProgress(chipTool, " ***** Test Step 5 : Wait 3000ms\n"); + err = TestWait3000ms_5(); break; case 6: ChipLogProgress( chipTool, " ***** Test Step 6 : Check current hue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0000")) { + if (ShouldSkip("CC.S.F00 && CC.S.A0000")) { NextTest(); return; } err = TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_6(); break; case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : Wait 295ms\n"); - err = TestWait295ms_7(); + ChipLogProgress(chipTool, " ***** Test Step 7 : Wait 2000\n"); + err = TestWait2000_7(); break; case 8: ChipLogProgress( chipTool, " ***** Test Step 8 : Check current hue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0000")) { + if (ShouldSkip("CC.S.F00 && CC.S.A0000")) { NextTest(); return; } err = TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_8(); break; case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Wait 300ms\n"); - err = TestWait300ms_9(); + ChipLogProgress(chipTool, " ***** Test Step 9 : Wait 3000\n"); + err = TestWait3000_9(); break; case 10: ChipLogProgress( chipTool, " ***** Test Step 10 : Check current hue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0000")) { + if (ShouldSkip("CC.S.F00 && CC.S.A0000")) { NextTest(); return; } err = TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_10(); break; case 11: - ChipLogProgress(chipTool, " ***** Test Step 11 : Move to hue longest distance command\n"); - if (ShouldSkip("CC.S.C00.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 11 : Move hue stop command\n"); + if (ShouldSkip("CC.S.F00 && CC.S.C01.Rsp")) { NextTest(); return; } - err = TestMoveToHueLongestDistanceCommand_11(); + err = TestMoveHueStopCommand_11(); break; case 12: - ChipLogProgress(chipTool, " ***** Test Step 12 : Wait 290ms\n"); - err = TestWait290ms_12(); + ChipLogProgress(chipTool, " ***** Test Step 12 : Wait 1000ms\n"); + err = TestWait1000ms_12(); break; case 13: ChipLogProgress( chipTool, " ***** Test Step 13 : Check current hue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0000")) { + if (ShouldSkip("CC.S.F00 && CC.S.A0000")) { NextTest(); return; } err = TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_13(); break; case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : Wait 295ms\n"); - err = TestWait295ms_14(); + ChipLogProgress(chipTool, " ***** Test Step 14 : Wait 1000ms\n"); + err = TestWait1000ms_14(); break; case 15: ChipLogProgress( chipTool, " ***** Test Step 15 : Check current hue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0000")) { + if (ShouldSkip("CC.S.F00 && CC.S.A0000")) { NextTest(); return; } err = TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_15(); break; case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : Wait 300ms\n"); - err = TestWait300ms_16(); - break; - case 17: - ChipLogProgress( - chipTool, " ***** Test Step 17 : Check current hue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0000")) { + ChipLogProgress(chipTool, " ***** Test Step 16 : Move hue down command\n"); + if (ShouldSkip("CC.S.F00 && CC.S.C01.Rsp")) { NextTest(); return; } - err = TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_17(); + err = TestMoveHueDownCommand_16(); + break; + case 17: + ChipLogProgress(chipTool, " ***** Test Step 17 : Wait 1000ms\n"); + err = TestWait1000ms_17(); break; case 18: - ChipLogProgress(chipTool, " ***** Test Step 18 : Move to hue up command\n"); - if (ShouldSkip("CC.S.C00.Rsp")) { + ChipLogProgress( + chipTool, " ***** Test Step 18 : Check current hue attribute value matched the value sent by the last command\n"); + if (ShouldSkip("CC.S.F00 && CC.S.A0000")) { NextTest(); return; } - err = TestMoveToHueUpCommand_18(); + err = TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_18(); break; case 19: - ChipLogProgress(chipTool, " ***** Test Step 19 : Wait 290ms\n"); - err = TestWait290ms_19(); + ChipLogProgress(chipTool, " ***** Test Step 19 : Wait 1000ms\n"); + err = TestWait1000ms_19(); break; case 20: ChipLogProgress( chipTool, " ***** Test Step 20 : Check current hue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0000")) { + if (ShouldSkip("CC.S.F00 && CC.S.A0000")) { NextTest(); return; } err = TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_20(); break; case 21: - ChipLogProgress(chipTool, " ***** Test Step 21 : Wait 295ms\n"); - err = TestWait295ms_21(); + ChipLogProgress(chipTool, " ***** Test Step 21 : Wait 1000ms\n"); + err = TestWait1000ms_21(); break; case 22: ChipLogProgress( chipTool, " ***** Test Step 22 : Check current hue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0000")) { + if (ShouldSkip("CC.S.F00 && CC.S.A0000")) { NextTest(); return; } err = TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_22(); break; case 23: - ChipLogProgress(chipTool, " ***** Test Step 23 : Wait 300ms\n"); - err = TestWait300ms_23(); - break; - case 24: - ChipLogProgress( - chipTool, " ***** Test Step 24 : Check current hue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0000")) { + ChipLogProgress(chipTool, " ***** Test Step 23 : Move hue stop command\n"); + if (ShouldSkip("CC.S.F00 && CC.S.C01.Rsp")) { NextTest(); return; } - err = TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_24(); + err = TestMoveHueStopCommand_23(); + break; + case 24: + ChipLogProgress(chipTool, " ***** Test Step 24 : Wait 1000ms\n"); + err = TestWait1000ms_24(); break; case 25: - ChipLogProgress(chipTool, " ***** Test Step 25 : Move to hue down command\n"); - if (ShouldSkip("CC.S.C00.Rsp")) { + ChipLogProgress( + chipTool, " ***** Test Step 25 : Check current hue attribute value matched the value sent by the last command\n"); + if (ShouldSkip("CC.S.F00 && CC.S.A0000")) { NextTest(); return; } - err = TestMoveToHueDownCommand_25(); + err = TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_25(); break; case 26: - ChipLogProgress(chipTool, " ***** Test Step 26 : Wait 290ms\n"); - err = TestWait290ms_26(); + ChipLogProgress(chipTool, " ***** Test Step 26 : Wait 1000ms\n"); + err = TestWait1000ms_26(); break; case 27: ChipLogProgress( chipTool, " ***** Test Step 27 : Check current hue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0000")) { + if (ShouldSkip("CC.S.F00 && CC.S.A0000")) { NextTest(); return; } err = TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_27(); break; case 28: - ChipLogProgress(chipTool, " ***** Test Step 28 : Wait 295ms\n"); - err = TestWait295ms_28(); + ChipLogProgress(chipTool, " ***** Test Step 28 : Turn off light that we turned on\n"); + err = TestTurnOffLightThatWeTurnedOn_28(); break; case 29: - ChipLogProgress( - chipTool, " ***** Test Step 29 : Check current hue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0000")) { - NextTest(); - return; - } - err = TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_29(); - break; - case 30: - ChipLogProgress(chipTool, " ***** Test Step 30 : Wait 300ms\n"); - err = TestWait300ms_30(); - break; - case 31: - ChipLogProgress( - chipTool, " ***** Test Step 31 : Check current hue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0000")) { - NextTest(); - return; - } - err = TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_31(); - break; - case 32: - ChipLogProgress(chipTool, " ***** Test Step 32 : Turn off light that we turned on\n"); - err = TestTurnOffLightThatWeTurnedOn_32(); - break; - case 33: - ChipLogProgress(chipTool, " ***** Test Step 33 : Check on/off attribute value is false after off command\n"); - err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_33(); + ChipLogProgress(chipTool, " ***** Test Step 29 : Check on/off attribute value is false after off command\n"); + err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_29(); break; } @@ -5589,18 +5075,6 @@ class Test_TC_CC_3_1 : public TestCommandBridge { case 29: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 30: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 31: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 32: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 33: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; } // Go on to the next test. @@ -5614,7 +5088,7 @@ class Test_TC_CC_3_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 34; + const uint16_t mTestCount = 30; chip::Optional mNodeId; chip::Optional mCluster; @@ -5690,7 +5164,7 @@ class Test_TC_CC_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestMoveToHueShortestDistanceCommand_4() + CHIP_ERROR TestMoveHueUpCommand_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -5698,28 +5172,27 @@ class Test_TC_CC_3_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - __auto_type * params = [[MTRColorControlClusterMoveToHueParams alloc] init]; - params.hue = [NSNumber numberWithUnsignedChar:150U]; - params.direction = [NSNumber numberWithUnsignedChar:0U]; - params.transitionTime = [NSNumber numberWithUnsignedShort:300U]; + __auto_type * params = [[MTRColorControlClusterMoveHueParams alloc] init]; + params.moveMode = [NSNumber numberWithUnsignedChar:1U]; + params.rate = [NSNumber numberWithUnsignedChar:50U]; params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; - [cluster moveToHueWithParams:params - completionHandler:^(NSError * _Nullable err) { - NSLog(@"Move to hue shortest distance command Error: %@", err); + [cluster moveHueWithParams:params + completionHandler:^(NSError * _Nullable err) { + NSLog(@"Move hue up command Error: %@", err); - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - NextTest(); - }]; + NextTest(); + }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestWait290ms_5() + CHIP_ERROR TestWait3000ms_5() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 290UL; + value.ms = 3000UL; return WaitForMs("alpha", value); } @@ -5746,10 +5219,10 @@ class Test_TC_CC_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait295ms_7() + CHIP_ERROR TestWait2000_7() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 295UL; + value.ms = 2000UL; return WaitForMs("alpha", value); } @@ -5776,10 +5249,10 @@ class Test_TC_CC_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait300ms_9() + CHIP_ERROR TestWait3000_9() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 300UL; + value.ms = 3000UL; return WaitForMs("alpha", value); } @@ -5806,7 +5279,7 @@ class Test_TC_CC_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestMoveToHueLongestDistanceCommand_11() + CHIP_ERROR TestMoveHueStopCommand_11() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -5814,30 +5287,30 @@ class Test_TC_CC_3_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - __auto_type * params = [[MTRColorControlClusterMoveToHueParams alloc] init]; - params.hue = [NSNumber numberWithUnsignedChar:200U]; - params.direction = [NSNumber numberWithUnsignedChar:1U]; - params.transitionTime = [NSNumber numberWithUnsignedShort:300U]; + __auto_type * params = [[MTRColorControlClusterMoveHueParams alloc] init]; + params.moveMode = [NSNumber numberWithUnsignedChar:0U]; + params.rate = [NSNumber numberWithUnsignedChar:50U]; params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; - [cluster moveToHueWithParams:params - completionHandler:^(NSError * _Nullable err) { - NSLog(@"Move to hue longest distance command Error: %@", err); + [cluster moveHueWithParams:params + completionHandler:^(NSError * _Nullable err) { + NSLog(@"Move hue stop command Error: %@", err); - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - NextTest(); - }]; + NextTest(); + }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestWait290ms_12() + CHIP_ERROR TestWait1000ms_12() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 290UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } + NSNumber * _Nonnull CurrentHueValue; CHIP_ERROR TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_13() { @@ -5855,6 +5328,9 @@ class Test_TC_CC_3_1 : public TestCommandBridge { VerifyOrReturn(CheckConstraintType("currentHue", "", "uint8")); VerifyOrReturn(CheckConstraintMinValue("currentHue", [value unsignedCharValue], 0U)); VerifyOrReturn(CheckConstraintMaxValue("currentHue", [value unsignedCharValue], 254U)); + { + CurrentHueValue = value; + } NextTest(); }]; @@ -5862,10 +5338,10 @@ class Test_TC_CC_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait295ms_14() + CHIP_ERROR TestWait1000ms_14() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 295UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } @@ -5882,9 +5358,10 @@ class Test_TC_CC_3_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintType("currentHue", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentHue", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentHue", [value unsignedCharValue], 254U)); + { + id actualValue = value; + VerifyOrReturn(CheckValue("CurrentHue", actualValue, CurrentHueValue)); + } NextTest(); }]; @@ -5892,14 +5369,39 @@ class Test_TC_CC_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait300ms_16() + CHIP_ERROR TestMoveHueDownCommand_16() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + __auto_type * params = [[MTRColorControlClusterMoveHueParams alloc] init]; + params.moveMode = [NSNumber numberWithUnsignedChar:3U]; + params.rate = [NSNumber numberWithUnsignedChar:50U]; + params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; + params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; + [cluster moveHueWithParams:params + completionHandler:^(NSError * _Nullable err) { + NSLog(@"Move hue down command Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestWait1000ms_17() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 300UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_17() + CHIP_ERROR TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_18() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -5922,36 +5424,10 @@ class Test_TC_CC_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestMoveToHueUpCommand_18() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - __auto_type * params = [[MTRColorControlClusterMoveToHueParams alloc] init]; - params.hue = [NSNumber numberWithUnsignedChar:250U]; - params.direction = [NSNumber numberWithUnsignedChar:2U]; - params.transitionTime = [NSNumber numberWithUnsignedShort:300U]; - params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; - params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; - [cluster moveToHueWithParams:params - completionHandler:^(NSError * _Nullable err) { - NSLog(@"Move to hue up command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait290ms_19() + CHIP_ERROR TestWait1000ms_19() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 290UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } @@ -5978,10 +5454,10 @@ class Test_TC_CC_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait295ms_21() + CHIP_ERROR TestWait1000ms_21() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 295UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } @@ -6008,37 +5484,7 @@ class Test_TC_CC_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait300ms_23() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 300UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_24() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current hue attribute value matched the value sent by the last command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("currentHue", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentHue", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentHue", [value unsignedCharValue], 254U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestMoveToHueDownCommand_25() + CHIP_ERROR TestMoveHueStopCommand_23() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -6046,62 +5492,32 @@ class Test_TC_CC_3_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - __auto_type * params = [[MTRColorControlClusterMoveToHueParams alloc] init]; - params.hue = [NSNumber numberWithUnsignedChar:225U]; - params.direction = [NSNumber numberWithUnsignedChar:3U]; - params.transitionTime = [NSNumber numberWithUnsignedShort:300U]; + __auto_type * params = [[MTRColorControlClusterMoveHueParams alloc] init]; + params.moveMode = [NSNumber numberWithUnsignedChar:0U]; + params.rate = [NSNumber numberWithUnsignedChar:50U]; params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; - [cluster moveToHueWithParams:params - completionHandler:^(NSError * _Nullable err) { - NSLog(@"Move to hue down command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait290ms_26() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 290UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_27() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current hue attribute value matched the value sent by the last command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + [cluster moveHueWithParams:params + completionHandler:^(NSError * _Nullable err) { + NSLog(@"Move hue stop command Error: %@", err); - VerifyOrReturn(CheckConstraintType("currentHue", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentHue", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentHue", [value unsignedCharValue], 254U)); + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - NextTest(); - }]; + NextTest(); + }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestWait295ms_28() + CHIP_ERROR TestWait1000ms_24() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 295UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } + NSNumber * _Nonnull CurrentHueValueAfterStopmode; - CHIP_ERROR TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_29() + CHIP_ERROR TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_25() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -6117,6 +5533,9 @@ class Test_TC_CC_3_1 : public TestCommandBridge { VerifyOrReturn(CheckConstraintType("currentHue", "", "uint8")); VerifyOrReturn(CheckConstraintMinValue("currentHue", [value unsignedCharValue], 0U)); VerifyOrReturn(CheckConstraintMaxValue("currentHue", [value unsignedCharValue], 254U)); + { + CurrentHueValueAfterStopmode = value; + } NextTest(); }]; @@ -6124,14 +5543,14 @@ class Test_TC_CC_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait300ms_30() + CHIP_ERROR TestWait1000ms_26() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 300UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_31() + CHIP_ERROR TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_27() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -6144,9 +5563,10 @@ class Test_TC_CC_3_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintType("currentHue", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentHue", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentHue", [value unsignedCharValue], 254U)); + { + id actualValue = value; + VerifyOrReturn(CheckValue("CurrentHue", actualValue, CurrentHueValueAfterStopmode)); + } NextTest(); }]; @@ -6154,7 +5574,7 @@ class Test_TC_CC_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestTurnOffLightThatWeTurnedOn_32() + CHIP_ERROR TestTurnOffLightThatWeTurnedOn_28() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -6171,7 +5591,7 @@ class Test_TC_CC_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_33() + CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_29() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -6194,11 +5614,11 @@ class Test_TC_CC_3_1 : public TestCommandBridge { } }; -class Test_TC_CC_3_2 : public TestCommandBridge { +class Test_TC_CC_3_3 : public TestCommandBridge { public: // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced - Test_TC_CC_3_2() - : TestCommandBridge("Test_TC_CC_3_2") + Test_TC_CC_3_3() + : TestCommandBridge("Test_TC_CC_3_3") , mTestIndex(0) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); @@ -6208,7 +5628,7 @@ class Test_TC_CC_3_2 : public TestCommandBridge { } // NOLINTEND(clang-analyzer-nullability.NullPassedToNonnull) - ~Test_TC_CC_3_2() {} + ~Test_TC_CC_3_3() {} /////////// TestCommand Interface ///////// void NextTest() override @@ -6216,11 +5636,11 @@ class Test_TC_CC_3_2 : public TestCommandBridge { CHIP_ERROR err = CHIP_NO_ERROR; if (0 == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Start: Test_TC_CC_3_2\n"); + ChipLogProgress(chipTool, " **** Test Start: Test_TC_CC_3_3\n"); } if (mTestCount == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Complete: Test_TC_CC_3_2\n"); + ChipLogProgress(chipTool, " **** Test Complete: Test_TC_CC_3_3\n"); SetCommandExitStatus(CHIP_NO_ERROR); return; } @@ -6246,207 +5666,59 @@ class Test_TC_CC_3_2 : public TestCommandBridge { break; case 3: ChipLogProgress(chipTool, " ***** Test Step 3 : Reads CurrentHue attribute from DUT\n"); - if (ShouldSkip("CC.S.A0000")) { + if (ShouldSkip("CC.S.F00 && CC.S.A0000")) { NextTest(); return; } err = TestReadsCurrentHueAttributeFromDut_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Move hue up command\n"); - if (ShouldSkip("CC.S.C01.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 4 : Step hue up command\n"); + if (ShouldSkip("CC.S.F00 && CC.S.C02.Rsp")) { NextTest(); return; } - err = TestMoveHueUpCommand_4(); + err = TestStepHueUpCommand_4(); break; case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Wait 140ms\n"); - err = TestWait140ms_5(); + ChipLogProgress(chipTool, " ***** Test Step 5 : Wait 1000ms\n"); + err = TestWait1000ms_5(); break; case 6: - ChipLogProgress( - chipTool, " ***** Test Step 6 : Check current hue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0000")) { + ChipLogProgress(chipTool, " ***** Test Step 6 : Over TransitionTime,Read CurrentHue attribute from DUT\n"); + if (ShouldSkip("CC.S.F00 && CC.S.A0000")) { NextTest(); return; } - err = TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_6(); + err = TestOverTransitionTimeReadCurrentHueAttributeFromDut_6(); break; case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : Wait 145ms\n"); - err = TestWait145ms_7(); - break; - case 8: - ChipLogProgress( - chipTool, " ***** Test Step 8 : Check current hue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0000")) { - NextTest(); - return; - } - err = TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_8(); - break; - case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Wait 150ms\n"); - err = TestWait150ms_9(); - break; - case 10: - ChipLogProgress( - chipTool, " ***** Test Step 10 : Check current hue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0000")) { - NextTest(); - return; - } - err = TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_10(); - break; - case 11: - ChipLogProgress(chipTool, " ***** Test Step 11 : Move hue stop command\n"); - if (ShouldSkip("CC.S.C01.Rsp")) { - NextTest(); - return; - } - err = TestMoveHueStopCommand_11(); - break; - case 12: - ChipLogProgress(chipTool, " ***** Test Step 12 : Wait 140ms\n"); - err = TestWait140ms_12(); - break; - case 13: - ChipLogProgress( - chipTool, " ***** Test Step 13 : Check current hue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0000")) { - NextTest(); - return; - } - err = TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_13(); - break; - case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : Wait 145ms\n"); - err = TestWait145ms_14(); - break; - case 15: - ChipLogProgress( - chipTool, " ***** Test Step 15 : Check current hue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0000")) { - NextTest(); - return; - } - err = TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_15(); - break; - case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : Wait 150ms\n"); - err = TestWait150ms_16(); - break; - case 17: - ChipLogProgress( - chipTool, " ***** Test Step 17 : Check current hue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0000")) { - NextTest(); - return; - } - err = TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_17(); - break; - case 18: - ChipLogProgress(chipTool, " ***** Test Step 18 : Move hue down command\n"); - if (ShouldSkip("CC.S.C01.Rsp")) { - NextTest(); - return; - } - err = TestMoveHueDownCommand_18(); - break; - case 19: - ChipLogProgress(chipTool, " ***** Test Step 19 : Wait 140ms\n"); - err = TestWait140ms_19(); - break; - case 20: - ChipLogProgress( - chipTool, " ***** Test Step 20 : Check current hue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0000")) { - NextTest(); - return; - } - err = TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_20(); - break; - case 21: - ChipLogProgress(chipTool, " ***** Test Step 21 : Wait 145ms\n"); - err = TestWait145ms_21(); - break; - case 22: - ChipLogProgress( - chipTool, " ***** Test Step 22 : Check current hue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0000")) { - NextTest(); - return; - } - err = TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_22(); - break; - case 23: - ChipLogProgress(chipTool, " ***** Test Step 23 : Wait 150ms\n"); - err = TestWait150ms_23(); - break; - case 24: - ChipLogProgress( - chipTool, " ***** Test Step 24 : Check current hue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0000")) { - NextTest(); - return; - } - err = TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_24(); - break; - case 25: - ChipLogProgress(chipTool, " ***** Test Step 25 : Move hue stop command\n"); - if (ShouldSkip("CC.S.C01.Rsp")) { - NextTest(); - return; - } - err = TestMoveHueStopCommand_25(); - break; - case 26: - ChipLogProgress(chipTool, " ***** Test Step 26 : Wait 140ms\n"); - err = TestWait140ms_26(); - break; - case 27: - ChipLogProgress( - chipTool, " ***** Test Step 27 : Check current hue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0000")) { - NextTest(); - return; - } - err = TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_27(); - break; - case 28: - ChipLogProgress(chipTool, " ***** Test Step 28 : Wait 145ms\n"); - err = TestWait145ms_28(); - break; - case 29: - ChipLogProgress( - chipTool, " ***** Test Step 29 : Check current hue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0000")) { + ChipLogProgress(chipTool, " ***** Test Step 7 : Step hue down command\n"); + if (ShouldSkip("CC.S.F00 && CC.S.C02.Rsp")) { NextTest(); return; } - err = TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_29(); + err = TestStepHueDownCommand_7(); break; - case 30: - ChipLogProgress(chipTool, " ***** Test Step 30 : Wait 150ms\n"); - err = TestWait150ms_30(); + case 8: + ChipLogProgress(chipTool, " ***** Test Step 8 : Wait 1000ms\n"); + err = TestWait1000ms_8(); break; - case 31: - ChipLogProgress( - chipTool, " ***** Test Step 31 : Check current hue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0000")) { + case 9: + ChipLogProgress(chipTool, " ***** Test Step 9 : Over TransitionTime,Read CurrentHue attribute from DUT\n"); + if (ShouldSkip("CC.S.F00 && CC.S.A0000")) { NextTest(); return; } - err = TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_31(); + err = TestOverTransitionTimeReadCurrentHueAttributeFromDut_9(); break; - case 32: - ChipLogProgress(chipTool, " ***** Test Step 32 : Turn off light that we turned on\n"); - err = TestTurnOffLightThatWeTurnedOn_32(); + case 10: + ChipLogProgress(chipTool, " ***** Test Step 10 : Turn off light that we turned on\n"); + err = TestTurnOffLightThatWeTurnedOn_10(); break; - case 33: - ChipLogProgress(chipTool, " ***** Test Step 33 : Check on/off attribute value is false after off command\n"); - err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_33(); + case 11: + ChipLogProgress(chipTool, " ***** Test Step 11 : Check on/off attribute value is false after off command\n"); + err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_11(); break; } @@ -6495,72 +5767,6 @@ class Test_TC_CC_3_2 : public TestCommandBridge { case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 12: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 13: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 14: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 15: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 16: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 17: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 18: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 19: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 20: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 21: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 22: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 23: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 24: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 25: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 26: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 27: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 28: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 29: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 30: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 31: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 32: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 33: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; } // Go on to the next test. @@ -6574,7 +5780,7 @@ class Test_TC_CC_3_2 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 34; + const uint16_t mTestCount = 12; chip::Optional mNodeId; chip::Optional mCluster; @@ -6650,7 +5856,7 @@ class Test_TC_CC_3_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestMoveHueUpCommand_4() + CHIP_ERROR TestStepHueUpCommand_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -6658,14 +5864,15 @@ class Test_TC_CC_3_2 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - __auto_type * params = [[MTRColorControlClusterMoveHueParams alloc] init]; - params.moveMode = [NSNumber numberWithUnsignedChar:1U]; - params.rate = [NSNumber numberWithUnsignedChar:50U]; + __auto_type * params = [[MTRColorControlClusterStepHueParams alloc] init]; + params.stepMode = [NSNumber numberWithUnsignedChar:1U]; + params.stepSize = [NSNumber numberWithUnsignedChar:5U]; + params.transitionTime = [NSNumber numberWithUnsignedChar:5U]; params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; - [cluster moveHueWithParams:params + [cluster stepHueWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Move hue up command Error: %@", err); + NSLog(@"Step hue up command Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -6675,74 +5882,14 @@ class Test_TC_CC_3_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait140ms_5() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 140UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_6() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current hue attribute value matched the value sent by the last command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("currentHue", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentHue", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentHue", [value unsignedCharValue], 254U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait145ms_7() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 145UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_8() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current hue attribute value matched the value sent by the last command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("currentHue", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentHue", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentHue", [value unsignedCharValue], 254U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait150ms_9() + CHIP_ERROR TestWait1000ms_5() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 150UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_10() + CHIP_ERROR TestOverTransitionTimeReadCurrentHueAttributeFromDut_6() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -6751,12 +5898,12 @@ class Test_TC_CC_3_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current hue attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"Over TransitionTime,Read CurrentHue attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("currentHue", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentHue", [value unsignedCharValue], 0U)); + VerifyOrReturn(CheckConstraintMinValue("currentHue", [value unsignedCharValue], 5U)); VerifyOrReturn(CheckConstraintMaxValue("currentHue", [value unsignedCharValue], 254U)); NextTest(); @@ -6765,7 +5912,7 @@ class Test_TC_CC_3_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestMoveHueStopCommand_11() + CHIP_ERROR TestStepHueDownCommand_7() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -6773,14 +5920,15 @@ class Test_TC_CC_3_2 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - __auto_type * params = [[MTRColorControlClusterMoveHueParams alloc] init]; - params.moveMode = [NSNumber numberWithUnsignedChar:0U]; - params.rate = [NSNumber numberWithUnsignedChar:50U]; + __auto_type * params = [[MTRColorControlClusterStepHueParams alloc] init]; + params.stepMode = [NSNumber numberWithUnsignedChar:3U]; + params.stepSize = [NSNumber numberWithUnsignedChar:5U]; + params.transitionTime = [NSNumber numberWithUnsignedChar:5U]; params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; - [cluster moveHueWithParams:params + [cluster stepHueWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Move hue stop command Error: %@", err); + NSLog(@"Step hue down command Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -6790,14 +5938,14 @@ class Test_TC_CC_3_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait140ms_12() + CHIP_ERROR TestWait1000ms_8() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 140UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_13() + CHIP_ERROR TestOverTransitionTimeReadCurrentHueAttributeFromDut_9() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -6806,13 +5954,13 @@ class Test_TC_CC_3_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current hue attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"Over TransitionTime,Read CurrentHue attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("currentHue", "", "uint8")); VerifyOrReturn(CheckConstraintMinValue("currentHue", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentHue", [value unsignedCharValue], 254U)); + VerifyOrReturn(CheckConstraintMaxValue("currentHue", [value unsignedCharValue], 249U)); NextTest(); }]; @@ -6820,363 +5968,73 @@ class Test_TC_CC_3_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait145ms_14() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 145UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_15() + CHIP_ERROR TestTurnOffLightThatWeTurnedOn_10() { MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; + MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current hue attribute value matched the value sent by the last command Error: %@", err); + [cluster offWithCompletionHandler:^(NSError * _Nullable err) { + NSLog(@"Turn off light that we turned on Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintType("currentHue", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentHue", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentHue", [value unsignedCharValue], 254U)); - NextTest(); }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestWait150ms_16() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 150UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_17() + CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_11() { MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; + MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current hue attribute value matched the value sent by the last command Error: %@", err); + [cluster readAttributeOnOffWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Check on/off attribute value is false after off command Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintType("currentHue", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentHue", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentHue", [value unsignedCharValue], 254U)); + { + id actualValue = value; + VerifyOrReturn(CheckValue("OnOff", actualValue, 0)); + } NextTest(); }]; return CHIP_NO_ERROR; } +}; - CHIP_ERROR TestMoveHueDownCommand_18() +class Test_TC_CC_4_1 : public TestCommandBridge { +public: + // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced + Test_TC_CC_4_1() + : TestCommandBridge("Test_TC_CC_4_1") + , mTestIndex(0) { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - __auto_type * params = [[MTRColorControlClusterMoveHueParams alloc] init]; - params.moveMode = [NSNumber numberWithUnsignedChar:3U]; - params.rate = [NSNumber numberWithUnsignedChar:50U]; - params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; - params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; - [cluster moveHueWithParams:params - completionHandler:^(NSError * _Nullable err) { - NSLog(@"Move hue down command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } + // NOLINTEND(clang-analyzer-nullability.NullPassedToNonnull) - CHIP_ERROR TestWait140ms_19() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 140UL; - return WaitForMs("alpha", value); - } + ~Test_TC_CC_4_1() {} - CHIP_ERROR TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_20() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current hue attribute value matched the value sent by the last command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("currentHue", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentHue", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentHue", [value unsignedCharValue], 254U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait145ms_21() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 145UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_22() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current hue attribute value matched the value sent by the last command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("currentHue", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentHue", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentHue", [value unsignedCharValue], 254U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait150ms_23() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 150UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_24() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current hue attribute value matched the value sent by the last command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("currentHue", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentHue", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentHue", [value unsignedCharValue], 254U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestMoveHueStopCommand_25() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - __auto_type * params = [[MTRColorControlClusterMoveHueParams alloc] init]; - params.moveMode = [NSNumber numberWithUnsignedChar:0U]; - params.rate = [NSNumber numberWithUnsignedChar:50U]; - params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; - params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; - [cluster moveHueWithParams:params - completionHandler:^(NSError * _Nullable err) { - NSLog(@"Move hue stop command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait140ms_26() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 140UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_27() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current hue attribute value matched the value sent by the last command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("currentHue", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentHue", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentHue", [value unsignedCharValue], 254U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait145ms_28() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 145UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_29() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current hue attribute value matched the value sent by the last command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("currentHue", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentHue", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentHue", [value unsignedCharValue], 254U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait150ms_30() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 150UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_31() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current hue attribute value matched the value sent by the last command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("currentHue", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentHue", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentHue", [value unsignedCharValue], 254U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestTurnOffLightThatWeTurnedOn_32() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster offWithCompletionHandler:^(NSError * _Nullable err) { - NSLog(@"Turn off light that we turned on Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_33() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeOnOffWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check on/off attribute value is false after off command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("OnOff", actualValue, 0)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } -}; - -class Test_TC_CC_3_3 : public TestCommandBridge { -public: - // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced - Test_TC_CC_3_3() - : TestCommandBridge("Test_TC_CC_3_3") - , mTestIndex(0) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - // NOLINTEND(clang-analyzer-nullability.NullPassedToNonnull) - - ~Test_TC_CC_3_3() {} - - /////////// TestCommand Interface ///////// - void NextTest() override + /////////// TestCommand Interface ///////// + void NextTest() override { CHIP_ERROR err = CHIP_NO_ERROR; if (0 == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Start: Test_TC_CC_3_3\n"); + ChipLogProgress(chipTool, " **** Test Start: Test_TC_CC_4_1\n"); } if (mTestCount == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Complete: Test_TC_CC_3_3\n"); + ChipLogProgress(chipTool, " **** Test Complete: Test_TC_CC_4_1\n"); SetCommandExitStatus(CHIP_NO_ERROR); return; } @@ -7201,60 +6059,67 @@ class Test_TC_CC_3_3 : public TestCommandBridge { err = TestCheckOnOffAttributeValueIsTrueAfterOnCommand_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Reads CurrentHue attribute from DUT\n"); - if (ShouldSkip("CC.S.A0000")) { + ChipLogProgress(chipTool, " ***** Test Step 3 : Check Saturation attribute value matched before any change\n"); + if (ShouldSkip("CC.S.F00 && CC.S.A0001")) { NextTest(); return; } - err = TestReadsCurrentHueAttributeFromDut_3(); + err = TestCheckSaturationAttributeValueMatchedBeforeAnyChange_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Step hue up command\n"); - if (ShouldSkip("CC.S.C02.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 4 : Move to saturation command\n"); + if (ShouldSkip("CC.S.F00 && CC.S.C03.Rsp")) { NextTest(); return; } - err = TestStepHueUpCommand_4(); + err = TestMoveToSaturationCommand_4(); break; case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Wait 1000ms\n"); - err = TestWait1000ms_5(); + ChipLogProgress(chipTool, " ***** Test Step 5 : Wait 500ms\n"); + err = TestWait500ms_5(); break; case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : Over TransitionTime,Read CurrentHue attribute from DUT\n"); - if (ShouldSkip("CC.S.A0000")) { + ChipLogProgress(chipTool, + " ***** Test Step 6 : Check current saturation attribute value matched the value sent by the last command\n"); + if (ShouldSkip("CC.S.F00 && CC.S.A0001")) { NextTest(); return; } - err = TestOverTransitionTimeReadCurrentHueAttributeFromDut_6(); + err = TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_6(); break; case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : Step hue down command\n"); - if (ShouldSkip("CC.S.C02.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 7 : Wait 500ms\n"); + err = TestWait500ms_7(); + break; + case 8: + ChipLogProgress(chipTool, + " ***** Test Step 8 : Check current saturation attribute value matched the value sent by the last command\n"); + if (ShouldSkip("CC.S.F00 && CC.S.A0001")) { NextTest(); return; } - err = TestStepHueDownCommand_7(); - break; - case 8: - ChipLogProgress(chipTool, " ***** Test Step 8 : Wait 1000ms\n"); - err = TestWait1000ms_8(); + err = TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_8(); break; case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Over TransitionTime,Read CurrentHue attribute from DUT\n"); - if (ShouldSkip("CC.S.A0000")) { + ChipLogProgress(chipTool, " ***** Test Step 9 : Wait 1000ms\n"); + err = TestWait1000ms_9(); + break; + case 10: + ChipLogProgress(chipTool, + " ***** Test Step 10 : Check current saturation attribute value matched the value sent by the last command\n"); + if (ShouldSkip("CC.S.F00 && CC.S.A0001")) { NextTest(); return; } - err = TestOverTransitionTimeReadCurrentHueAttributeFromDut_9(); - break; - case 10: - ChipLogProgress(chipTool, " ***** Test Step 10 : Turn off light that we turned on\n"); - err = TestTurnOffLightThatWeTurnedOn_10(); + err = TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_10(); break; case 11: - ChipLogProgress(chipTool, " ***** Test Step 11 : Check on/off attribute value is false after off command\n"); - err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_11(); + ChipLogProgress(chipTool, " ***** Test Step 11 : Turn off light that we turned on\n"); + err = TestTurnOffLightThatWeTurnedOn_11(); + break; + case 12: + ChipLogProgress(chipTool, " ***** Test Step 12 : Check on/off attribute value is false after off command\n"); + err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_12(); break; } @@ -7303,6 +6168,9 @@ class Test_TC_CC_3_3 : public TestCommandBridge { case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 12: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -7316,7 +6184,7 @@ class Test_TC_CC_3_3 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 12; + const uint16_t mTestCount = 13; chip::Optional mNodeId; chip::Optional mCluster; @@ -7369,7 +6237,7 @@ class Test_TC_CC_3_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsCurrentHueAttributeFromDut_3() + CHIP_ERROR TestCheckSaturationAttributeValueMatchedBeforeAnyChange_3() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -7377,14 +6245,14 @@ class Test_TC_CC_3_3 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads CurrentHue attribute from DUT Error: %@", err); + [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Check Saturation attribute value matched before any change Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintType("currentHue", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentHue", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentHue", [value unsignedCharValue], 254U)); + VerifyOrReturn(CheckConstraintType("currentSaturation", "", "uint8")); + VerifyOrReturn(CheckConstraintMinValue("currentSaturation", [value unsignedCharValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("currentSaturation", [value unsignedCharValue], 254U)); NextTest(); }]; @@ -7392,7 +6260,7 @@ class Test_TC_CC_3_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStepHueUpCommand_4() + CHIP_ERROR TestMoveToSaturationCommand_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -7400,32 +6268,31 @@ class Test_TC_CC_3_3 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - __auto_type * params = [[MTRColorControlClusterStepHueParams alloc] init]; - params.stepMode = [NSNumber numberWithUnsignedChar:1U]; - params.stepSize = [NSNumber numberWithUnsignedChar:5U]; - params.transitionTime = [NSNumber numberWithUnsignedChar:5U]; + __auto_type * params = [[MTRColorControlClusterMoveToSaturationParams alloc] init]; + params.saturation = [NSNumber numberWithUnsignedChar:90U]; + params.transitionTime = [NSNumber numberWithUnsignedShort:15U]; params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; - [cluster stepHueWithParams:params - completionHandler:^(NSError * _Nullable err) { - NSLog(@"Step hue up command Error: %@", err); + [cluster moveToSaturationWithParams:params + completionHandler:^(NSError * _Nullable err) { + NSLog(@"Move to saturation command Error: %@", err); - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - NextTest(); - }]; + NextTest(); + }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestWait1000ms_5() + CHIP_ERROR TestWait500ms_5() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 1000UL; + value.ms = 500UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestOverTransitionTimeReadCurrentHueAttributeFromDut_6() + CHIP_ERROR TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_6() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -7433,14 +6300,14 @@ class Test_TC_CC_3_3 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Over TransitionTime,Read CurrentHue attribute from DUT Error: %@", err); + [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Check current saturation attribute value matched the value sent by the last command Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintType("currentHue", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentHue", [value unsignedCharValue], 5U)); - VerifyOrReturn(CheckConstraintMaxValue("currentHue", [value unsignedCharValue], 254U)); + VerifyOrReturn(CheckConstraintType("currentSaturation", "", "uint8")); + VerifyOrReturn(CheckConstraintMinValue("currentSaturation", [value unsignedCharValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("currentSaturation", [value unsignedCharValue], 254U)); NextTest(); }]; @@ -7448,7 +6315,14 @@ class Test_TC_CC_3_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStepHueDownCommand_7() + CHIP_ERROR TestWait500ms_7() + { + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 500UL; + return WaitForMs("alpha", value); + } + + CHIP_ERROR TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_8() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -7456,32 +6330,29 @@ class Test_TC_CC_3_3 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - __auto_type * params = [[MTRColorControlClusterStepHueParams alloc] init]; - params.stepMode = [NSNumber numberWithUnsignedChar:3U]; - params.stepSize = [NSNumber numberWithUnsignedChar:5U]; - params.transitionTime = [NSNumber numberWithUnsignedChar:5U]; - params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; - params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; - [cluster stepHueWithParams:params - completionHandler:^(NSError * _Nullable err) { - NSLog(@"Step hue down command Error: %@", err); + [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Check current saturation attribute value matched the value sent by the last command Error: %@", err); - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - NextTest(); - }]; + VerifyOrReturn(CheckConstraintType("currentSaturation", "", "uint8")); + VerifyOrReturn(CheckConstraintMinValue("currentSaturation", [value unsignedCharValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("currentSaturation", [value unsignedCharValue], 254U)); + + NextTest(); + }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestWait1000ms_8() + CHIP_ERROR TestWait1000ms_9() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 1000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestOverTransitionTimeReadCurrentHueAttributeFromDut_9() + CHIP_ERROR TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_10() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -7489,14 +6360,15 @@ class Test_TC_CC_3_3 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Over TransitionTime,Read CurrentHue attribute from DUT Error: %@", err); + [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Check current saturation attribute value matched the value sent by the last command Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintType("currentHue", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentHue", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentHue", [value unsignedCharValue], 249U)); + { + id actualValue = value; + VerifyOrReturn(CheckValue("CurrentSaturation", actualValue, 90U)); + } NextTest(); }]; @@ -7504,7 +6376,7 @@ class Test_TC_CC_3_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestTurnOffLightThatWeTurnedOn_10() + CHIP_ERROR TestTurnOffLightThatWeTurnedOn_11() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -7521,7 +6393,7 @@ class Test_TC_CC_3_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_11() + CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_12() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -7544,11 +6416,11 @@ class Test_TC_CC_3_3 : public TestCommandBridge { } }; -class Test_TC_CC_4_1 : public TestCommandBridge { +class Test_TC_CC_4_2 : public TestCommandBridge { public: // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced - Test_TC_CC_4_1() - : TestCommandBridge("Test_TC_CC_4_1") + Test_TC_CC_4_2() + : TestCommandBridge("Test_TC_CC_4_2") , mTestIndex(0) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); @@ -7558,7 +6430,7 @@ class Test_TC_CC_4_1 : public TestCommandBridge { } // NOLINTEND(clang-analyzer-nullability.NullPassedToNonnull) - ~Test_TC_CC_4_1() {} + ~Test_TC_CC_4_2() {} /////////// TestCommand Interface ///////// void NextTest() override @@ -7566,11 +6438,11 @@ class Test_TC_CC_4_1 : public TestCommandBridge { CHIP_ERROR err = CHIP_NO_ERROR; if (0 == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Start: Test_TC_CC_4_1\n"); + ChipLogProgress(chipTool, " **** Test Start: Test_TC_CC_4_2\n"); } if (mTestCount == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Complete: Test_TC_CC_4_1\n"); + ChipLogProgress(chipTool, " **** Test Complete: Test_TC_CC_4_2\n"); SetCommandExitStatus(CHIP_NO_ERROR); return; } @@ -7595,710 +6467,232 @@ class Test_TC_CC_4_1 : public TestCommandBridge { err = TestCheckOnOffAttributeValueIsTrueAfterOnCommand_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Check Saturation attribute value matched before any change\n"); - if (ShouldSkip("CC.S.A0001")) { + ChipLogProgress(chipTool, " ***** Test Step 3 : TH reads CurrentSaturation attribute from DUT\n"); + if (ShouldSkip("CC.S.F00 && CC.S.A0001")) { NextTest(); return; } - err = TestCheckSaturationAttributeValueMatchedBeforeAnyChange_3(); + err = TestThReadsCurrentSaturationAttributeFromDut_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Move to saturation command\n"); - if (ShouldSkip("CC.S.C03.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 4 : TH sends MoveSaturation command to DUT with MoveMode Up\n"); + if (ShouldSkip("CC.S.F00 && CC.S.C04.Rsp")) { NextTest(); return; } - err = TestMoveToSaturationCommand_4(); + err = TestThSendsMoveSaturationCommandToDutWithMoveModeUp_4(); break; case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Wait 6ms\n"); - err = TestWait6ms_5(); + ChipLogProgress(chipTool, " ***** Test Step 5 : Wait 1000ms\n"); + err = TestWait1000ms_5(); break; case 6: - ChipLogProgress(chipTool, - " ***** Test Step 6 : Check current saturation attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0001")) { + ChipLogProgress(chipTool, " ***** Test Step 6 : TH reads CurrentSaturation attribute from DUT several times\n"); + if (ShouldSkip("CC.S.F00 && CC.S.A0001")) { NextTest(); return; } - err = TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_6(); + err = TestThReadsCurrentSaturationAttributeFromDutSeveralTimes_6(); break; case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : Wait 8ms\n"); - err = TestWait8ms_7(); + ChipLogProgress(chipTool, " ***** Test Step 7 : Wait 1000ms\n"); + err = TestWait1000ms_7(); break; case 8: - ChipLogProgress(chipTool, - " ***** Test Step 8 : Check current saturation attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0001")) { + ChipLogProgress(chipTool, " ***** Test Step 8 : TH reads CurrentSaturation attribute from DUT several times\n"); + if (ShouldSkip("CC.S.F00 && CC.S.A0001")) { NextTest(); return; } - err = TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_8(); + err = TestThReadsCurrentSaturationAttributeFromDutSeveralTimes_8(); break; case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Wait 10ms\n"); - err = TestWait10ms_9(); + ChipLogProgress(chipTool, " ***** Test Step 9 : Wait 1000ms\n"); + err = TestWait1000ms_9(); break; case 10: - ChipLogProgress(chipTool, - " ***** Test Step 10 : Check current saturation attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0001")) { + ChipLogProgress(chipTool, " ***** Test Step 10 : TH reads CurrentSaturation attribute from DUT several times\n"); + if (ShouldSkip("CC.S.F00 && CC.S.A0001")) { NextTest(); return; } - err = TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_10(); + err = TestThReadsCurrentSaturationAttributeFromDutSeveralTimes_10(); break; case 11: - ChipLogProgress(chipTool, " ***** Test Step 11 : Turn off light that we turned on\n"); - err = TestTurnOffLightThatWeTurnedOn_11(); + ChipLogProgress(chipTool, " ***** Test Step 11 : TH sends MoveSaturation command to DUT with MoveMode Down\n"); + if (ShouldSkip("CC.S.F00 && CC.S.C04.Rsp")) { + NextTest(); + return; + } + err = TestThSendsMoveSaturationCommandToDutWithMoveModeDown_11(); break; case 12: - ChipLogProgress(chipTool, " ***** Test Step 12 : Check on/off attribute value is false after off command\n"); - err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_12(); + ChipLogProgress(chipTool, " ***** Test Step 12 : Wait 1000ms\n"); + err = TestWait1000ms_12(); break; - } - - if (CHIP_NO_ERROR != err) { - ChipLogError(chipTool, " ***** Test Failure: %s\n", chip::ErrorStr(err)); - SetCommandExitStatus(err); - } - } - - void OnStatusUpdate(const chip::app::StatusIB & status) override - { - switch (mTestIndex - 1) { - case 0: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + case 13: + ChipLogProgress(chipTool, " ***** Test Step 13 : TH reads CurrentSaturation attribute from DUT several times.\n"); + if (ShouldSkip("CC.S.F00 && CC.S.A0001")) { + NextTest(); + return; + } + err = TestThReadsCurrentSaturationAttributeFromDutSeveralTimes_13(); break; - case 1: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + case 14: + ChipLogProgress(chipTool, " ***** Test Step 14 : Wait 1000ms\n"); + err = TestWait1000ms_14(); break; - case 2: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + case 15: + ChipLogProgress(chipTool, " ***** Test Step 15 : TH reads CurrentSaturation attribute from DUT several times.\n"); + if (ShouldSkip("CC.S.F00 && CC.S.A0001")) { + NextTest(); + return; + } + err = TestThReadsCurrentSaturationAttributeFromDutSeveralTimes_15(); break; - case 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + case 16: + ChipLogProgress(chipTool, " ***** Test Step 16 : Wait 1000ms\n"); + err = TestWait1000ms_16(); break; - case 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + case 17: + ChipLogProgress(chipTool, " ***** Test Step 17 : TH reads CurrentSaturation attribute from DUT several times.\n"); + if (ShouldSkip("CC.S.F00 && CC.S.A0001")) { + NextTest(); + return; + } + err = TestThReadsCurrentSaturationAttributeFromDutSeveralTimes_17(); break; - case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + case 18: + ChipLogProgress(chipTool, + " ***** Test Step 18 : TH sends MoveSaturation command to DUT with MoveMode Up to the Maximum allowed " + "Saturation\n"); + if (ShouldSkip("CC.S.F00 && CC.S.C04.Rsp")) { + NextTest(); + return; + } + err = TestThSendsMoveSaturationCommandToDutWithMoveModeUpToTheMaximumAllowedSaturation_18(); break; - case 6: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + case 19: + ChipLogProgress(chipTool, " ***** Test Step 19 : Wait 1000ms\n"); + err = TestWait1000ms_19(); break; - case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + case 20: + ChipLogProgress(chipTool, " ***** Test Step 20 : TH reads CurrentSaturation attribute from DUT\n"); + if (ShouldSkip("CC.S.F00 && CC.S.A0001")) { + NextTest(); + return; + } + err = TestThReadsCurrentSaturationAttributeFromDut_20(); break; - case 8: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + case 21: + ChipLogProgress(chipTool, + " ***** Test Step 21 : TH sends MoveSaturation command to DUT with MoveMode Stop before Saturation reaches the " + "Maximum allowed.\n"); + if (ShouldSkip("CC.S.F00 && CC.S.C04.Rsp")) { + NextTest(); + return; + } + err = TestThSendsMoveSaturationCommandToDutWithMoveModeStopBeforeSaturationReachesTheMaximumAllowed_21(); break; - case 9: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + case 22: + ChipLogProgress(chipTool, " ***** Test Step 22 : Wait 1000ms\n"); + err = TestWait1000ms_22(); break; - case 10: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + case 23: + ChipLogProgress(chipTool, " ***** Test Step 23 : TH reads CurrentSaturation attribute from DUT.\n"); + if (ShouldSkip("CC.S.F00 && CC.S.A0001")) { + NextTest(); + return; + } + err = TestThReadsCurrentSaturationAttributeFromDut_23(); break; - case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + case 24: + ChipLogProgress(chipTool, " ***** Test Step 24 : Wait 1000ms\n"); + err = TestWait1000ms_24(); break; - case 12: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + case 25: + ChipLogProgress(chipTool, " ***** Test Step 25 : CurrentSaturation value Stops incrementing\n"); + if (ShouldSkip("CC.S.F00 && CC.S.A0001")) { + NextTest(); + return; + } + err = TestCurrentSaturationValueStopsIncrementing_25(); break; - } - - // Go on to the next test. - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 13; - - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - CHIP_ERROR TestWaitForTheCommissionedDeviceToBeRetrieved_0() - { - chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; - value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; - return WaitForCommissionee("alpha", value); - } - - CHIP_ERROR TestTurnOnLightForColorControlTests_1() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster onWithCompletionHandler:^(NSError * _Nullable err) { - NSLog(@"Turn on light for color control tests Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestCheckOnOffAttributeValueIsTrueAfterOnCommand_2() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeOnOffWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check on/off attribute value is true after on command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("OnOff", actualValue, 1)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestCheckSaturationAttributeValueMatchedBeforeAnyChange_3() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check Saturation attribute value matched before any change Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("currentSaturation", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentSaturation", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentSaturation", [value unsignedCharValue], 254U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestMoveToSaturationCommand_4() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - __auto_type * params = [[MTRColorControlClusterMoveToSaturationParams alloc] init]; - params.saturation = [NSNumber numberWithUnsignedChar:90U]; - params.transitionTime = [NSNumber numberWithUnsignedShort:10U]; - params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; - params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; - [cluster moveToSaturationWithParams:params - completionHandler:^(NSError * _Nullable err) { - NSLog(@"Move to saturation command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait6ms_5() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 6UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_6() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current saturation attribute value matched the value sent by the last command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("currentSaturation", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentSaturation", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentSaturation", [value unsignedCharValue], 254U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait8ms_7() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 8UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_8() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current saturation attribute value matched the value sent by the last command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("currentSaturation", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentSaturation", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentSaturation", [value unsignedCharValue], 254U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait10ms_9() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 10UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_10() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current saturation attribute value matched the value sent by the last command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("currentSaturation", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentSaturation", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentSaturation", [value unsignedCharValue], 254U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestTurnOffLightThatWeTurnedOn_11() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster offWithCompletionHandler:^(NSError * _Nullable err) { - NSLog(@"Turn off light that we turned on Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_12() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeOnOffWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check on/off attribute value is false after off command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("OnOff", actualValue, 0)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } -}; - -class Test_TC_CC_4_2 : public TestCommandBridge { -public: - // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced - Test_TC_CC_4_2() - : TestCommandBridge("Test_TC_CC_4_2") - , mTestIndex(0) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - // NOLINTEND(clang-analyzer-nullability.NullPassedToNonnull) - - ~Test_TC_CC_4_2() {} - - /////////// TestCommand Interface ///////// - void NextTest() override - { - CHIP_ERROR err = CHIP_NO_ERROR; - - if (0 == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Start: Test_TC_CC_4_2\n"); - } - - if (mTestCount == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Complete: Test_TC_CC_4_2\n"); - SetCommandExitStatus(CHIP_NO_ERROR); - return; - } - - Wait(); - - // Ensure we increment mTestIndex before we start running the relevant - // command. That way if we lose the timeslice after we send the message - // but before our function call returns, we won't end up with an - // incorrect mTestIndex value observed when we get the response. - switch (mTestIndex++) { - case 0: - ChipLogProgress(chipTool, " ***** Test Step 0 : Wait for the commissioned device to be retrieved\n"); - err = TestWaitForTheCommissionedDeviceToBeRetrieved_0(); - break; - case 1: - ChipLogProgress(chipTool, " ***** Test Step 1 : Turn on light for color control tests\n"); - err = TestTurnOnLightForColorControlTests_1(); - break; - case 2: - ChipLogProgress(chipTool, " ***** Test Step 2 : Check on/off attribute value is true after on command\n"); - err = TestCheckOnOffAttributeValueIsTrueAfterOnCommand_2(); - break; - case 3: - ChipLogProgress( - chipTool, " ***** Test Step 3 : Check Saturation attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0001")) { - NextTest(); - return; - } - err = TestCheckSaturationAttributeValueMatchedTheValueSentByTheLastCommand_3(); - break; - case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Move saturation up command\n"); - if (ShouldSkip("CC.S.C04.Rsp")) { - NextTest(); - return; - } - err = TestMoveSaturationUpCommand_4(); - break; - case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Wait 40ms\n"); - err = TestWait40ms_5(); - break; - case 6: - ChipLogProgress(chipTool, - " ***** Test Step 6 : Check current saturation attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0001")) { - NextTest(); - return; - } - err = TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_6(); - break; - case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : Wait 45ms\n"); - err = TestWait45ms_7(); - break; - case 8: - ChipLogProgress(chipTool, - " ***** Test Step 8 : Check current saturation attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0001")) { - NextTest(); - return; - } - err = TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_8(); - break; - case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Wait 50ms\n"); - err = TestWait50ms_9(); - break; - case 10: - ChipLogProgress(chipTool, - " ***** Test Step 10 : Check current saturation attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0001")) { - NextTest(); - return; - } - err = TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_10(); - break; - case 11: - ChipLogProgress(chipTool, " ***** Test Step 11 : Move saturation down command\n"); - if (ShouldSkip("CC.S.C04.Rsp")) { - NextTest(); - return; - } - err = TestMoveSaturationDownCommand_11(); - break; - case 12: - ChipLogProgress(chipTool, " ***** Test Step 12 : Wait 40ms\n"); - err = TestWait40ms_12(); - break; - case 13: - ChipLogProgress(chipTool, - " ***** Test Step 13 : Check current saturation attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0001")) { - NextTest(); - return; - } - err = TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_13(); - break; - case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : Wait 45ms\n"); - err = TestWait45ms_14(); - break; - case 15: - ChipLogProgress(chipTool, - " ***** Test Step 15 : Check current saturation attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0001")) { - NextTest(); - return; - } - err = TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_15(); - break; - case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : Wait 50ms\n"); - err = TestWait50ms_16(); - break; - case 17: - ChipLogProgress(chipTool, - " ***** Test Step 17 : Check current saturation attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0001")) { - NextTest(); - return; - } - err = TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_17(); - break; - case 18: - ChipLogProgress(chipTool, " ***** Test Step 18 : Move saturation up command\n"); - if (ShouldSkip("CC.S.C04.Rsp")) { - NextTest(); - return; - } - err = TestMoveSaturationUpCommand_18(); - break; - case 19: - ChipLogProgress(chipTool, " ***** Test Step 19 : Wait 40ms\n"); - err = TestWait40ms_19(); - break; - case 20: - ChipLogProgress(chipTool, - " ***** Test Step 20 : Check current saturation attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0001")) { - NextTest(); - return; - } - err = TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_20(); - break; - case 21: - ChipLogProgress(chipTool, " ***** Test Step 21 : Wait 45ms\n"); - err = TestWait45ms_21(); - break; - case 22: - ChipLogProgress(chipTool, - " ***** Test Step 22 : Check current saturation attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0001")) { - NextTest(); - return; - } - err = TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_22(); - break; - case 23: - ChipLogProgress(chipTool, " ***** Test Step 23 : Wait 50ms\n"); - err = TestWait50ms_23(); - break; - case 24: + case 26: ChipLogProgress(chipTool, - " ***** Test Step 24 : Check current saturation attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0001")) { - NextTest(); - return; - } - err = TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_24(); - break; - case 25: - ChipLogProgress(chipTool, " ***** Test Step 25 : Move saturation stop command\n"); - if (ShouldSkip("CC.S.C04.Rsp")) { + " ***** Test Step 26 : TH sends MoveSaturation command to DUT with MoveMode Down to the Minimum allowed " + "Saturation\n"); + if (ShouldSkip("CC.S.F00 && CC.S.C04.Rsp")) { NextTest(); return; } - err = TestMoveSaturationStopCommand_25(); - break; - case 26: - ChipLogProgress(chipTool, " ***** Test Step 26 : Wait 40ms\n"); - err = TestWait40ms_26(); + err = TestThSendsMoveSaturationCommandToDutWithMoveModeDownToTheMinimumAllowedSaturation_26(); break; case 27: - ChipLogProgress(chipTool, - " ***** Test Step 27 : Check current saturation attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0001")) { + ChipLogProgress(chipTool, " ***** Test Step 27 : Wait 1000ms\n"); + err = TestWait1000ms_27(); + break; + case 28: + ChipLogProgress(chipTool, " ***** Test Step 28 : TH reads CurrentSaturation attribute from DUT several times.\n"); + if (ShouldSkip("CC.S.F00 && CC.S.A0001")) { NextTest(); return; } - err = TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_27(); - break; - case 28: - ChipLogProgress(chipTool, " ***** Test Step 28 : Wait 45ms\n"); - err = TestWait45ms_28(); + err = TestThReadsCurrentSaturationAttributeFromDutSeveralTimes_28(); break; case 29: - ChipLogProgress(chipTool, - " ***** Test Step 29 : Check current saturation attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0001")) { + ChipLogProgress(chipTool, " ***** Test Step 29 : Wait 1000ms\n"); + err = TestWait1000ms_29(); + break; + case 30: + ChipLogProgress(chipTool, " ***** Test Step 30 : TH reads CurrentSaturation attribute from DUT several times.\n"); + if (ShouldSkip("CC.S.F00 && CC.S.A0001")) { NextTest(); return; } - err = TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_29(); - break; - case 30: - ChipLogProgress(chipTool, " ***** Test Step 30 : Wait 50ms\n"); - err = TestWait50ms_30(); + err = TestThReadsCurrentSaturationAttributeFromDutSeveralTimes_30(); break; case 31: ChipLogProgress(chipTool, - " ***** Test Step 31 : Check current saturation attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0001")) { + " ***** Test Step 31 : TH sends MoveSaturation command to DUT with MoveMode Stop before Saturation reaches the " + "Minimum allowed\n"); + if (ShouldSkip("CC.S.F00 && CC.S.C04.Rsp")) { NextTest(); return; } - err = TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_31(); + err = TestThSendsMoveSaturationCommandToDutWithMoveModeStopBeforeSaturationReachesTheMinimumAllowed_31(); break; case 32: - ChipLogProgress(chipTool, " ***** Test Step 32 : Move saturation down command\n"); - if (ShouldSkip("CC.S.C04.Rsp")) { - NextTest(); - return; - } - err = TestMoveSaturationDownCommand_32(); + ChipLogProgress(chipTool, " ***** Test Step 32 : Wait 1000ms\n"); + err = TestWait1000ms_32(); break; case 33: - ChipLogProgress(chipTool, " ***** Test Step 33 : Wait 40ms\n"); - err = TestWait40ms_33(); - break; - case 34: - ChipLogProgress(chipTool, - " ***** Test Step 34 : Check current saturation attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0001")) { - NextTest(); - return; - } - err = TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_34(); - break; - case 35: - ChipLogProgress(chipTool, " ***** Test Step 35 : Wait 45ms\n"); - err = TestWait45ms_35(); - break; - case 36: - ChipLogProgress(chipTool, - " ***** Test Step 36 : Check current saturation attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0001")) { - NextTest(); - return; - } - err = TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_36(); - break; - case 37: - ChipLogProgress(chipTool, " ***** Test Step 37 : Wait 50ms\n"); - err = TestWait50ms_37(); - break; - case 38: - ChipLogProgress(chipTool, - " ***** Test Step 38 : Check current saturation attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0001")) { - NextTest(); - return; - } - err = TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_38(); - break; - case 39: - ChipLogProgress(chipTool, " ***** Test Step 39 : Move saturation stop command\n"); - if (ShouldSkip("CC.S.C04.Rsp")) { - NextTest(); - return; - } - err = TestMoveSaturationStopCommand_39(); - break; - case 40: - ChipLogProgress(chipTool, " ***** Test Step 40 : Wait 40ms\n"); - err = TestWait40ms_40(); - break; - case 41: - ChipLogProgress(chipTool, - " ***** Test Step 41 : Check current saturation attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0001")) { - NextTest(); - return; - } - err = TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_41(); - break; - case 42: - ChipLogProgress(chipTool, " ***** Test Step 42 : Wait 45ms\n"); - err = TestWait45ms_42(); - break; - case 43: - ChipLogProgress(chipTool, - " ***** Test Step 43 : Check current saturation attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0001")) { + ChipLogProgress(chipTool, " ***** Test Step 33 : TH reads CurrentSaturation attribute from DUT\n"); + if (ShouldSkip("CC.S.F00 && CC.S.A0001")) { NextTest(); return; } - err = TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_43(); + err = TestThReadsCurrentSaturationAttributeFromDut_33(); break; - case 44: - ChipLogProgress(chipTool, " ***** Test Step 44 : Wait 50ms\n"); - err = TestWait50ms_44(); + case 34: + ChipLogProgress(chipTool, " ***** Test Step 34 : Wait 1000ms\n"); + err = TestWait1000ms_34(); break; - case 45: - ChipLogProgress(chipTool, - " ***** Test Step 45 : Check current saturation attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0001")) { + case 35: + ChipLogProgress(chipTool, " ***** Test Step 35 : CurrentSaturation value Stops decrementing\n"); + if (ShouldSkip("CC.S.F00 && CC.S.A0001")) { NextTest(); return; } - err = TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_45(); + err = TestCurrentSaturationValueStopsDecrementing_35(); break; - case 46: - ChipLogProgress(chipTool, " ***** Test Step 46 : Turn off light that we turned on\n"); - err = TestTurnOffLightThatWeTurnedOn_46(); + case 36: + ChipLogProgress(chipTool, " ***** Test Step 36 : Turn off light that we turned on\n"); + err = TestTurnOffLightThatWeTurnedOn_36(); break; - case 47: - ChipLogProgress(chipTool, " ***** Test Step 47 : Check on/off attribute value is false after off command\n"); - err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_47(); + case 37: + ChipLogProgress(chipTool, " ***** Test Step 37 : Check on/off attribute value is false after off command\n"); + err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_37(); break; } @@ -8425,36 +6819,6 @@ class Test_TC_CC_4_2 : public TestCommandBridge { 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; - case 42: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 43: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 44: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 45: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 46: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 47: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; } // Go on to the next test. @@ -8468,7 +6832,7 @@ class Test_TC_CC_4_2 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 48; + const uint16_t mTestCount = 38; chip::Optional mNodeId; chip::Optional mCluster; @@ -8521,7 +6885,7 @@ class Test_TC_CC_4_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckSaturationAttributeValueMatchedTheValueSentByTheLastCommand_3() + CHIP_ERROR TestThReadsCurrentSaturationAttributeFromDut_3() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -8530,7 +6894,7 @@ class Test_TC_CC_4_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check Saturation attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"TH reads CurrentSaturation attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -8544,7 +6908,7 @@ class Test_TC_CC_4_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestMoveSaturationUpCommand_4() + CHIP_ERROR TestThSendsMoveSaturationCommandToDutWithMoveModeUp_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -8554,12 +6918,12 @@ class Test_TC_CC_4_2 : public TestCommandBridge { __auto_type * params = [[MTRColorControlClusterMoveSaturationParams alloc] init]; params.moveMode = [NSNumber numberWithUnsignedChar:1U]; - params.rate = [NSNumber numberWithUnsignedChar:5U]; + params.rate = [NSNumber numberWithUnsignedChar:15U]; params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster moveSaturationWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Move saturation up command Error: %@", err); + NSLog(@"TH sends MoveSaturation command to DUT with MoveMode Up Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -8569,14 +6933,14 @@ class Test_TC_CC_4_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait40ms_5() + CHIP_ERROR TestWait1000ms_5() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 40UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_6() + CHIP_ERROR TestThReadsCurrentSaturationAttributeFromDutSeveralTimes_6() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -8585,7 +6949,7 @@ class Test_TC_CC_4_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current saturation attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"TH reads CurrentSaturation attribute from DUT several times Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -8599,14 +6963,14 @@ class Test_TC_CC_4_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait45ms_7() + CHIP_ERROR TestWait1000ms_7() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 45UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_8() + CHIP_ERROR TestThReadsCurrentSaturationAttributeFromDutSeveralTimes_8() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -8615,7 +6979,7 @@ class Test_TC_CC_4_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current saturation attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"TH reads CurrentSaturation attribute from DUT several times Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -8629,14 +6993,14 @@ class Test_TC_CC_4_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait50ms_9() + CHIP_ERROR TestWait1000ms_9() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 50UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_10() + CHIP_ERROR TestThReadsCurrentSaturationAttributeFromDutSeveralTimes_10() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -8645,7 +7009,7 @@ class Test_TC_CC_4_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current saturation attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"TH reads CurrentSaturation attribute from DUT several times Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -8659,7 +7023,7 @@ class Test_TC_CC_4_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestMoveSaturationDownCommand_11() + CHIP_ERROR TestThSendsMoveSaturationCommandToDutWithMoveModeDown_11() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -8669,12 +7033,12 @@ class Test_TC_CC_4_2 : public TestCommandBridge { __auto_type * params = [[MTRColorControlClusterMoveSaturationParams alloc] init]; params.moveMode = [NSNumber numberWithUnsignedChar:3U]; - params.rate = [NSNumber numberWithUnsignedChar:5U]; + params.rate = [NSNumber numberWithUnsignedChar:10U]; params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster moveSaturationWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Move saturation down command Error: %@", err); + NSLog(@"TH sends MoveSaturation command to DUT with MoveMode Down Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -8684,14 +7048,14 @@ class Test_TC_CC_4_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait40ms_12() + CHIP_ERROR TestWait1000ms_12() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 40UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_13() + CHIP_ERROR TestThReadsCurrentSaturationAttributeFromDutSeveralTimes_13() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -8700,7 +7064,7 @@ class Test_TC_CC_4_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current saturation attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"TH reads CurrentSaturation attribute from DUT several times. Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -8714,14 +7078,14 @@ class Test_TC_CC_4_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait45ms_14() + CHIP_ERROR TestWait1000ms_14() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 45UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_15() + CHIP_ERROR TestThReadsCurrentSaturationAttributeFromDutSeveralTimes_15() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -8730,7 +7094,7 @@ class Test_TC_CC_4_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current saturation attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"TH reads CurrentSaturation attribute from DUT several times. Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -8744,14 +7108,14 @@ class Test_TC_CC_4_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait50ms_16() + CHIP_ERROR TestWait1000ms_16() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 50UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_17() + CHIP_ERROR TestThReadsCurrentSaturationAttributeFromDutSeveralTimes_17() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -8760,7 +7124,7 @@ class Test_TC_CC_4_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current saturation attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"TH reads CurrentSaturation attribute from DUT several times. Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -8774,7 +7138,7 @@ class Test_TC_CC_4_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestMoveSaturationUpCommand_18() + CHIP_ERROR TestThSendsMoveSaturationCommandToDutWithMoveModeUpToTheMaximumAllowedSaturation_18() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -8784,89 +7148,31 @@ class Test_TC_CC_4_2 : public TestCommandBridge { __auto_type * params = [[MTRColorControlClusterMoveSaturationParams alloc] init]; params.moveMode = [NSNumber numberWithUnsignedChar:1U]; - params.rate = [NSNumber numberWithUnsignedChar:5U]; + params.rate = [NSNumber numberWithUnsignedChar:100U]; params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; - [cluster moveSaturationWithParams:params - completionHandler:^(NSError * _Nullable err) { - NSLog(@"Move saturation up command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait40ms_19() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 40UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_20() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current saturation attribute value matched the value sent by the last command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("currentSaturation", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentSaturation", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentSaturation", [value unsignedCharValue], 254U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait45ms_21() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 45UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_22() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current saturation attribute value matched the value sent by the last command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + [cluster + moveSaturationWithParams:params + completionHandler:^(NSError * _Nullable err) { + NSLog(@"TH sends MoveSaturation command to DUT with MoveMode Up to the Maximum allowed Saturation Error: %@", + err); - VerifyOrReturn(CheckConstraintType("currentSaturation", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentSaturation", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentSaturation", [value unsignedCharValue], 254U)); + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - NextTest(); - }]; + NextTest(); + }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestWait50ms_23() + CHIP_ERROR TestWait1000ms_19() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 50UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_24() + CHIP_ERROR TestThReadsCurrentSaturationAttributeFromDut_20() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -8875,7 +7181,7 @@ class Test_TC_CC_4_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current saturation attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"TH reads CurrentSaturation attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -8889,7 +7195,7 @@ class Test_TC_CC_4_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestMoveSaturationStopCommand_25() + CHIP_ERROR TestThSendsMoveSaturationCommandToDutWithMoveModeStopBeforeSaturationReachesTheMaximumAllowed_21() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -8899,12 +7205,14 @@ class Test_TC_CC_4_2 : public TestCommandBridge { __auto_type * params = [[MTRColorControlClusterMoveSaturationParams alloc] init]; params.moveMode = [NSNumber numberWithUnsignedChar:0U]; - params.rate = [NSNumber numberWithUnsignedChar:5U]; + params.rate = [NSNumber numberWithUnsignedChar:50U]; params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster moveSaturationWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Move saturation stop command Error: %@", err); + NSLog(@"TH sends MoveSaturation command to DUT with MoveMode Stop before Saturation reaches the " + @"Maximum allowed. Error: %@", + err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -8914,44 +7222,15 @@ class Test_TC_CC_4_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait40ms_26() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 40UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_27() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current saturation attribute value matched the value sent by the last command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("currentSaturation", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentSaturation", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentSaturation", [value unsignedCharValue], 254U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait45ms_28() + CHIP_ERROR TestWait1000ms_22() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 45UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } + NSNumber * _Nonnull CurrentSaturationStep4d; - CHIP_ERROR TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_29() + CHIP_ERROR TestThReadsCurrentSaturationAttributeFromDut_23() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -8960,13 +7239,16 @@ class Test_TC_CC_4_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current saturation attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"TH reads CurrentSaturation attribute from DUT. Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("currentSaturation", "", "uint8")); VerifyOrReturn(CheckConstraintMinValue("currentSaturation", [value unsignedCharValue], 0U)); VerifyOrReturn(CheckConstraintMaxValue("currentSaturation", [value unsignedCharValue], 254U)); + { + CurrentSaturationStep4d = value; + } NextTest(); }]; @@ -8974,14 +7256,14 @@ class Test_TC_CC_4_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait50ms_30() + CHIP_ERROR TestWait1000ms_24() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 50UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_31() + CHIP_ERROR TestCurrentSaturationValueStopsIncrementing_25() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -8990,13 +7272,14 @@ class Test_TC_CC_4_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current saturation attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"CurrentSaturation value Stops incrementing Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintType("currentSaturation", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentSaturation", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentSaturation", [value unsignedCharValue], 254U)); + { + id actualValue = value; + VerifyOrReturn(CheckValue("CurrentSaturation", actualValue, CurrentSaturationStep4d)); + } NextTest(); }]; @@ -9004,7 +7287,7 @@ class Test_TC_CC_4_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestMoveSaturationDownCommand_32() + CHIP_ERROR TestThSendsMoveSaturationCommandToDutWithMoveModeDownToTheMinimumAllowedSaturation_26() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -9014,59 +7297,33 @@ class Test_TC_CC_4_2 : public TestCommandBridge { __auto_type * params = [[MTRColorControlClusterMoveSaturationParams alloc] init]; params.moveMode = [NSNumber numberWithUnsignedChar:3U]; - params.rate = [NSNumber numberWithUnsignedChar:5U]; + params.rate = [NSNumber numberWithUnsignedChar:10U]; params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; - [cluster moveSaturationWithParams:params - completionHandler:^(NSError * _Nullable err) { - NSLog(@"Move saturation down command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait40ms_33() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 40UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_34() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current saturation attribute value matched the value sent by the last command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + [cluster + moveSaturationWithParams:params + completionHandler:^(NSError * _Nullable err) { + NSLog( + @"TH sends MoveSaturation command to DUT with MoveMode Down to the Minimum allowed Saturation Error: %@", + err); - VerifyOrReturn(CheckConstraintType("currentSaturation", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentSaturation", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentSaturation", [value unsignedCharValue], 254U)); + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - NextTest(); - }]; + NextTest(); + }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestWait45ms_35() + CHIP_ERROR TestWait1000ms_27() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 45UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } + NSNumber * _Nonnull CurrentSaturationStep5b; - CHIP_ERROR TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_36() + CHIP_ERROR TestThReadsCurrentSaturationAttributeFromDutSeveralTimes_28() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -9075,13 +7332,16 @@ class Test_TC_CC_4_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current saturation attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"TH reads CurrentSaturation attribute from DUT several times. Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("currentSaturation", "", "uint8")); VerifyOrReturn(CheckConstraintMinValue("currentSaturation", [value unsignedCharValue], 0U)); VerifyOrReturn(CheckConstraintMaxValue("currentSaturation", [value unsignedCharValue], 254U)); + { + CurrentSaturationStep5b = value; + } NextTest(); }]; @@ -9089,14 +7349,14 @@ class Test_TC_CC_4_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait50ms_37() + CHIP_ERROR TestWait1000ms_29() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 50UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_38() + CHIP_ERROR TestThReadsCurrentSaturationAttributeFromDutSeveralTimes_30() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -9105,13 +7365,14 @@ class Test_TC_CC_4_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current saturation attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"TH reads CurrentSaturation attribute from DUT several times. Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("currentSaturation", "", "uint8")); VerifyOrReturn(CheckConstraintMinValue("currentSaturation", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentSaturation", [value unsignedCharValue], 254U)); + VerifyOrReturn( + CheckConstraintMaxValue("currentSaturation", [value unsignedCharValue], CurrentSaturationStep5b)); NextTest(); }]; @@ -9119,7 +7380,7 @@ class Test_TC_CC_4_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestMoveSaturationStopCommand_39() + CHIP_ERROR TestThSendsMoveSaturationCommandToDutWithMoveModeStopBeforeSaturationReachesTheMinimumAllowed_31() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -9129,12 +7390,14 @@ class Test_TC_CC_4_2 : public TestCommandBridge { __auto_type * params = [[MTRColorControlClusterMoveSaturationParams alloc] init]; params.moveMode = [NSNumber numberWithUnsignedChar:0U]; - params.rate = [NSNumber numberWithUnsignedChar:5U]; + params.rate = [NSNumber numberWithUnsignedChar:10U]; params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster moveSaturationWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Move saturation stop command Error: %@", err); + NSLog(@"TH sends MoveSaturation command to DUT with MoveMode Stop before Saturation reaches the " + @"Minimum allowed Error: %@", + err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -9144,44 +7407,15 @@ class Test_TC_CC_4_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait40ms_40() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 40UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_41() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current saturation attribute value matched the value sent by the last command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("currentSaturation", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentSaturation", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentSaturation", [value unsignedCharValue], 254U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait45ms_42() + CHIP_ERROR TestWait1000ms_32() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 45UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } + NSNumber * _Nonnull CurrentSaturationStep5d; - CHIP_ERROR TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_43() + CHIP_ERROR TestThReadsCurrentSaturationAttributeFromDut_33() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -9190,13 +7424,16 @@ class Test_TC_CC_4_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current saturation attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"TH reads CurrentSaturation attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("currentSaturation", "", "uint8")); VerifyOrReturn(CheckConstraintMinValue("currentSaturation", [value unsignedCharValue], 0U)); VerifyOrReturn(CheckConstraintMaxValue("currentSaturation", [value unsignedCharValue], 254U)); + { + CurrentSaturationStep5d = value; + } NextTest(); }]; @@ -9204,14 +7441,14 @@ class Test_TC_CC_4_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait50ms_44() + CHIP_ERROR TestWait1000ms_34() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 50UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_45() + CHIP_ERROR TestCurrentSaturationValueStopsDecrementing_35() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -9220,13 +7457,14 @@ class Test_TC_CC_4_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current saturation attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"CurrentSaturation value Stops decrementing Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintType("currentSaturation", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentSaturation", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentSaturation", [value unsignedCharValue], 254U)); + { + id actualValue = value; + VerifyOrReturn(CheckValue("CurrentSaturation", actualValue, CurrentSaturationStep5d)); + } NextTest(); }]; @@ -9234,7 +7472,7 @@ class Test_TC_CC_4_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestTurnOffLightThatWeTurnedOn_46() + CHIP_ERROR TestTurnOffLightThatWeTurnedOn_36() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -9251,7 +7489,7 @@ class Test_TC_CC_4_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_47() + CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_37() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -9325,52 +7563,52 @@ class Test_TC_CC_4_3 : public TestCommandBridge { err = TestCheckOnOffAttributeValueIsTrueAfterOnCommand_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Reads CurrentSaturation attribute from DUT\n"); - if (ShouldSkip("CC.S.A0001")) { + ChipLogProgress(chipTool, " ***** Test Step 3 : TH reads CurrentSaturation attribute from DUT\n"); + if (ShouldSkip("CC.S.F00 && CC.S.A0001")) { NextTest(); return; } - err = TestReadsCurrentSaturationAttributeFromDut_3(); + err = TestThReadsCurrentSaturationAttributeFromDut_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Step saturation up command\n"); - if (ShouldSkip("CC.S.C05.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 4 : TH sends StepSaturation command to DUT with StepMode Up\n"); + if (ShouldSkip("CC.S.F00 && CC.S.C05.Rsp")) { NextTest(); return; } - err = TestStepSaturationUpCommand_4(); + err = TestThSendsStepSaturationCommandToDutWithStepModeUp_4(); break; case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Wait 10ms\n"); - err = TestWait10ms_5(); + ChipLogProgress(chipTool, " ***** Test Step 5 : Wait 1000ms\n"); + err = TestWait1000ms_5(); break; case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : Over TransitionTime,Read CurrentSaturation attribute from DUT\n"); - if (ShouldSkip("CC.S.A0001")) { + ChipLogProgress(chipTool, " ***** Test Step 6 : Over TransitionTime,TH read CurrentSaturation attribute from DUT\n"); + if (ShouldSkip("CC.S.F00 && CC.S.A0001")) { NextTest(); return; } - err = TestOverTransitionTimeReadCurrentSaturationAttributeFromDut_6(); + err = TestOverTransitionTimeTHReadCurrentSaturationAttributeFromDut_6(); break; case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : Step saturation down command\n"); - if (ShouldSkip("CC.S.C05.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 7 : TH sends StepSaturation command to DUT with StepMode Down\n"); + if (ShouldSkip("CC.S.F00 && CC.S.C05.Rsp")) { NextTest(); return; } - err = TestStepSaturationDownCommand_7(); + err = TestThSendsStepSaturationCommandToDutWithStepModeDown_7(); break; case 8: - ChipLogProgress(chipTool, " ***** Test Step 8 : Wait 10ms\n"); - err = TestWait10ms_8(); + ChipLogProgress(chipTool, " ***** Test Step 8 : Wait 1000ms\n"); + err = TestWait1000ms_8(); break; case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Over TransitionTime,Reads CurrentSaturation attribute from DUT\n"); - if (ShouldSkip("CC.S.A0001")) { + ChipLogProgress(chipTool, " ***** Test Step 9 : Over TransitionTime,TH reads CurrentSaturation attribute from DUT\n"); + if (ShouldSkip("CC.S.F00 && CC.S.A0001")) { NextTest(); return; } - err = TestOverTransitionTimeReadsCurrentSaturationAttributeFromDut_9(); + err = TestOverTransitionTimeTHReadsCurrentSaturationAttributeFromDut_9(); break; case 10: ChipLogProgress(chipTool, " ***** Test Step 10 : Turn off light that we turned on\n"); @@ -9493,7 +7731,7 @@ class Test_TC_CC_4_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsCurrentSaturationAttributeFromDut_3() + CHIP_ERROR TestThReadsCurrentSaturationAttributeFromDut_3() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -9502,7 +7740,7 @@ class Test_TC_CC_4_3 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads CurrentSaturation attribute from DUT Error: %@", err); + NSLog(@"TH reads CurrentSaturation attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -9516,7 +7754,7 @@ class Test_TC_CC_4_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStepSaturationUpCommand_4() + CHIP_ERROR TestThSendsStepSaturationCommandToDutWithStepModeUp_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -9532,7 +7770,7 @@ class Test_TC_CC_4_3 : public TestCommandBridge { params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster stepSaturationWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Step saturation up command Error: %@", err); + NSLog(@"TH sends StepSaturation command to DUT with StepMode Up Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -9542,14 +7780,14 @@ class Test_TC_CC_4_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait10ms_5() + CHIP_ERROR TestWait1000ms_5() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 10UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestOverTransitionTimeReadCurrentSaturationAttributeFromDut_6() + CHIP_ERROR TestOverTransitionTimeTHReadCurrentSaturationAttributeFromDut_6() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -9558,7 +7796,7 @@ class Test_TC_CC_4_3 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Over TransitionTime,Read CurrentSaturation attribute from DUT Error: %@", err); + NSLog(@"Over TransitionTime,TH read CurrentSaturation attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -9572,7 +7810,7 @@ class Test_TC_CC_4_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStepSaturationDownCommand_7() + CHIP_ERROR TestThSendsStepSaturationCommandToDutWithStepModeDown_7() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -9588,7 +7826,7 @@ class Test_TC_CC_4_3 : public TestCommandBridge { params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster stepSaturationWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Step saturation down command Error: %@", err); + NSLog(@"TH sends StepSaturation command to DUT with StepMode Down Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -9598,14 +7836,14 @@ class Test_TC_CC_4_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait10ms_8() + CHIP_ERROR TestWait1000ms_8() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 10UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestOverTransitionTimeReadsCurrentSaturationAttributeFromDut_9() + CHIP_ERROR TestOverTransitionTimeTHReadsCurrentSaturationAttributeFromDut_9() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -9614,7 +7852,7 @@ class Test_TC_CC_4_3 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Over TransitionTime,Reads CurrentSaturation attribute from DUT Error: %@", err); + NSLog(@"Over TransitionTime,TH reads CurrentSaturation attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -9719,50 +7957,48 @@ class Test_TC_CC_4_4 : public TestCommandBridge { err = TestCheckOnOffAttributeValueIsTrueAfterOnCommand_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Check current hue attribute value matched before any change\n"); - if (ShouldSkip("CC.S.A0000")) { + ChipLogProgress(chipTool, " ***** Test Step 3 : TH reads CurrentHue attribute from DUT.\n"); + if (ShouldSkip("CC.S.F01 && CC.S.A0000")) { NextTest(); return; } - err = TestCheckCurrentHueAttributeValueMatchedBeforeAnyChange_3(); + err = TestThReadsCurrentHueAttributeFromDut_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Check Saturation attribute value matched before any change\n"); - if (ShouldSkip("CC.S.A0001")) { + ChipLogProgress(chipTool, " ***** Test Step 4 : TH reads CurrentSaturation attribute from DUT\n"); + if (ShouldSkip("CC.S.F01 && CC.S.A0001")) { NextTest(); return; } - err = TestCheckSaturationAttributeValueMatchedBeforeAnyChange_4(); + err = TestThReadsCurrentSaturationAttributeFromDut_4(); break; case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Move To current hue and saturation command\n"); - if (ShouldSkip("CC.S.C06.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 5 : TH sends MoveToHueAndSaturation command to DUT.\n"); + if (ShouldSkip("CC.S.F01 && CC.S.C06.Rsp")) { NextTest(); return; } - err = TestMoveToCurrentHueAndSaturationCommand_5(); + err = TestThSendsMoveToHueAndSaturationCommandToDut_5(); break; case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : Wait 10ms\n"); - err = TestWait10ms_6(); + ChipLogProgress(chipTool, " ***** Test Step 6 : Wait 1000ms\n"); + err = TestWait1000ms_6(); break; case 7: - ChipLogProgress( - chipTool, " ***** Test Step 7 : Check current hue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0000")) { + ChipLogProgress(chipTool, " ***** Test Step 7 : Over TransitionTime, TH reads CurrentHue attribute from DUT\n"); + if (ShouldSkip("CC.S.F01 && CC.S.A0000")) { NextTest(); return; } - err = TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_7(); + err = TestOverTransitionTimeThReadsCurrentHueAttributeFromDut_7(); break; case 8: - ChipLogProgress(chipTool, - " ***** Test Step 8 : Check current saturation attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0001")) { + ChipLogProgress(chipTool, " ***** Test Step 8 : Over TransitionTime, TH reads CurrentSaturation attribute from DUT\n"); + if (ShouldSkip("CC.S.F01 && CC.S.A0001")) { NextTest(); return; } - err = TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_8(); + err = TestOverTransitionTimeThReadsCurrentSaturationAttributeFromDut_8(); break; case 9: ChipLogProgress(chipTool, " ***** Test Step 9 : Turn off light that we turned on\n"); @@ -9882,7 +8118,7 @@ class Test_TC_CC_4_4 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckCurrentHueAttributeValueMatchedBeforeAnyChange_3() + CHIP_ERROR TestThReadsCurrentHueAttributeFromDut_3() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -9891,7 +8127,7 @@ class Test_TC_CC_4_4 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current hue attribute value matched before any change Error: %@", err); + NSLog(@"TH reads CurrentHue attribute from DUT. Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -9905,7 +8141,7 @@ class Test_TC_CC_4_4 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckSaturationAttributeValueMatchedBeforeAnyChange_4() + CHIP_ERROR TestThReadsCurrentSaturationAttributeFromDut_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -9914,7 +8150,7 @@ class Test_TC_CC_4_4 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check Saturation attribute value matched before any change Error: %@", err); + NSLog(@"TH reads CurrentSaturation attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -9928,7 +8164,7 @@ class Test_TC_CC_4_4 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestMoveToCurrentHueAndSaturationCommand_5() + CHIP_ERROR TestThSendsMoveToHueAndSaturationCommandToDut_5() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -9944,7 +8180,7 @@ class Test_TC_CC_4_4 : public TestCommandBridge { params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster moveToHueAndSaturationWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Move To current hue and saturation command Error: %@", err); + NSLog(@"TH sends MoveToHueAndSaturation command to DUT. Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -9954,14 +8190,14 @@ class Test_TC_CC_4_4 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait10ms_6() + CHIP_ERROR TestWait1000ms_6() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 10UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_7() + CHIP_ERROR TestOverTransitionTimeThReadsCurrentHueAttributeFromDut_7() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -9970,7 +8206,7 @@ class Test_TC_CC_4_4 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current hue attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"Over TransitionTime, TH reads CurrentHue attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -9984,7 +8220,7 @@ class Test_TC_CC_4_4 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckCurrentSaturationAttributeValueMatchedTheValueSentByTheLastCommand_8() + CHIP_ERROR TestOverTransitionTimeThReadsCurrentSaturationAttributeFromDut_8() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -9993,7 +8229,7 @@ class Test_TC_CC_4_4 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current saturation attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"Over TransitionTime, TH reads CurrentSaturation attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -10098,50 +8334,48 @@ class Test_TC_CC_5_1 : public TestCommandBridge { err = TestCheckOnOffAttributeValueIsTrueAfterOnCommand_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Check current x attribute value matched before any change\n"); - if (ShouldSkip("CC.S.A0003")) { + ChipLogProgress(chipTool, " ***** Test Step 3 : TH reads CurrentX attribute from DUT\n"); + if (ShouldSkip("CC.S.F03 && CC.S.A0003")) { NextTest(); return; } - err = TestCheckCurrentXAttributeValueMatchedBeforeAnyChange_3(); + err = TestThReadsCurrentXAttributeFromDut_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Check current y attribute value matched before any change\n"); - if (ShouldSkip("CC.S.A0004")) { + ChipLogProgress(chipTool, " ***** Test Step 4 : TH reads CurrentY attribute from DUT\n"); + if (ShouldSkip("CC.S.F03 && CC.S.A0004")) { NextTest(); return; } - err = TestCheckCurrentYAttributeValueMatchedBeforeAnyChange_4(); + err = TestThReadsCurrentYAttributeFromDut_4(); break; case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Move to Color command\n"); - if (ShouldSkip("CC.S.C07.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 5 : TH sends MoveToColor command to DUT\n"); + if (ShouldSkip("CC.S.F03 && CC.S.C07.Rsp")) { NextTest(); return; } - err = TestMoveToColorCommand_5(); + err = TestThSendsMoveToColorCommandToDut_5(); break; case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : Wait 20ms\n"); - err = TestWait20ms_6(); + ChipLogProgress(chipTool, " ***** Test Step 6 : Wait 1500ms\n"); + err = TestWait1500ms_6(); break; case 7: - ChipLogProgress( - chipTool, " ***** Test Step 7 : Check current x attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0003")) { + ChipLogProgress(chipTool, " ***** Test Step 7 : Over TransitionTime, TH reads CurrentX attribute from DUT\n"); + if (ShouldSkip("CC.S.F03 && CC.S.A0003")) { NextTest(); return; } - err = TestCheckCurrentXAttributeValueMatchedTheValueSentByTheLastCommand_7(); + err = TestOverTransitionTimeThReadsCurrentXAttributeFromDut_7(); break; case 8: - ChipLogProgress( - chipTool, " ***** Test Step 8 : Check current y attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0004")) { + ChipLogProgress(chipTool, " ***** Test Step 8 : Over TransitionTime, TH reads CurrentY attribute from DUT\n"); + if (ShouldSkip("CC.S.F03 && CC.S.A0004")) { NextTest(); return; } - err = TestCheckCurrentYAttributeValueMatchedTheValueSentByTheLastCommand_8(); + err = TestOverTransitionTimeThReadsCurrentYAttributeFromDut_8(); break; case 9: ChipLogProgress(chipTool, " ***** Test Step 9 : Turn off light that we turned on\n"); @@ -10261,7 +8495,7 @@ class Test_TC_CC_5_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckCurrentXAttributeValueMatchedBeforeAnyChange_3() + CHIP_ERROR TestThReadsCurrentXAttributeFromDut_3() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -10270,7 +8504,7 @@ class Test_TC_CC_5_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentXWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current x attribute value matched before any change Error: %@", err); + NSLog(@"TH reads CurrentX attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -10284,7 +8518,7 @@ class Test_TC_CC_5_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckCurrentYAttributeValueMatchedBeforeAnyChange_4() + CHIP_ERROR TestThReadsCurrentYAttributeFromDut_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -10293,7 +8527,7 @@ class Test_TC_CC_5_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentYWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current y attribute value matched before any change Error: %@", err); + NSLog(@"TH reads CurrentY attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -10307,7 +8541,7 @@ class Test_TC_CC_5_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestMoveToColorCommand_5() + CHIP_ERROR TestThSendsMoveToColorCommandToDut_5() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -10318,12 +8552,12 @@ class Test_TC_CC_5_1 : public TestCommandBridge { __auto_type * params = [[MTRColorControlClusterMoveToColorParams alloc] init]; params.colorX = [NSNumber numberWithUnsignedShort:200U]; params.colorY = [NSNumber numberWithUnsignedShort:300U]; - params.transitionTime = [NSNumber numberWithUnsignedShort:20U]; + params.transitionTime = [NSNumber numberWithUnsignedShort:10U]; params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster moveToColorWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Move to Color command Error: %@", err); + NSLog(@"TH sends MoveToColor command to DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -10333,14 +8567,14 @@ class Test_TC_CC_5_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait20ms_6() + CHIP_ERROR TestWait1500ms_6() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 20UL; + value.ms = 1500UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckCurrentXAttributeValueMatchedTheValueSentByTheLastCommand_7() + CHIP_ERROR TestOverTransitionTimeThReadsCurrentXAttributeFromDut_7() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -10349,10 +8583,15 @@ class Test_TC_CC_5_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentXWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current x attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"Over TransitionTime, TH reads CurrentX attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + { + id actualValue = value; + VerifyOrReturn(CheckValue("CurrentX", actualValue, 200U)); + } + VerifyOrReturn(CheckConstraintType("currentX", "", "uint16")); VerifyOrReturn(CheckConstraintMinValue("currentX", [value unsignedShortValue], 0U)); VerifyOrReturn(CheckConstraintMaxValue("currentX", [value unsignedShortValue], 65279U)); @@ -10363,7 +8602,7 @@ class Test_TC_CC_5_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckCurrentYAttributeValueMatchedTheValueSentByTheLastCommand_8() + CHIP_ERROR TestOverTransitionTimeThReadsCurrentYAttributeFromDut_8() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -10372,10 +8611,15 @@ class Test_TC_CC_5_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentYWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current y attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"Over TransitionTime, TH reads CurrentY attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + { + id actualValue = value; + VerifyOrReturn(CheckValue("CurrentY", actualValue, 300U)); + } + VerifyOrReturn(CheckConstraintType("currentY", "", "uint16")); VerifyOrReturn(CheckConstraintMinValue("currentY", [value unsignedShortValue], 0U)); VerifyOrReturn(CheckConstraintMaxValue("currentY", [value unsignedShortValue], 65279U)); @@ -10477,76 +8721,72 @@ class Test_TC_CC_5_2 : public TestCommandBridge { err = TestCheckOnOffAttributeValueIsTrueAfterOnCommand_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Check current x attribute value matched before any change\n"); - if (ShouldSkip("CC.S.A0003")) { + ChipLogProgress(chipTool, " ***** Test Step 3 : TH reads CurrentX attribute from DUT\n"); + if (ShouldSkip("CC.S.F03 && CC.S.A0003")) { NextTest(); return; } - err = TestCheckCurrentXAttributeValueMatchedBeforeAnyChange_3(); + err = TestThReadsCurrentXAttributeFromDut_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Check current y attribute value matched before any change\n"); - if (ShouldSkip("CC.S.A0004")) { + ChipLogProgress(chipTool, " ***** Test Step 4 : TH reads CurrentY attribute from DUT\n"); + if (ShouldSkip("CC.S.F03 && CC.S.A0004")) { NextTest(); return; } - err = TestCheckCurrentYAttributeValueMatchedBeforeAnyChange_4(); + err = TestThReadsCurrentYAttributeFromDut_4(); break; case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Move Color command\n"); - if (ShouldSkip("CC.S.C08.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 5 : TH sends MoveColor command to DUT\n"); + if (ShouldSkip("CC.S.F03 && CC.S.C08.Rsp")) { NextTest(); return; } - err = TestMoveColorCommand_5(); + err = TestThSendsMoveColorCommandToDut_5(); break; case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : Wait 150ms\n"); - err = TestWait150ms_6(); + ChipLogProgress(chipTool, " ***** Test Step 6 : Wait 1000ms\n"); + err = TestWait1000ms_6(); break; case 7: - ChipLogProgress( - chipTool, " ***** Test Step 7 : Check current x attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0003")) { + ChipLogProgress(chipTool, " ***** Test Step 7 : TH reads CurrentX attribute from DUT\n"); + if (ShouldSkip("CC.S.F03 && CC.S.A0003")) { NextTest(); return; } - err = TestCheckCurrentXAttributeValueMatchedTheValueSentByTheLastCommand_7(); + err = TestThReadsCurrentXAttributeFromDut_7(); break; case 8: - ChipLogProgress( - chipTool, " ***** Test Step 8 : Check current y attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0004")) { + ChipLogProgress(chipTool, " ***** Test Step 8 : TH reads CurrentY attribute from DUT\n"); + if (ShouldSkip("CC.S.F03 && CC.S.A0004")) { NextTest(); return; } - err = TestCheckCurrentYAttributeValueMatchedTheValueSentByTheLastCommand_8(); + err = TestThReadsCurrentYAttributeFromDut_8(); break; case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Stop Move Step command\n"); - if (ShouldSkip("CC.S.C47.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 9 : TH sends StopMoveStep command to DUT\n"); + if (ShouldSkip("CC.S.F03 && CC.S.C47.Rsp")) { NextTest(); return; } - err = TestStopMoveStepCommand_9(); + err = TestThSendsStopMoveStepCommandToDut_9(); break; case 10: - ChipLogProgress( - chipTool, " ***** Test Step 10 : Check current x attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0003")) { + ChipLogProgress(chipTool, " ***** Test Step 10 : TH reads CurrentX attribute from DUT\n"); + if (ShouldSkip("CC.S.F03 && CC.S.A0003")) { NextTest(); return; } - err = TestCheckCurrentXAttributeValueMatchedTheValueSentByTheLastCommand_10(); + err = TestThReadsCurrentXAttributeFromDut_10(); break; case 11: - ChipLogProgress( - chipTool, " ***** Test Step 11 : Check current y attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0004")) { + ChipLogProgress(chipTool, " ***** Test Step 11 : TH reads CurrentY attribute from DUT\n"); + if (ShouldSkip("CC.S.F03 && CC.S.A0004")) { NextTest(); return; } - err = TestCheckCurrentYAttributeValueMatchedTheValueSentByTheLastCommand_11(); + err = TestThReadsCurrentYAttributeFromDut_11(); break; case 12: ChipLogProgress(chipTool, " ***** Test Step 12 : Turn off light that we turned on\n"); @@ -10675,7 +8915,7 @@ class Test_TC_CC_5_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckCurrentXAttributeValueMatchedBeforeAnyChange_3() + CHIP_ERROR TestThReadsCurrentXAttributeFromDut_3() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -10684,7 +8924,7 @@ class Test_TC_CC_5_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentXWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current x attribute value matched before any change Error: %@", err); + NSLog(@"TH reads CurrentX attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -10698,7 +8938,7 @@ class Test_TC_CC_5_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckCurrentYAttributeValueMatchedBeforeAnyChange_4() + CHIP_ERROR TestThReadsCurrentYAttributeFromDut_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -10707,7 +8947,7 @@ class Test_TC_CC_5_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentYWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current y attribute value matched before any change Error: %@", err); + NSLog(@"TH reads CurrentY attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -10721,7 +8961,7 @@ class Test_TC_CC_5_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestMoveColorCommand_5() + CHIP_ERROR TestThSendsMoveColorCommandToDut_5() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -10736,7 +8976,7 @@ class Test_TC_CC_5_2 : public TestCommandBridge { params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster moveColorWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Move Color command Error: %@", err); + NSLog(@"TH sends MoveColor command to DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -10746,14 +8986,14 @@ class Test_TC_CC_5_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait150ms_6() + CHIP_ERROR TestWait1000ms_6() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 150UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckCurrentXAttributeValueMatchedTheValueSentByTheLastCommand_7() + CHIP_ERROR TestThReadsCurrentXAttributeFromDut_7() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -10762,7 +9002,7 @@ class Test_TC_CC_5_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentXWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current x attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"TH reads CurrentX attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -10776,7 +9016,7 @@ class Test_TC_CC_5_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckCurrentYAttributeValueMatchedTheValueSentByTheLastCommand_8() + CHIP_ERROR TestThReadsCurrentYAttributeFromDut_8() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -10785,7 +9025,7 @@ class Test_TC_CC_5_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentYWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current y attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"TH reads CurrentY attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -10799,7 +9039,7 @@ class Test_TC_CC_5_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStopMoveStepCommand_9() + CHIP_ERROR TestThSendsStopMoveStepCommandToDut_9() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -10812,7 +9052,7 @@ class Test_TC_CC_5_2 : public TestCommandBridge { params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster stopMoveStepWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Stop Move Step command Error: %@", err); + NSLog(@"TH sends StopMoveStep command to DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -10822,7 +9062,7 @@ class Test_TC_CC_5_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckCurrentXAttributeValueMatchedTheValueSentByTheLastCommand_10() + CHIP_ERROR TestThReadsCurrentXAttributeFromDut_10() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -10831,7 +9071,7 @@ class Test_TC_CC_5_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentXWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current x attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"TH reads CurrentX attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -10845,7 +9085,7 @@ class Test_TC_CC_5_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckCurrentYAttributeValueMatchedTheValueSentByTheLastCommand_11() + CHIP_ERROR TestThReadsCurrentYAttributeFromDut_11() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -10854,7 +9094,7 @@ class Test_TC_CC_5_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentYWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current y attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"TH reads CurrentY attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -10959,50 +9199,48 @@ class Test_TC_CC_5_3 : public TestCommandBridge { err = TestCheckOnOffAttributeValueIsTrueAfterOnCommand_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Check current x attribute value matched before any change\n"); - if (ShouldSkip("CC.S.A0003")) { + ChipLogProgress(chipTool, " ***** Test Step 3 : TH reads CurrentX attribute from DUT\n"); + if (ShouldSkip("CC.S.F03 && CC.S.A0003")) { NextTest(); return; } - err = TestCheckCurrentXAttributeValueMatchedBeforeAnyChange_3(); + err = TestThReadsCurrentXAttributeFromDut_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Check current y attribute value matched before any change\n"); - if (ShouldSkip("CC.S.A0004")) { + ChipLogProgress(chipTool, " ***** Test Step 4 : TH reads CurrentY attribute from DUT\n"); + if (ShouldSkip("CC.S.F03 && CC.S.A0004")) { NextTest(); return; } - err = TestCheckCurrentYAttributeValueMatchedBeforeAnyChange_4(); + err = TestThReadsCurrentYAttributeFromDut_4(); break; case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Step Color command\n"); - if (ShouldSkip("CC.S.C09.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 5 : TH sends StepColor command to DUT\n"); + if (ShouldSkip("CC.S.F03 && CC.S.C09.Rsp")) { NextTest(); return; } - err = TestStepColorCommand_5(); + err = TestThSendsStepColorCommandToDut_5(); break; case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : Wait 50ms\n"); - err = TestWait50ms_6(); + ChipLogProgress(chipTool, " ***** Test Step 6 : Wait 1000ms\n"); + err = TestWait1000ms_6(); break; case 7: - ChipLogProgress( - chipTool, " ***** Test Step 7 : Check current x attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0003")) { + ChipLogProgress(chipTool, " ***** Test Step 7 : Over TransitionTime, TH reads CurrentX attribute from DUT\n"); + if (ShouldSkip("CC.S.F03 && CC.S.A0003")) { NextTest(); return; } - err = TestCheckCurrentXAttributeValueMatchedTheValueSentByTheLastCommand_7(); + err = TestOverTransitionTimeThReadsCurrentXAttributeFromDut_7(); break; case 8: - ChipLogProgress( - chipTool, " ***** Test Step 8 : Check current y attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A0004")) { + ChipLogProgress(chipTool, " ***** Test Step 8 : Over TransitionTime, TH reads CurrentY attribute from DUT\n"); + if (ShouldSkip("CC.S.F03 && CC.S.A0004")) { NextTest(); return; } - err = TestCheckCurrentYAttributeValueMatchedTheValueSentByTheLastCommand_8(); + err = TestOverTransitionTimeThReadsCurrentYAttributeFromDut_8(); break; case 9: ChipLogProgress(chipTool, " ***** Test Step 9 : Turn off light that we turned on\n"); @@ -11122,7 +9360,7 @@ class Test_TC_CC_5_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckCurrentXAttributeValueMatchedBeforeAnyChange_3() + CHIP_ERROR TestThReadsCurrentXAttributeFromDut_3() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -11131,7 +9369,7 @@ class Test_TC_CC_5_3 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentXWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current x attribute value matched before any change Error: %@", err); + NSLog(@"TH reads CurrentX attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -11145,7 +9383,7 @@ class Test_TC_CC_5_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckCurrentYAttributeValueMatchedBeforeAnyChange_4() + CHIP_ERROR TestThReadsCurrentYAttributeFromDut_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -11154,7 +9392,7 @@ class Test_TC_CC_5_3 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentYWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current y attribute value matched before any change Error: %@", err); + NSLog(@"TH reads CurrentY attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -11168,7 +9406,7 @@ class Test_TC_CC_5_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStepColorCommand_5() + CHIP_ERROR TestThSendsStepColorCommandToDut_5() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -11179,12 +9417,12 @@ class Test_TC_CC_5_3 : public TestCommandBridge { __auto_type * params = [[MTRColorControlClusterStepColorParams alloc] init]; params.stepX = [NSNumber numberWithShort:15]; params.stepY = [NSNumber numberWithShort:20]; - params.transitionTime = [NSNumber numberWithUnsignedShort:50U]; + params.transitionTime = [NSNumber numberWithUnsignedShort:10U]; params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster stepColorWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Step Color command Error: %@", err); + NSLog(@"TH sends StepColor command to DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -11194,14 +9432,14 @@ class Test_TC_CC_5_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait50ms_6() + CHIP_ERROR TestWait1000ms_6() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 50UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckCurrentXAttributeValueMatchedTheValueSentByTheLastCommand_7() + CHIP_ERROR TestOverTransitionTimeThReadsCurrentXAttributeFromDut_7() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -11210,7 +9448,7 @@ class Test_TC_CC_5_3 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentXWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current x attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"Over TransitionTime, TH reads CurrentX attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -11224,7 +9462,7 @@ class Test_TC_CC_5_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckCurrentYAttributeValueMatchedTheValueSentByTheLastCommand_8() + CHIP_ERROR TestOverTransitionTimeThReadsCurrentYAttributeFromDut_8() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -11233,7 +9471,7 @@ class Test_TC_CC_5_3 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentYWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current y attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"Over TransitionTime, TH reads CurrentY attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -11338,40 +9576,56 @@ class Test_TC_CC_6_1 : public TestCommandBridge { err = TestCheckOnOffAttributeValueIsTrueAfterOnCommand_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Read current color temprature\n"); - if (ShouldSkip("CC.S.A0007")) { + ChipLogProgress(chipTool, " ***** Test Step 3 : TH reads ColorTempPhysicalMinMireds attribute from DUT\n"); + if (ShouldSkip("CC.S.F04 && CC.S.A400b")) { NextTest(); return; } - err = TestReadCurrentColorTemprature_3(); + err = TestThReadsColorTempPhysicalMinMiredsAttributeFromDut_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Move To Color Temperature command\n"); - if (ShouldSkip("CC.S.C0A.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 4 : TH reads ColorTempPhysicalMaxMireds attribute from DUT.\n"); + if (ShouldSkip("CC.S.F04 && CC.S.A400c")) { NextTest(); return; } - err = TestMoveToColorTemperatureCommand_4(); + err = TestThReadsColorTempPhysicalMaxMiredsAttributeFromDut_4(); break; case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Wait 700ms\n"); - err = TestWait700ms_5(); + ChipLogProgress(chipTool, " ***** Test Step 5 : TH reads ColorTemperatureMireds attribute from DUT.\n"); + if (ShouldSkip("CC.S.F04 && CC.S.A0007")) { + NextTest(); + return; + } + err = TestThReadsColorTemperatureMiredsAttributeFromDut_5(); break; case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : Read current color temprature\n"); - if (ShouldSkip("CC.S.A0007")) { + ChipLogProgress(chipTool, " ***** Test Step 6 : Move To Color Temperature command\n"); + if (ShouldSkip("CC.S.F04 && CC.S.C0A.Rsp")) { NextTest(); return; } - err = TestReadCurrentColorTemprature_6(); + err = TestMoveToColorTemperatureCommand_6(); break; case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : Turn off light that we turned on\n"); - err = TestTurnOffLightThatWeTurnedOn_7(); + ChipLogProgress(chipTool, " ***** Test Step 7 : Wait 1500ms\n"); + err = TestWait1500ms_7(); break; case 8: - ChipLogProgress(chipTool, " ***** Test Step 8 : Check on/off attribute value is false after off command\n"); - err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_8(); + ChipLogProgress(chipTool, " ***** Test Step 8 : Read current color temprature\n"); + if (ShouldSkip("CC.S.F04 && CC.S.A0007")) { + NextTest(); + return; + } + err = TestReadCurrentColorTemprature_8(); + break; + case 9: + ChipLogProgress(chipTool, " ***** Test Step 9 : Turn off light that we turned on\n"); + err = TestTurnOffLightThatWeTurnedOn_9(); + break; + case 10: + ChipLogProgress(chipTool, " ***** Test Step 10 : Check on/off attribute value is false after off command\n"); + err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_10(); break; } @@ -11411,6 +9665,12 @@ class Test_TC_CC_6_1 : public TestCommandBridge { case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 10: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -11424,7 +9684,7 @@ class Test_TC_CC_6_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 9; + const uint16_t mTestCount = 11; chip::Optional mNodeId; chip::Optional mCluster; @@ -11476,8 +9736,64 @@ class Test_TC_CC_6_1 : public TestCommandBridge { return CHIP_NO_ERROR; } + NSNumber * _Nonnull ColorTempPhysicalMinMiredsValue; + + CHIP_ERROR TestThReadsColorTempPhysicalMinMiredsAttributeFromDut_3() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster + readAttributeColorTempPhysicalMinMiredsWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads ColorTempPhysicalMinMireds attribute from DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("colorTempPhysicalMinMireds", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("colorTempPhysicalMinMireds", [value unsignedShortValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("colorTempPhysicalMinMireds", [value unsignedShortValue], 65279U)); + { + ColorTempPhysicalMinMiredsValue = value; + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + NSNumber * _Nonnull ColorTempPhysicalMaxMiredsValue; - CHIP_ERROR TestReadCurrentColorTemprature_3() + CHIP_ERROR TestThReadsColorTempPhysicalMaxMiredsAttributeFromDut_4() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster + readAttributeColorTempPhysicalMaxMiredsWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads ColorTempPhysicalMaxMireds attribute from DUT. Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("colorTempPhysicalMaxMireds", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("colorTempPhysicalMaxMireds", [value unsignedShortValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("colorTempPhysicalMaxMireds", [value unsignedShortValue], 65279U)); + { + ColorTempPhysicalMaxMiredsValue = value; + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThReadsColorTemperatureMiredsAttributeFromDut_5() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -11486,13 +9802,15 @@ class Test_TC_CC_6_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read current color temprature Error: %@", err); + NSLog(@"TH reads ColorTemperatureMireds attribute from DUT. Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); + VerifyOrReturn( + CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn( + CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMaxMiredsValue)); NextTest(); }]; @@ -11500,7 +9818,7 @@ class Test_TC_CC_6_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestMoveToColorTemperatureCommand_4() + CHIP_ERROR TestMoveToColorTemperatureCommand_6() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -11510,7 +9828,7 @@ class Test_TC_CC_6_1 : public TestCommandBridge { __auto_type * params = [[MTRColorControlClusterMoveToColorTemperatureParams alloc] init]; params.colorTemperature = [NSNumber numberWithUnsignedShort:100U]; - params.transitionTime = [NSNumber numberWithUnsignedShort:5U]; + params.transitionTime = [NSNumber numberWithUnsignedShort:10U]; params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster moveToColorTemperatureWithParams:params @@ -11525,14 +9843,14 @@ class Test_TC_CC_6_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait700ms_5() + CHIP_ERROR TestWait1500ms_7() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 700UL; + value.ms = 1500UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestReadCurrentColorTemprature_6() + CHIP_ERROR TestReadCurrentColorTemprature_8() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -11551,8 +9869,10 @@ class Test_TC_CC_6_1 : public TestCommandBridge { } VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); + VerifyOrReturn( + CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn( + CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMaxMiredsValue)); NextTest(); }]; @@ -11560,7 +9880,7 @@ class Test_TC_CC_6_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestTurnOffLightThatWeTurnedOn_7() + CHIP_ERROR TestTurnOffLightThatWeTurnedOn_9() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -11577,7 +9897,7 @@ class Test_TC_CC_6_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_8() + CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_10() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -11651,212 +9971,228 @@ class Test_TC_CC_6_2 : public TestCommandBridge { err = TestCheckOnOffAttributeValueIsTrueAfterOnCommand_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Read current color temprature\n"); - if (ShouldSkip("CC.S.A0007")) { + ChipLogProgress(chipTool, " ***** Test Step 3 : TH reads ColorTempPhysicalMinMireds attribute from DUT\n"); + if (ShouldSkip("CC.S.F04 && CC.S.A400b")) { NextTest(); return; } - err = TestReadCurrentColorTemprature_3(); + err = TestThReadsColorTempPhysicalMinMiredsAttributeFromDut_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Move up color temperature command\n"); - if (ShouldSkip("CC.S.C4B.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 4 : TH reads ColorTempPhysicalMaxMireds attribute from DUT.\n"); + if (ShouldSkip("CC.S.F04 && CC.S.A400c")) { NextTest(); return; } - err = TestMoveUpColorTemperatureCommand_4(); + err = TestThReadsColorTempPhysicalMaxMiredsAttributeFromDut_4(); break; case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Wait 90ms\n"); - err = TestWait90ms_5(); + ChipLogProgress(chipTool, " ***** Test Step 5 : TH reads ColorTemperatureMireds attribute from DUT.\n"); + if (ShouldSkip("CC.S.F04 && CC.S.A0007")) { + NextTest(); + return; + } + err = TestThReadsColorTemperatureMiredsAttributeFromDut_5(); break; case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : Read current color temprature attribute from DUT several times\n"); - if (ShouldSkip("CC.S.A0007")) { + ChipLogProgress(chipTool, " ***** Test Step 6 : TH sends MoveColorTemperature command to DUT with MoveMode = Up\n"); + if (ShouldSkip("CC.S.F04 && CC.S.C4B.Rsp")) { NextTest(); return; } - err = TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_6(); + err = TestThSendsMoveColorTemperatureCommandToDutWithMoveModeUp_6(); break; case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : Wait 95ms\n"); - err = TestWait95ms_7(); + ChipLogProgress(chipTool, " ***** Test Step 7 : Wait 1000ms\n"); + err = TestWait1000ms_7(); break; case 8: ChipLogProgress(chipTool, " ***** Test Step 8 : Read current color temprature attribute from DUT several times\n"); - if (ShouldSkip("CC.S.A0007")) { + if (ShouldSkip("CC.S.F04 && CC.S.A0007")) { NextTest(); return; } err = TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_8(); break; case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Wait 100ms\n"); - err = TestWait100ms_9(); + ChipLogProgress(chipTool, " ***** Test Step 9 : Wait 1000ms\n"); + err = TestWait1000ms_9(); break; case 10: ChipLogProgress(chipTool, " ***** Test Step 10 : Read current color temprature attribute from DUT several times\n"); - if (ShouldSkip("CC.S.A0007")) { + if (ShouldSkip("CC.S.F04 && CC.S.A0007")) { NextTest(); return; } err = TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_10(); break; case 11: - ChipLogProgress(chipTool, " ***** Test Step 11 : Move down color temperature command\n"); - if (ShouldSkip("CC.S.C4B.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 11 : Wait 1000ms\n"); + err = TestWait1000ms_11(); + break; + case 12: + ChipLogProgress(chipTool, " ***** Test Step 12 : Read current color temprature attribute from DUT several times\n"); + if (ShouldSkip("CC.S.F04 && CC.S.A0007")) { NextTest(); return; } - err = TestMoveDownColorTemperatureCommand_11(); - break; - case 12: - ChipLogProgress(chipTool, " ***** Test Step 12 : Wait 190ms\n"); - err = TestWait190ms_12(); + err = TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_12(); break; case 13: - ChipLogProgress(chipTool, " ***** Test Step 13 : Read current color temprature attribute from DUT several times\n"); - if (ShouldSkip("CC.S.A0007")) { + ChipLogProgress(chipTool, " ***** Test Step 13 : TH sends MoveColorTemperature command to DUT with MoveMode = Down\n"); + if (ShouldSkip("CC.S.F04 && CC.S.C4B.Rsp")) { NextTest(); return; } - err = TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_13(); + err = TestThSendsMoveColorTemperatureCommandToDutWithMoveModeDown_13(); break; case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : Wait 195ms\n"); - err = TestWait195ms_14(); + ChipLogProgress(chipTool, " ***** Test Step 14 : Wait 1000ms\n"); + err = TestWait1000ms_14(); break; case 15: ChipLogProgress(chipTool, " ***** Test Step 15 : Read current color temprature attribute from DUT several times\n"); - if (ShouldSkip("CC.S.A0007")) { + if (ShouldSkip("CC.S.F04 && CC.S.A0007")) { NextTest(); return; } err = TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_15(); break; case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : Wait 200ms\n"); - err = TestWait200ms_16(); + ChipLogProgress(chipTool, " ***** Test Step 16 : Wait 1000ms\n"); + err = TestWait1000ms_16(); break; case 17: ChipLogProgress(chipTool, " ***** Test Step 17 : Read current color temprature attribute from DUT several times\n"); - if (ShouldSkip("CC.S.A0007")) { + if (ShouldSkip("CC.S.F04 && CC.S.A0007")) { NextTest(); return; } err = TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_17(); break; case 18: - ChipLogProgress(chipTool, " ***** Test Step 18 : Move up color temperature command\n"); - if (ShouldSkip("CC.S.C4B.Rsp")) { - NextTest(); - return; - } - err = TestMoveUpColorTemperatureCommand_18(); + ChipLogProgress(chipTool, " ***** Test Step 18 : Wait 1000ms\n"); + err = TestWait1000ms_18(); break; case 19: - ChipLogProgress(chipTool, " ***** Test Step 19 : Stop Color Temperature command\n"); - if (ShouldSkip("CC.S.C4B.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 19 : Read current color temprature attribute from DUT several times\n"); + if (ShouldSkip("CC.S.F04 && CC.S.A0007")) { NextTest(); return; } - err = TestStopColorTemperatureCommand_19(); + err = TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_19(); break; case 20: - ChipLogProgress(chipTool, " ***** Test Step 20 : Wait 90ms\n"); - err = TestWait90ms_20(); + ChipLogProgress(chipTool, " ***** Test Step 20 : TH sends MoveColorTemperature command to DUT with MoveMode = Up\n"); + if (ShouldSkip("CC.S.F04 && CC.S.C4B.Rsp")) { + NextTest(); + return; + } + err = TestThSendsMoveColorTemperatureCommandToDutWithMoveModeUp_20(); break; case 21: - ChipLogProgress(chipTool, " ***** Test Step 21 : Read current color temprature attribute from DUT several times\n"); - if (ShouldSkip("CC.S.A0007")) { + ChipLogProgress(chipTool, " ***** Test Step 21 : TH sends MoveColorTemperature command to DUT with MoveMode = Stop\n"); + if (ShouldSkip("CC.S.F04 && CC.S.C4B.Rsp")) { NextTest(); return; } - err = TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_21(); + err = TestThSendsMoveColorTemperatureCommandToDutWithMoveModeStop_21(); break; case 22: - ChipLogProgress(chipTool, " ***** Test Step 22 : Wait 95ms\n"); - err = TestWait95ms_22(); + ChipLogProgress(chipTool, " ***** Test Step 22 : Wait 1000ms\n"); + err = TestWait1000ms_22(); break; case 23: ChipLogProgress(chipTool, " ***** Test Step 23 : Read current color temprature attribute from DUT several times\n"); - if (ShouldSkip("CC.S.A0007")) { + if (ShouldSkip("CC.S.F04 && CC.S.A0007")) { NextTest(); return; } err = TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_23(); break; case 24: - ChipLogProgress(chipTool, " ***** Test Step 24 : Wait 100ms\n"); - err = TestWait100ms_24(); + ChipLogProgress(chipTool, " ***** Test Step 24 : Wait 1000ms\n"); + err = TestWait1000ms_24(); break; case 25: ChipLogProgress(chipTool, " ***** Test Step 25 : Read current color temprature attribute from DUT several times\n"); - if (ShouldSkip("CC.S.A0007")) { + if (ShouldSkip("CC.S.F04 && CC.S.A0007")) { NextTest(); return; } err = TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_25(); break; case 26: - ChipLogProgress(chipTool, " ***** Test Step 26 : Move down color temperature command\n"); - if (ShouldSkip("CC.S.C4B.Rsp")) { - NextTest(); - return; - } - err = TestMoveDownColorTemperatureCommand_26(); + ChipLogProgress(chipTool, " ***** Test Step 26 : Wait 1000ms\n"); + err = TestWait1000ms_26(); break; case 27: - ChipLogProgress(chipTool, " ***** Test Step 27 : Stop Color Temperature command\n"); - if (ShouldSkip("CC.S.C4B.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 27 : Read current color temprature attribute from DUT several times\n"); + if (ShouldSkip("CC.S.F04 && CC.S.A0007")) { NextTest(); return; } - err = TestStopColorTemperatureCommand_27(); + err = TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_27(); break; case 28: - ChipLogProgress(chipTool, " ***** Test Step 28 : Wait 140ms\n"); - err = TestWait140ms_28(); + ChipLogProgress(chipTool, " ***** Test Step 28 : TH sends MoveColorTemperature command to DUT with MoveMode = Down\n"); + if (ShouldSkip("CC.S.F04 && CC.S.C4B.Rsp")) { + NextTest(); + return; + } + err = TestThSendsMoveColorTemperatureCommandToDutWithMoveModeDown_28(); break; case 29: - ChipLogProgress(chipTool, " ***** Test Step 29 : Read current color temprature attribute from DUT several times\n"); - if (ShouldSkip("CC.S.A0007")) { + ChipLogProgress(chipTool, " ***** Test Step 29 : TH sends MoveColorTemperature command to DUT with MoveMode = Stop\n"); + if (ShouldSkip("CC.S.F04 && CC.S.C4B.Rsp")) { NextTest(); return; } - err = TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_29(); + err = TestThSendsMoveColorTemperatureCommandToDutWithMoveModeStop_29(); break; case 30: - ChipLogProgress(chipTool, " ***** Test Step 30 : Wait 145ms\n"); - err = TestWait145ms_30(); + ChipLogProgress(chipTool, " ***** Test Step 30 : Wait 1000ms\n"); + err = TestWait1000ms_30(); break; case 31: ChipLogProgress(chipTool, " ***** Test Step 31 : Read current color temprature attribute from DUT several times\n"); - if (ShouldSkip("CC.S.A0007")) { + if (ShouldSkip("CC.S.F04 && CC.S.A0007")) { NextTest(); return; } err = TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_31(); break; case 32: - ChipLogProgress(chipTool, " ***** Test Step 32 : Wait 150ms\n"); - err = TestWait150ms_32(); + ChipLogProgress(chipTool, " ***** Test Step 32 : Wait 1000ms\n"); + err = TestWait1000ms_32(); break; case 33: ChipLogProgress(chipTool, " ***** Test Step 33 : Read current color temprature attribute from DUT several times\n"); - if (ShouldSkip("CC.S.A0007")) { + if (ShouldSkip("CC.S.F04 && CC.S.A0007")) { NextTest(); return; } err = TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_33(); break; case 34: - ChipLogProgress(chipTool, " ***** Test Step 34 : Turn off light that we turned on\n"); - err = TestTurnOffLightThatWeTurnedOn_34(); + ChipLogProgress(chipTool, " ***** Test Step 34 : Wait 1000ms\n"); + err = TestWait1000ms_34(); break; case 35: - ChipLogProgress(chipTool, " ***** Test Step 35 : Check on/off attribute value is false after off command\n"); - err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_35(); + ChipLogProgress(chipTool, " ***** Test Step 35 : Read current color temprature attribute from DUT several times\n"); + if (ShouldSkip("CC.S.F04 && CC.S.A0007")) { + NextTest(); + return; + } + err = TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_35(); + break; + case 36: + ChipLogProgress(chipTool, " ***** Test Step 36 : Turn off light that we turned on\n"); + err = TestTurnOffLightThatWeTurnedOn_36(); + break; + case 37: + ChipLogProgress(chipTool, " ***** Test Step 37 : Check on/off attribute value is false after off command\n"); + err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_37(); break; } @@ -11977,6 +10313,12 @@ class Test_TC_CC_6_2 : public TestCommandBridge { 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; } // Go on to the next test. @@ -11990,7 +10332,7 @@ class Test_TC_CC_6_2 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 36; + const uint16_t mTestCount = 38; chip::Optional mNodeId; chip::Optional mCluster; @@ -12042,8 +10384,9 @@ class Test_TC_CC_6_2 : public TestCommandBridge { return CHIP_NO_ERROR; } + NSNumber * _Nonnull ColorTempPhysicalMinMiredsValue; - CHIP_ERROR TestReadCurrentColorTemprature_3() + CHIP_ERROR TestThReadsColorTempPhysicalMinMiredsAttributeFromDut_3() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -12051,203 +10394,27 @@ class Test_TC_CC_6_2 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read current color temprature Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestMoveUpColorTemperatureCommand_4() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - __auto_type * params = [[MTRColorControlClusterMoveColorTemperatureParams alloc] init]; - params.moveMode = [NSNumber numberWithUnsignedChar:1U]; - params.rate = [NSNumber numberWithUnsignedShort:10U]; - params.colorTemperatureMinimumMireds = [NSNumber numberWithUnsignedShort:1U]; - params.colorTemperatureMaximumMireds = [NSNumber numberWithUnsignedShort:255U]; - params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; - params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; - [cluster moveColorTemperatureWithParams:params - completionHandler:^(NSError * _Nullable err) { - NSLog(@"Move up color temperature command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait90ms_5() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 90UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_6() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read current color temprature attribute from DUT several times Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait95ms_7() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 95UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_8() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read current color temprature attribute from DUT several times Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait100ms_9() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 100UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_10() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read current color temprature attribute from DUT several times Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestMoveDownColorTemperatureCommand_11() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - __auto_type * params = [[MTRColorControlClusterMoveColorTemperatureParams alloc] init]; - params.moveMode = [NSNumber numberWithUnsignedChar:3U]; - params.rate = [NSNumber numberWithUnsignedShort:20U]; - params.colorTemperatureMinimumMireds = [NSNumber numberWithUnsignedShort:1U]; - params.colorTemperatureMaximumMireds = [NSNumber numberWithUnsignedShort:255U]; - params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; - params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; - [cluster moveColorTemperatureWithParams:params - completionHandler:^(NSError * _Nullable err) { - NSLog(@"Move down color temperature command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait190ms_12() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 190UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_13() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read current color temprature attribute from DUT several times Error: %@", err); + [cluster + readAttributeColorTempPhysicalMinMiredsWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads ColorTempPhysicalMinMireds attribute from DUT Error: %@", err); - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); + VerifyOrReturn(CheckConstraintType("colorTempPhysicalMinMireds", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("colorTempPhysicalMinMireds", [value unsignedShortValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("colorTempPhysicalMinMireds", [value unsignedShortValue], 65279U)); + { + ColorTempPhysicalMinMiredsValue = value; + } - NextTest(); - }]; + NextTest(); + }]; return CHIP_NO_ERROR; } + NSNumber * _Nonnull ColorTempPhysicalMaxMiredsValue; - CHIP_ERROR TestWait195ms_14() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 195UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_15() + CHIP_ERROR TestThReadsColorTempPhysicalMaxMiredsAttributeFromDut_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -12255,29 +10422,26 @@ class Test_TC_CC_6_2 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read current color temprature attribute from DUT several times Error: %@", err); + [cluster + readAttributeColorTempPhysicalMaxMiredsWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads ColorTempPhysicalMaxMireds attribute from DUT. Error: %@", err); - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); + VerifyOrReturn(CheckConstraintType("colorTempPhysicalMaxMireds", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("colorTempPhysicalMaxMireds", [value unsignedShortValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("colorTempPhysicalMaxMireds", [value unsignedShortValue], 65279U)); + { + ColorTempPhysicalMaxMiredsValue = value; + } - NextTest(); - }]; + NextTest(); + }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestWait200ms_16() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 200UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_17() + CHIP_ERROR TestThReadsColorTemperatureMiredsAttributeFromDut_5() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -12286,13 +10450,15 @@ class Test_TC_CC_6_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read current color temprature attribute from DUT several times Error: %@", err); + NSLog(@"TH reads ColorTemperatureMireds attribute from DUT. Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); + VerifyOrReturn( + CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn( + CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMaxMiredsValue)); NextTest(); }]; @@ -12300,7 +10466,7 @@ class Test_TC_CC_6_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestMoveUpColorTemperatureCommand_18() + CHIP_ERROR TestThSendsMoveColorTemperatureCommandToDutWithMoveModeUp_6() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -12310,185 +10476,14 @@ class Test_TC_CC_6_2 : public TestCommandBridge { __auto_type * params = [[MTRColorControlClusterMoveColorTemperatureParams alloc] init]; params.moveMode = [NSNumber numberWithUnsignedChar:1U]; - params.rate = [NSNumber numberWithUnsignedShort:10U]; - params.colorTemperatureMinimumMireds = [NSNumber numberWithUnsignedShort:1U]; - params.colorTemperatureMaximumMireds = [NSNumber numberWithUnsignedShort:255U]; - params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; - params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; - [cluster moveColorTemperatureWithParams:params - completionHandler:^(NSError * _Nullable err) { - NSLog(@"Move up color temperature command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestStopColorTemperatureCommand_19() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - __auto_type * params = [[MTRColorControlClusterMoveColorTemperatureParams alloc] init]; - params.moveMode = [NSNumber numberWithUnsignedChar:0U]; - params.rate = [NSNumber numberWithUnsignedShort:10U]; - params.colorTemperatureMinimumMireds = [NSNumber numberWithUnsignedShort:1U]; - params.colorTemperatureMaximumMireds = [NSNumber numberWithUnsignedShort:255U]; - params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; - params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; - [cluster moveColorTemperatureWithParams:params - completionHandler:^(NSError * _Nullable err) { - NSLog(@"Stop Color Temperature command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait90ms_20() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 90UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_21() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read current color temprature attribute from DUT several times Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait95ms_22() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 95UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_23() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read current color temprature attribute from DUT several times Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait100ms_24() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 100UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_25() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read current color temprature attribute from DUT several times Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestMoveDownColorTemperatureCommand_26() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - __auto_type * params = [[MTRColorControlClusterMoveColorTemperatureParams alloc] init]; - params.moveMode = [NSNumber numberWithUnsignedChar:3U]; params.rate = [NSNumber numberWithUnsignedShort:20U]; - params.colorTemperatureMinimumMireds = [NSNumber numberWithUnsignedShort:1U]; - params.colorTemperatureMaximumMireds = [NSNumber numberWithUnsignedShort:255U]; - params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; - params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; - [cluster moveColorTemperatureWithParams:params - completionHandler:^(NSError * _Nullable err) { - NSLog(@"Move down color temperature command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestStopColorTemperatureCommand_27() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - __auto_type * params = [[MTRColorControlClusterMoveColorTemperatureParams alloc] init]; - params.moveMode = [NSNumber numberWithUnsignedChar:0U]; - params.rate = [NSNumber numberWithUnsignedShort:10U]; - params.colorTemperatureMinimumMireds = [NSNumber numberWithUnsignedShort:1U]; - params.colorTemperatureMaximumMireds = [NSNumber numberWithUnsignedShort:255U]; + params.colorTemperatureMinimumMireds = [ColorTempPhysicalMinMiredsValue copy]; + params.colorTemperatureMaximumMireds = [ColorTempPhysicalMaxMiredsValue copy]; params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster moveColorTemperatureWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Stop Color Temperature command Error: %@", err); + NSLog(@"TH sends MoveColorTemperature command to DUT with MoveMode = Up Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -12498,420 +10493,186 @@ class Test_TC_CC_6_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait140ms_28() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 140UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_29() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read current color temprature attribute from DUT several times Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait145ms_30() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 145UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_31() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read current color temprature attribute from DUT several times Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait150ms_32() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 150UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_33() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read current color temprature attribute from DUT several times Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestTurnOffLightThatWeTurnedOn_34() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster offWithCompletionHandler:^(NSError * _Nullable err) { - NSLog(@"Turn off light that we turned on Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_35() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeOnOffWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check on/off attribute value is false after off command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("OnOff", actualValue, 0)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } -}; - -class Test_TC_CC_6_3 : public TestCommandBridge { -public: - // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced - Test_TC_CC_6_3() - : TestCommandBridge("Test_TC_CC_6_3") - , mTestIndex(0) + CHIP_ERROR TestWait1000ms_7() { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - // NOLINTEND(clang-analyzer-nullability.NullPassedToNonnull) - - ~Test_TC_CC_6_3() {} - - /////////// TestCommand Interface ///////// - void NextTest() override - { - CHIP_ERROR err = CHIP_NO_ERROR; - - if (0 == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Start: Test_TC_CC_6_3\n"); - } - - if (mTestCount == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Complete: Test_TC_CC_6_3\n"); - SetCommandExitStatus(CHIP_NO_ERROR); - return; - } - - Wait(); - - // Ensure we increment mTestIndex before we start running the relevant - // command. That way if we lose the timeslice after we send the message - // but before our function call returns, we won't end up with an - // incorrect mTestIndex value observed when we get the response. - switch (mTestIndex++) { - case 0: - ChipLogProgress(chipTool, " ***** Test Step 0 : Wait for the commissioned device to be retrieved\n"); - err = TestWaitForTheCommissionedDeviceToBeRetrieved_0(); - break; - case 1: - ChipLogProgress(chipTool, " ***** Test Step 1 : Turn on light for color control tests\n"); - err = TestTurnOnLightForColorControlTests_1(); - break; - case 2: - ChipLogProgress(chipTool, " ***** Test Step 2 : Check on/off attribute value is true after on command\n"); - err = TestCheckOnOffAttributeValueIsTrueAfterOnCommand_2(); - break; - case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Read current color temprature\n"); - if (ShouldSkip("CC.S.A0007")) { - NextTest(); - return; - } - err = TestReadCurrentColorTemprature_3(); - break; - case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Step up color temperature command\n"); - if (ShouldSkip("CC.S.C4C.Rsp")) { - NextTest(); - return; - } - err = TestStepUpColorTemperatureCommand_4(); - break; - case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Wait 40ms\n"); - err = TestWait40ms_5(); - break; - case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : Read current color temprature\n"); - if (ShouldSkip("CC.S.A0007")) { - NextTest(); - return; - } - err = TestReadCurrentColorTemprature_6(); - break; - case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : Wait 45ms\n"); - err = TestWait45ms_7(); - break; - case 8: - ChipLogProgress(chipTool, " ***** Test Step 8 : Read current color temprature\n"); - if (ShouldSkip("CC.S.A0007")) { - NextTest(); - return; - } - err = TestReadCurrentColorTemprature_8(); - break; - case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Wait 50ms\n"); - err = TestWait50ms_9(); - break; - case 10: - ChipLogProgress(chipTool, " ***** Test Step 10 : Read current color temprature\n"); - if (ShouldSkip("CC.S.A0007")) { - NextTest(); - return; - } - err = TestReadCurrentColorTemprature_10(); - break; - case 11: - ChipLogProgress(chipTool, " ***** Test Step 11 : Step down color temperature command\n"); - if (ShouldSkip("CC.S.C4C.Rsp")) { - NextTest(); - return; - } - err = TestStepDownColorTemperatureCommand_11(); - break; - case 12: - ChipLogProgress(chipTool, " ***** Test Step 12 : Wait 40ms\n"); - err = TestWait40ms_12(); - break; - case 13: - ChipLogProgress(chipTool, " ***** Test Step 13 : Read current color temprature\n"); - if (ShouldSkip("CC.S.A0007")) { - NextTest(); - return; - } - err = TestReadCurrentColorTemprature_13(); - break; - case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : Wait 45ms\n"); - err = TestWait45ms_14(); - break; - case 15: - ChipLogProgress(chipTool, " ***** Test Step 15 : Read current color temprature\n"); - if (ShouldSkip("CC.S.A0007")) { - NextTest(); - return; - } - err = TestReadCurrentColorTemprature_15(); - break; - case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : Wait 50ms\n"); - err = TestWait50ms_16(); - break; - case 17: - ChipLogProgress(chipTool, " ***** Test Step 17 : Read current color temprature\n"); - if (ShouldSkip("CC.S.A0007")) { - NextTest(); - return; - } - err = TestReadCurrentColorTemprature_17(); - break; - case 18: - ChipLogProgress(chipTool, " ***** Test Step 18 : Turn off light that we turned on\n"); - err = TestTurnOffLightThatWeTurnedOn_18(); - break; - case 19: - ChipLogProgress(chipTool, " ***** Test Step 19 : Check on/off attribute value is false after off command\n"); - err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_19(); - break; - } + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 1000UL; + return WaitForMs("alpha", value); + } - if (CHIP_NO_ERROR != err) { - ChipLogError(chipTool, " ***** Test Failure: %s\n", chip::ErrorStr(err)); - SetCommandExitStatus(err); - } + CHIP_ERROR TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_8() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read current color temprature attribute from DUT several times Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); + VerifyOrReturn( + CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn( + CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMaxMiredsValue)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; } - void OnStatusUpdate(const chip::app::StatusIB & status) override + CHIP_ERROR TestWait1000ms_9() { - switch (mTestIndex - 1) { - case 0: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 1: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 2: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 6: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 8: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 9: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 10: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 12: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 13: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 14: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 15: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 16: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 17: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 18: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 19: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - } + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 1000UL; + return WaitForMs("alpha", value); + } - // Go on to the next test. - ContinueOnChipMainThread(CHIP_NO_ERROR); + CHIP_ERROR TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_10() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read current color temprature attribute from DUT several times Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); + VerifyOrReturn( + CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn( + CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMaxMiredsValue)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; } - chip::System::Clock::Timeout GetWaitDuration() const override + CHIP_ERROR TestWait1000ms_11() { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 1000UL; + return WaitForMs("alpha", value); } -private: - std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 20; + CHIP_ERROR TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_12() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; + [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read current color temprature attribute from DUT several times Error: %@", err); - CHIP_ERROR TestWaitForTheCommissionedDeviceToBeRetrieved_0() + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); + VerifyOrReturn( + CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn( + CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMaxMiredsValue)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThSendsMoveColorTemperatureCommandToDutWithMoveModeDown_13() { - chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; - value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; - return WaitForCommissionee("alpha", value); + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + __auto_type * params = [[MTRColorControlClusterMoveColorTemperatureParams alloc] init]; + params.moveMode = [NSNumber numberWithUnsignedChar:3U]; + params.rate = [NSNumber numberWithUnsignedShort:20U]; + params.colorTemperatureMinimumMireds = [ColorTempPhysicalMinMiredsValue copy]; + params.colorTemperatureMaximumMireds = [ColorTempPhysicalMaxMiredsValue copy]; + params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; + params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; + [cluster moveColorTemperatureWithParams:params + completionHandler:^(NSError * _Nullable err) { + NSLog(@"TH sends MoveColorTemperature command to DUT with MoveMode = Down Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; } - CHIP_ERROR TestTurnOnLightForColorControlTests_1() + CHIP_ERROR TestWait1000ms_14() + { + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 1000UL; + return WaitForMs("alpha", value); + } + + CHIP_ERROR TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_15() { MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; + MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster onWithCompletionHandler:^(NSError * _Nullable err) { - NSLog(@"Turn on light for color control tests Error: %@", err); + [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read current color temprature attribute from DUT several times Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); + VerifyOrReturn( + CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn( + CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMaxMiredsValue)); + NextTest(); }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckOnOffAttributeValueIsTrueAfterOnCommand_2() + CHIP_ERROR TestWait1000ms_16() + { + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 1000UL; + return WaitForMs("alpha", value); + } + + CHIP_ERROR TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_17() { MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; + MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeOnOffWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check on/off attribute value is true after on command Error: %@", err); + [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read current color temprature attribute from DUT several times Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("OnOff", actualValue, 1)); - } + VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); + VerifyOrReturn( + CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn( + CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMaxMiredsValue)); NextTest(); }]; @@ -12919,7 +10680,14 @@ class Test_TC_CC_6_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadCurrentColorTemprature_3() + CHIP_ERROR TestWait1000ms_18() + { + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 1000UL; + return WaitForMs("alpha", value); + } + + CHIP_ERROR TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_19() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -12928,13 +10696,15 @@ class Test_TC_CC_6_3 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read current color temprature Error: %@", err); + NSLog(@"Read current color temprature attribute from DUT several times Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); + VerifyOrReturn( + CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn( + CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMaxMiredsValue)); NextTest(); }]; @@ -12942,7 +10712,7 @@ class Test_TC_CC_6_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStepUpColorTemperatureCommand_4() + CHIP_ERROR TestThSendsMoveColorTemperatureCommandToDutWithMoveModeUp_20() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -12950,17 +10720,43 @@ class Test_TC_CC_6_3 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - __auto_type * params = [[MTRColorControlClusterStepColorTemperatureParams alloc] init]; - params.stepMode = [NSNumber numberWithUnsignedChar:1U]; - params.stepSize = [NSNumber numberWithUnsignedShort:5U]; - params.transitionTime = [NSNumber numberWithUnsignedShort:50U]; - params.colorTemperatureMinimumMireds = [NSNumber numberWithUnsignedShort:5U]; - params.colorTemperatureMaximumMireds = [NSNumber numberWithUnsignedShort:100U]; + __auto_type * params = [[MTRColorControlClusterMoveColorTemperatureParams alloc] init]; + params.moveMode = [NSNumber numberWithUnsignedChar:1U]; + params.rate = [NSNumber numberWithUnsignedShort:10U]; + params.colorTemperatureMinimumMireds = [ColorTempPhysicalMinMiredsValue copy]; + params.colorTemperatureMaximumMireds = [ColorTempPhysicalMaxMiredsValue copy]; params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; - [cluster stepColorTemperatureWithParams:params + [cluster moveColorTemperatureWithParams:params + completionHandler:^(NSError * _Nullable err) { + NSLog(@"TH sends MoveColorTemperature command to DUT with MoveMode = Up Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThSendsMoveColorTemperatureCommandToDutWithMoveModeStop_21() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + __auto_type * params = [[MTRColorControlClusterMoveColorTemperatureParams alloc] init]; + params.moveMode = [NSNumber numberWithUnsignedChar:0U]; + params.rate = [NSNumber numberWithUnsignedShort:10U]; + params.colorTemperatureMinimumMireds = [NSNumber numberWithUnsignedShort:1U]; + params.colorTemperatureMaximumMireds = [NSNumber numberWithUnsignedShort:255U]; + params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; + params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; + [cluster moveColorTemperatureWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Step up color temperature command Error: %@", err); + NSLog(@"TH sends MoveColorTemperature command to DUT with MoveMode = Stop Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -12970,14 +10766,15 @@ class Test_TC_CC_6_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait40ms_5() + CHIP_ERROR TestWait1000ms_22() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 40UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } + NSNumber * _Nonnull ColorTemperatureValue; - CHIP_ERROR TestReadCurrentColorTemprature_6() + CHIP_ERROR TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_23() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -12986,13 +10783,18 @@ class Test_TC_CC_6_3 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read current color temprature Error: %@", err); + NSLog(@"Read current color temprature attribute from DUT several times Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); + VerifyOrReturn( + CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn( + CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMaxMiredsValue)); + { + ColorTemperatureValue = value; + } NextTest(); }]; @@ -13000,14 +10802,14 @@ class Test_TC_CC_6_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait45ms_7() + CHIP_ERROR TestWait1000ms_24() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 45UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestReadCurrentColorTemprature_8() + CHIP_ERROR TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_25() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -13016,13 +10818,20 @@ class Test_TC_CC_6_3 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read current color temprature Error: %@", err); + NSLog(@"Read current color temprature attribute from DUT several times Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + { + id actualValue = value; + VerifyOrReturn(CheckValue("ColorTemperature", actualValue, ColorTemperatureValue)); + } + VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); + VerifyOrReturn( + CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn( + CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMaxMiredsValue)); NextTest(); }]; @@ -13030,14 +10839,14 @@ class Test_TC_CC_6_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait50ms_9() + CHIP_ERROR TestWait1000ms_26() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 50UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestReadCurrentColorTemprature_10() + CHIP_ERROR TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_27() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -13046,13 +10855,20 @@ class Test_TC_CC_6_3 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read current color temprature Error: %@", err); + NSLog(@"Read current color temprature attribute from DUT several times Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + { + id actualValue = value; + VerifyOrReturn(CheckValue("ColorTemperature", actualValue, ColorTemperatureValue)); + } + VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); + VerifyOrReturn( + CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn( + CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMaxMiredsValue)); NextTest(); }]; @@ -13060,7 +10876,7 @@ class Test_TC_CC_6_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStepDownColorTemperatureCommand_11() + CHIP_ERROR TestThSendsMoveColorTemperatureCommandToDutWithMoveModeDown_28() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -13068,17 +10884,43 @@ class Test_TC_CC_6_3 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - __auto_type * params = [[MTRColorControlClusterStepColorTemperatureParams alloc] init]; - params.stepMode = [NSNumber numberWithUnsignedChar:3U]; - params.stepSize = [NSNumber numberWithUnsignedShort:5U]; - params.transitionTime = [NSNumber numberWithUnsignedShort:50U]; - params.colorTemperatureMinimumMireds = [NSNumber numberWithUnsignedShort:5U]; - params.colorTemperatureMaximumMireds = [NSNumber numberWithUnsignedShort:100U]; + __auto_type * params = [[MTRColorControlClusterMoveColorTemperatureParams alloc] init]; + params.moveMode = [NSNumber numberWithUnsignedChar:3U]; + params.rate = [NSNumber numberWithUnsignedShort:20U]; + params.colorTemperatureMinimumMireds = [ColorTempPhysicalMinMiredsValue copy]; + params.colorTemperatureMaximumMireds = [ColorTempPhysicalMaxMiredsValue copy]; params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; - [cluster stepColorTemperatureWithParams:params + [cluster moveColorTemperatureWithParams:params + completionHandler:^(NSError * _Nullable err) { + NSLog(@"TH sends MoveColorTemperature command to DUT with MoveMode = Down Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThSendsMoveColorTemperatureCommandToDutWithMoveModeStop_29() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + __auto_type * params = [[MTRColorControlClusterMoveColorTemperatureParams alloc] init]; + params.moveMode = [NSNumber numberWithUnsignedChar:0U]; + params.rate = [NSNumber numberWithUnsignedShort:10U]; + params.colorTemperatureMinimumMireds = [ColorTempPhysicalMinMiredsValue copy]; + params.colorTemperatureMaximumMireds = [ColorTempPhysicalMaxMiredsValue copy]; + params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; + params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; + [cluster moveColorTemperatureWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Step down color temperature command Error: %@", err); + NSLog(@"TH sends MoveColorTemperature command to DUT with MoveMode = Stop Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -13088,14 +10930,15 @@ class Test_TC_CC_6_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait40ms_12() + CHIP_ERROR TestWait1000ms_30() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 40UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } + NSNumber * _Nonnull ColorTemperatureMoveModeStop; - CHIP_ERROR TestReadCurrentColorTemprature_13() + CHIP_ERROR TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_31() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -13104,13 +10947,18 @@ class Test_TC_CC_6_3 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read current color temprature Error: %@", err); + NSLog(@"Read current color temprature attribute from DUT several times Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); + VerifyOrReturn( + CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn( + CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMaxMiredsValue)); + { + ColorTemperatureMoveModeStop = value; + } NextTest(); }]; @@ -13118,14 +10966,14 @@ class Test_TC_CC_6_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait45ms_14() + CHIP_ERROR TestWait1000ms_32() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 45UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestReadCurrentColorTemprature_15() + CHIP_ERROR TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_33() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -13134,13 +10982,20 @@ class Test_TC_CC_6_3 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read current color temprature Error: %@", err); + NSLog(@"Read current color temprature attribute from DUT several times Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + { + id actualValue = value; + VerifyOrReturn(CheckValue("ColorTemperature", actualValue, ColorTemperatureMoveModeStop)); + } + VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); + VerifyOrReturn( + CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn( + CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMaxMiredsValue)); NextTest(); }]; @@ -13148,14 +11003,14 @@ class Test_TC_CC_6_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait50ms_16() + CHIP_ERROR TestWait1000ms_34() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 50UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestReadCurrentColorTemprature_17() + CHIP_ERROR TestReadCurrentColorTempratureAttributeFromDutSeveralTimes_35() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -13164,13 +11019,20 @@ class Test_TC_CC_6_3 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read current color temprature Error: %@", err); + NSLog(@"Read current color temprature attribute from DUT several times Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + { + id actualValue = value; + VerifyOrReturn(CheckValue("ColorTemperature", actualValue, ColorTemperatureValue)); + } + VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); + VerifyOrReturn( + CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn( + CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMaxMiredsValue)); NextTest(); }]; @@ -13178,7 +11040,7 @@ class Test_TC_CC_6_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestTurnOffLightThatWeTurnedOn_18() + CHIP_ERROR TestTurnOffLightThatWeTurnedOn_36() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -13195,7 +11057,7 @@ class Test_TC_CC_6_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_19() + CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_37() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -13218,11 +11080,11 @@ class Test_TC_CC_6_3 : public TestCommandBridge { } }; -class Test_TC_CC_7_1 : public TestCommandBridge { +class Test_TC_CC_6_3 : public TestCommandBridge { public: // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced - Test_TC_CC_7_1() - : TestCommandBridge("Test_TC_CC_7_1") + Test_TC_CC_6_3() + : TestCommandBridge("Test_TC_CC_6_3") , mTestIndex(0) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); @@ -13232,7 +11094,7 @@ class Test_TC_CC_7_1 : public TestCommandBridge { } // NOLINTEND(clang-analyzer-nullability.NullPassedToNonnull) - ~Test_TC_CC_7_1() {} + ~Test_TC_CC_6_3() {} /////////// TestCommand Interface ///////// void NextTest() override @@ -13240,11 +11102,11 @@ class Test_TC_CC_7_1 : public TestCommandBridge { CHIP_ERROR err = CHIP_NO_ERROR; if (0 == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Start: Test_TC_CC_7_1\n"); + ChipLogProgress(chipTool, " **** Test Start: Test_TC_CC_6_3\n"); } if (mTestCount == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Complete: Test_TC_CC_7_1\n"); + ChipLogProgress(chipTool, " **** Test Complete: Test_TC_CC_6_3\n"); SetCommandExitStatus(CHIP_NO_ERROR); return; } @@ -13269,217 +11131,124 @@ class Test_TC_CC_7_1 : public TestCommandBridge { err = TestCheckOnOffAttributeValueIsTrueAfterOnCommand_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Enhanced Move To Hue command\n"); - if (ShouldSkip("CC.S.C40.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 3 : TH reads ColorTempPhysicalMinMireds attribute from DUT\n"); + if (ShouldSkip("CC.S.F04 && CC.S.A400b")) { NextTest(); return; } - err = TestEnhancedMoveToHueCommand_3(); + err = TestThReadsColorTempPhysicalMinMiredsAttributeFromDut_3(); break; case 4: - ChipLogProgress(chipTool, - " ***** Test Step 4 : Check EnhancedCurrentHue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A4000")) { + ChipLogProgress(chipTool, " ***** Test Step 4 : TH reads ColorTempPhysicalMaxMireds attribute from DUT.\n"); + if (ShouldSkip("CC.S.F04 && CC.S.A400c")) { NextTest(); return; } - err = TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_4(); + err = TestThReadsColorTempPhysicalMaxMiredsAttributeFromDut_4(); break; case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Enhanced Move To Hue command\n"); - if (ShouldSkip("CC.S.C40.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 5 : TH reads ColorTemperatureMireds attribute from DUT.\n"); + if (ShouldSkip("CC.S.F04 && CC.S.A0007")) { NextTest(); return; } - err = TestEnhancedMoveToHueCommand_5(); + err = TestThReadsColorTemperatureMiredsAttributeFromDut_5(); break; case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : Wait 290ms\n"); - err = TestWait290ms_6(); - break; - case 7: - ChipLogProgress(chipTool, - " ***** Test Step 7 : Check EnhancedCurrentHue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A4000")) { + ChipLogProgress(chipTool, " ***** Test Step 6 : TH sends StepColorTemperature command to DUT with MoveMode = Up\n"); + if (ShouldSkip("CC.S.F04 && CC.S.C4C.Rsp")) { NextTest(); return; } - err = TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_7(); + err = TestThSendsStepColorTemperatureCommandToDutWithMoveModeUp_6(); break; - case 8: - ChipLogProgress(chipTool, " ***** Test Step 8 : Wait 295ms\n"); - err = TestWait295ms_8(); + case 7: + ChipLogProgress(chipTool, " ***** Test Step 7 : Wait 500ms\n"); + err = TestWait500ms_7(); break; - case 9: - ChipLogProgress(chipTool, - " ***** Test Step 9 : Check EnhancedCurrentHue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A4000")) { + case 8: + ChipLogProgress(chipTool, " ***** Test Step 8 : TH reads ColorTemperatureMireds attribute from DUT several times\n"); + if (ShouldSkip("CC.S.F04 && CC.S.A0007")) { NextTest(); return; } - err = TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_9(); + err = TestThReadsColorTemperatureMiredsAttributeFromDutSeveralTimes_8(); break; - case 10: - ChipLogProgress(chipTool, " ***** Test Step 10 : Wait 300ms\n"); - err = TestWait300ms_10(); + case 9: + ChipLogProgress(chipTool, " ***** Test Step 9 : Wait 500ms\n"); + err = TestWait500ms_9(); break; - case 11: - ChipLogProgress(chipTool, - " ***** Test Step 11 : Check EnhancedCurrentHue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A4000")) { + case 10: + ChipLogProgress(chipTool, " ***** Test Step 10 : TH reads ColorTemperatureMireds attribute from DUT several times\n"); + if (ShouldSkip("CC.S.F04 && CC.S.A0007")) { NextTest(); return; } - err = TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_11(); + err = TestThReadsColorTemperatureMiredsAttributeFromDutSeveralTimes_10(); + break; + case 11: + ChipLogProgress(chipTool, " ***** Test Step 11 : Wait 500ms\n"); + err = TestWait500ms_11(); break; case 12: - ChipLogProgress(chipTool, " ***** Test Step 12 : Enhanced Move To Hue command\n"); - if (ShouldSkip("CC.S.C40.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 12 : TH reads ColorTemperatureMireds attribute from DUT several times\n"); + if (ShouldSkip("CC.S.F04 && CC.S.A0007")) { NextTest(); return; } - err = TestEnhancedMoveToHueCommand_12(); + err = TestThReadsColorTemperatureMiredsAttributeFromDutSeveralTimes_12(); break; case 13: - ChipLogProgress(chipTool, " ***** Test Step 13 : Wait 290ms\n"); - err = TestWait290ms_13(); - break; - case 14: - ChipLogProgress(chipTool, - " ***** Test Step 14 : Check EnhancedCurrentHue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A4000")) { + ChipLogProgress(chipTool, " ***** Test Step 13 : TH sends StepColorTemperature command to DUT with MoveMode = Down\n"); + if (ShouldSkip("CC.S.F04 && CC.S.C4C.Rsp")) { NextTest(); return; } - err = TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_14(); + err = TestThSendsStepColorTemperatureCommandToDutWithMoveModeDown_13(); break; - case 15: - ChipLogProgress(chipTool, " ***** Test Step 15 : Wait 295ms\n"); - err = TestWait295ms_15(); + case 14: + ChipLogProgress(chipTool, " ***** Test Step 14 : Wait 500ms\n"); + err = TestWait500ms_14(); break; - case 16: - ChipLogProgress(chipTool, - " ***** Test Step 16 : Check EnhancedCurrentHue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A4000")) { + case 15: + ChipLogProgress(chipTool, " ***** Test Step 15 : TH reads ColorTemperatureMireds attribute from DUT several times\n"); + if (ShouldSkip("CC.S.F04 && CC.S.A0007")) { NextTest(); return; } - err = TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_16(); + err = TestThReadsColorTemperatureMiredsAttributeFromDutSeveralTimes_15(); break; - case 17: - ChipLogProgress(chipTool, " ***** Test Step 17 : Wait 300ms\n"); - err = TestWait300ms_17(); + case 16: + ChipLogProgress(chipTool, " ***** Test Step 16 : Wait 500ms\n"); + err = TestWait500ms_16(); break; - case 18: - ChipLogProgress(chipTool, - " ***** Test Step 18 : Check EnhancedCurrentHue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A4000")) { + case 17: + ChipLogProgress(chipTool, " ***** Test Step 17 : TH reads ColorTemperatureMireds attribute from DUT several times\n"); + if (ShouldSkip("CC.S.F04 && CC.S.A0007")) { NextTest(); return; } - err = TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_18(); + err = TestThReadsColorTemperatureMiredsAttributeFromDutSeveralTimes_17(); + break; + case 18: + ChipLogProgress(chipTool, " ***** Test Step 18 : Wait 500ms\n"); + err = TestWait500ms_18(); break; case 19: - ChipLogProgress(chipTool, " ***** Test Step 19 : Enhanced Move To Hue command\n"); - if (ShouldSkip("CC.S.C40.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 19 : TH reads ColorTemperatureMireds attribute from DUT several times\n"); + if (ShouldSkip("CC.S.F04 && CC.S.A0007")) { NextTest(); return; } - err = TestEnhancedMoveToHueCommand_19(); + err = TestThReadsColorTemperatureMiredsAttributeFromDutSeveralTimes_19(); break; case 20: - ChipLogProgress(chipTool, " ***** Test Step 20 : Wait 290ms\n"); - err = TestWait290ms_20(); + ChipLogProgress(chipTool, " ***** Test Step 20 : Turn off light that we turned on\n"); + err = TestTurnOffLightThatWeTurnedOn_20(); break; case 21: - ChipLogProgress(chipTool, - " ***** Test Step 21 : Check EnhancedCurrentHue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A4000")) { - NextTest(); - return; - } - err = TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_21(); - break; - case 22: - ChipLogProgress(chipTool, " ***** Test Step 22 : Wait 295ms\n"); - err = TestWait295ms_22(); - break; - case 23: - ChipLogProgress(chipTool, - " ***** Test Step 23 : Check EnhancedCurrentHue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A4000")) { - NextTest(); - return; - } - err = TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_23(); - break; - case 24: - ChipLogProgress(chipTool, " ***** Test Step 24 : Wait 300ms\n"); - err = TestWait300ms_24(); - break; - case 25: - ChipLogProgress(chipTool, - " ***** Test Step 25 : Check EnhancedCurrentHue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A4000")) { - NextTest(); - return; - } - err = TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_25(); - break; - case 26: - ChipLogProgress(chipTool, " ***** Test Step 26 : Enhanced Move To Hue command\n"); - if (ShouldSkip("CC.S.C40.Rsp")) { - NextTest(); - return; - } - err = TestEnhancedMoveToHueCommand_26(); - break; - case 27: - ChipLogProgress(chipTool, " ***** Test Step 27 : Wait 290ms\n"); - err = TestWait290ms_27(); - break; - case 28: - ChipLogProgress(chipTool, - " ***** Test Step 28 : Check EnhancedCurrentHue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A4000")) { - NextTest(); - return; - } - err = TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_28(); - break; - case 29: - ChipLogProgress(chipTool, " ***** Test Step 29 : Wait 295ms\n"); - err = TestWait295ms_29(); - break; - case 30: - ChipLogProgress(chipTool, - " ***** Test Step 30 : Check EnhancedCurrentHue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A4000")) { - NextTest(); - return; - } - err = TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_30(); - break; - case 31: - ChipLogProgress(chipTool, " ***** Test Step 31 : Wait 300ms\n"); - err = TestWait300ms_31(); - break; - case 32: - ChipLogProgress(chipTool, - " ***** Test Step 32 : Check EnhancedCurrentHue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A4000")) { - NextTest(); - return; - } - err = TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_32(); - break; - case 33: - ChipLogProgress(chipTool, " ***** Test Step 33 : Turn off light that we turned on\n"); - err = TestTurnOffLightThatWeTurnedOn_33(); - break; - case 34: - ChipLogProgress(chipTool, " ***** Test Step 34 : Check on/off attribute value is false after off command\n"); - err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_34(); + ChipLogProgress(chipTool, " ***** Test Step 21 : Check on/off attribute value is false after off command\n"); + err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_21(); break; } @@ -13558,45 +11327,6 @@ class Test_TC_CC_7_1 : public TestCommandBridge { case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 22: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 23: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 24: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 25: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 26: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 27: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 28: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 29: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 30: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 31: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - 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; } // Go on to the next test. @@ -13610,7 +11340,7 @@ class Test_TC_CC_7_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 35; + const uint16_t mTestCount = 22; chip::Optional mNodeId; chip::Optional mCluster; @@ -13662,8 +11392,9 @@ class Test_TC_CC_7_1 : public TestCommandBridge { return CHIP_NO_ERROR; } + NSNumber * _Nonnull ColorTempPhysicalMinMiredsValue; - CHIP_ERROR TestEnhancedMoveToHueCommand_3() + CHIP_ERROR TestThReadsColorTempPhysicalMinMiredsAttributeFromDut_3() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -13671,227 +11402,27 @@ class Test_TC_CC_7_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - __auto_type * params = [[MTRColorControlClusterEnhancedMoveToHueParams alloc] init]; - params.enhancedHue = [NSNumber numberWithUnsignedShort:1025U]; - params.direction = [NSNumber numberWithUnsignedChar:0U]; - params.transitionTime = [NSNumber numberWithUnsignedShort:1U]; - params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; - params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; - [cluster enhancedMoveToHueWithParams:params - completionHandler:^(NSError * _Nullable err) { - NSLog(@"Enhanced Move To Hue command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_4() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeEnhancedCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check EnhancedCurrentHue attribute value matched the value sent by the last command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("enhancedCurrentHue", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("enhancedCurrentHue", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("enhancedCurrentHue", [value unsignedShortValue], 65535U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestEnhancedMoveToHueCommand_5() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - __auto_type * params = [[MTRColorControlClusterEnhancedMoveToHueParams alloc] init]; - params.enhancedHue = [NSNumber numberWithUnsignedShort:1100U]; - params.direction = [NSNumber numberWithUnsignedChar:0U]; - params.transitionTime = [NSNumber numberWithUnsignedShort:300U]; - params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; - params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; - [cluster enhancedMoveToHueWithParams:params - completionHandler:^(NSError * _Nullable err) { - NSLog(@"Enhanced Move To Hue command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait290ms_6() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 290UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_7() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeEnhancedCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check EnhancedCurrentHue attribute value matched the value sent by the last command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("enhancedCurrentHue", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("enhancedCurrentHue", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("enhancedCurrentHue", [value unsignedShortValue], 65535U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait295ms_8() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 295UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_9() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeEnhancedCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check EnhancedCurrentHue attribute value matched the value sent by the last command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("enhancedCurrentHue", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("enhancedCurrentHue", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("enhancedCurrentHue", [value unsignedShortValue], 65535U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait300ms_10() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 300UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_11() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeEnhancedCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check EnhancedCurrentHue attribute value matched the value sent by the last command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("enhancedCurrentHue", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("enhancedCurrentHue", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("enhancedCurrentHue", [value unsignedShortValue], 65535U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestEnhancedMoveToHueCommand_12() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - __auto_type * params = [[MTRColorControlClusterEnhancedMoveToHueParams alloc] init]; - params.enhancedHue = [NSNumber numberWithUnsignedShort:1150U]; - params.direction = [NSNumber numberWithUnsignedChar:1U]; - params.transitionTime = [NSNumber numberWithUnsignedShort:300U]; - params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; - params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; - [cluster enhancedMoveToHueWithParams:params - completionHandler:^(NSError * _Nullable err) { - NSLog(@"Enhanced Move To Hue command Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait290ms_13() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 290UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_14() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeEnhancedCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check EnhancedCurrentHue attribute value matched the value sent by the last command Error: %@", err); + [cluster + readAttributeColorTempPhysicalMinMiredsWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads ColorTempPhysicalMinMireds attribute from DUT Error: %@", err); - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintType("enhancedCurrentHue", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("enhancedCurrentHue", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("enhancedCurrentHue", [value unsignedShortValue], 65535U)); + VerifyOrReturn(CheckConstraintType("colorTempPhysicalMinMireds", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("colorTempPhysicalMinMireds", [value unsignedShortValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("colorTempPhysicalMinMireds", [value unsignedShortValue], 65279U)); + { + ColorTempPhysicalMinMiredsValue = value; + } - NextTest(); - }]; + NextTest(); + }]; return CHIP_NO_ERROR; } + NSNumber * _Nonnull ColorTempPhysicalMaxMiredsValue; - CHIP_ERROR TestWait295ms_15() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 295UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_16() + CHIP_ERROR TestThReadsColorTempPhysicalMaxMiredsAttributeFromDut_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -13899,29 +11430,26 @@ class Test_TC_CC_7_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeEnhancedCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check EnhancedCurrentHue attribute value matched the value sent by the last command Error: %@", err); + [cluster + readAttributeColorTempPhysicalMaxMiredsWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads ColorTempPhysicalMaxMireds attribute from DUT. Error: %@", err); - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintType("enhancedCurrentHue", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("enhancedCurrentHue", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("enhancedCurrentHue", [value unsignedShortValue], 65535U)); + VerifyOrReturn(CheckConstraintType("colorTempPhysicalMaxMireds", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("colorTempPhysicalMaxMireds", [value unsignedShortValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("colorTempPhysicalMaxMireds", [value unsignedShortValue], 65279U)); + { + ColorTempPhysicalMaxMiredsValue = value; + } - NextTest(); - }]; + NextTest(); + }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestWait300ms_17() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 300UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_18() + CHIP_ERROR TestThReadsColorTemperatureMiredsAttributeFromDut_5() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -13929,14 +11457,16 @@ class Test_TC_CC_7_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeEnhancedCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check EnhancedCurrentHue attribute value matched the value sent by the last command Error: %@", err); + [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads ColorTemperatureMireds attribute from DUT. Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintType("enhancedCurrentHue", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("enhancedCurrentHue", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("enhancedCurrentHue", [value unsignedShortValue], 65535U)); + VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); + VerifyOrReturn( + CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMinMiredsValue)); + VerifyOrReturn( + CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], ColorTempPhysicalMaxMiredsValue)); NextTest(); }]; @@ -13944,7 +11474,7 @@ class Test_TC_CC_7_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestEnhancedMoveToHueCommand_19() + CHIP_ERROR TestThSendsStepColorTemperatureCommandToDutWithMoveModeUp_6() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -13952,32 +11482,34 @@ class Test_TC_CC_7_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - __auto_type * params = [[MTRColorControlClusterEnhancedMoveToHueParams alloc] init]; - params.enhancedHue = [NSNumber numberWithUnsignedShort:1200U]; - params.direction = [NSNumber numberWithUnsignedChar:2U]; - params.transitionTime = [NSNumber numberWithUnsignedShort:300U]; + __auto_type * params = [[MTRColorControlClusterStepColorTemperatureParams alloc] init]; + params.stepMode = [NSNumber numberWithUnsignedChar:1U]; + params.stepSize = [NSNumber numberWithUnsignedShort:100U]; + params.transitionTime = [NSNumber numberWithUnsignedShort:15U]; + params.colorTemperatureMinimumMireds = [ColorTempPhysicalMinMiredsValue copy]; + params.colorTemperatureMaximumMireds = [ColorTempPhysicalMaxMiredsValue copy]; params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; - [cluster enhancedMoveToHueWithParams:params - completionHandler:^(NSError * _Nullable err) { - NSLog(@"Enhanced Move To Hue command Error: %@", err); + [cluster stepColorTemperatureWithParams:params + completionHandler:^(NSError * _Nullable err) { + NSLog(@"TH sends StepColorTemperature command to DUT with MoveMode = Up Error: %@", err); - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - NextTest(); - }]; + NextTest(); + }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestWait290ms_20() + CHIP_ERROR TestWait500ms_7() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 290UL; + value.ms = 500UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_21() + CHIP_ERROR TestThReadsColorTemperatureMiredsAttributeFromDutSeveralTimes_8() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -13985,14 +11517,14 @@ class Test_TC_CC_7_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeEnhancedCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check EnhancedCurrentHue attribute value matched the value sent by the last command Error: %@", err); + [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads ColorTemperatureMireds attribute from DUT several times Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintType("enhancedCurrentHue", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("enhancedCurrentHue", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("enhancedCurrentHue", [value unsignedShortValue], 65535U)); + VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); NextTest(); }]; @@ -14000,14 +11532,14 @@ class Test_TC_CC_7_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait295ms_22() + CHIP_ERROR TestWait500ms_9() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 295UL; + value.ms = 500UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_23() + CHIP_ERROR TestThReadsColorTemperatureMiredsAttributeFromDutSeveralTimes_10() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -14015,14 +11547,14 @@ class Test_TC_CC_7_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeEnhancedCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check EnhancedCurrentHue attribute value matched the value sent by the last command Error: %@", err); + [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads ColorTemperatureMireds attribute from DUT several times Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintType("enhancedCurrentHue", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("enhancedCurrentHue", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("enhancedCurrentHue", [value unsignedShortValue], 65535U)); + VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); NextTest(); }]; @@ -14030,14 +11562,14 @@ class Test_TC_CC_7_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait300ms_24() + CHIP_ERROR TestWait500ms_11() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 300UL; + value.ms = 500UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_25() + CHIP_ERROR TestThReadsColorTemperatureMiredsAttributeFromDutSeveralTimes_12() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -14045,14 +11577,14 @@ class Test_TC_CC_7_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeEnhancedCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check EnhancedCurrentHue attribute value matched the value sent by the last command Error: %@", err); + [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads ColorTemperatureMireds attribute from DUT several times Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintType("enhancedCurrentHue", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("enhancedCurrentHue", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("enhancedCurrentHue", [value unsignedShortValue], 65535U)); + VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); NextTest(); }]; @@ -14060,7 +11592,7 @@ class Test_TC_CC_7_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestEnhancedMoveToHueCommand_26() + CHIP_ERROR TestThSendsStepColorTemperatureCommandToDutWithMoveModeDown_13() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -14068,32 +11600,34 @@ class Test_TC_CC_7_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - __auto_type * params = [[MTRColorControlClusterEnhancedMoveToHueParams alloc] init]; - params.enhancedHue = [NSNumber numberWithUnsignedShort:1300U]; - params.direction = [NSNumber numberWithUnsignedChar:3U]; - params.transitionTime = [NSNumber numberWithUnsignedShort:300U]; + __auto_type * params = [[MTRColorControlClusterStepColorTemperatureParams alloc] init]; + params.stepMode = [NSNumber numberWithUnsignedChar:3U]; + params.stepSize = [NSNumber numberWithUnsignedShort:5U]; + params.transitionTime = [NSNumber numberWithUnsignedShort:50U]; + params.colorTemperatureMinimumMireds = [ColorTempPhysicalMinMiredsValue copy]; + params.colorTemperatureMaximumMireds = [ColorTempPhysicalMaxMiredsValue copy]; params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; - [cluster enhancedMoveToHueWithParams:params - completionHandler:^(NSError * _Nullable err) { - NSLog(@"Enhanced Move To Hue command Error: %@", err); + [cluster stepColorTemperatureWithParams:params + completionHandler:^(NSError * _Nullable err) { + NSLog(@"TH sends StepColorTemperature command to DUT with MoveMode = Down Error: %@", err); - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - NextTest(); - }]; + NextTest(); + }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestWait290ms_27() + CHIP_ERROR TestWait500ms_14() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 290UL; + value.ms = 500UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_28() + CHIP_ERROR TestThReadsColorTemperatureMiredsAttributeFromDutSeveralTimes_15() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -14101,14 +11635,14 @@ class Test_TC_CC_7_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeEnhancedCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check EnhancedCurrentHue attribute value matched the value sent by the last command Error: %@", err); + [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads ColorTemperatureMireds attribute from DUT several times Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintType("enhancedCurrentHue", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("enhancedCurrentHue", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("enhancedCurrentHue", [value unsignedShortValue], 65535U)); + VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); NextTest(); }]; @@ -14116,14 +11650,14 @@ class Test_TC_CC_7_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait295ms_29() + CHIP_ERROR TestWait500ms_16() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 295UL; + value.ms = 500UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_30() + CHIP_ERROR TestThReadsColorTemperatureMiredsAttributeFromDutSeveralTimes_17() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -14131,14 +11665,14 @@ class Test_TC_CC_7_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeEnhancedCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check EnhancedCurrentHue attribute value matched the value sent by the last command Error: %@", err); + [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads ColorTemperatureMireds attribute from DUT several times Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintType("enhancedCurrentHue", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("enhancedCurrentHue", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("enhancedCurrentHue", [value unsignedShortValue], 65535U)); + VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); NextTest(); }]; @@ -14146,14 +11680,14 @@ class Test_TC_CC_7_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait300ms_31() + CHIP_ERROR TestWait500ms_18() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 300UL; + value.ms = 500UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_32() + CHIP_ERROR TestThReadsColorTemperatureMiredsAttributeFromDutSeveralTimes_19() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -14161,14 +11695,14 @@ class Test_TC_CC_7_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeEnhancedCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check EnhancedCurrentHue attribute value matched the value sent by the last command Error: %@", err); + [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads ColorTemperatureMireds attribute from DUT several times Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintType("enhancedCurrentHue", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("enhancedCurrentHue", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("enhancedCurrentHue", [value unsignedShortValue], 65535U)); + VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); NextTest(); }]; @@ -14176,7 +11710,7 @@ class Test_TC_CC_7_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestTurnOffLightThatWeTurnedOn_33() + CHIP_ERROR TestTurnOffLightThatWeTurnedOn_20() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -14193,7 +11727,7 @@ class Test_TC_CC_7_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_34() + CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_21() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -14267,140 +11801,132 @@ class Test_TC_CC_7_2 : public TestCommandBridge { err = TestCheckOnOffAttributeValueIsTrueAfterOnCommand_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Check EnhancedCurrentHue attribute from DUT\n"); - if (ShouldSkip("CC.S.A4000")) { + ChipLogProgress(chipTool, " ***** Test Step 3 : TH reads EnhancedCurrentHue attribute from DUT\n"); + if (ShouldSkip("CC.S.F01 && CC.S.A4000")) { NextTest(); return; } - err = TestCheckEnhancedCurrentHueAttributeFromDut_3(); + err = TestThReadsEnhancedCurrentHueAttributeFromDut_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Enhanced Move Hue Up command\n"); - if (ShouldSkip("CC.S.C41.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 4 : TH sends EnhancedMoveHue command to DUT with MoveMode Up\n"); + if (ShouldSkip("CC.S.F01 && CC.S.C41.Rsp")) { NextTest(); return; } - err = TestEnhancedMoveHueUpCommand_4(); + err = TestThSendsEnhancedMoveHueCommandToDutWithMoveModeUp_4(); break; case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Wait 290ms\n"); - err = TestWait290ms_5(); + ChipLogProgress(chipTool, " ***** Test Step 5 : Wait 1000ms\n"); + err = TestWait1000ms_5(); break; case 6: - ChipLogProgress(chipTool, - " ***** Test Step 6 : Check EnhancedCurrentHue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A4000")) { + ChipLogProgress(chipTool, " ***** Test Step 6 : TH reads EnhancedCurrentHue attribute from DUT several times.\n"); + if (ShouldSkip("CC.S.F01 && CC.S.A4000")) { NextTest(); return; } - err = TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_6(); + err = TestThReadsEnhancedCurrentHueAttributeFromDutSeveralTimes_6(); break; case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : Wait 295ms\n"); - err = TestWait295ms_7(); + ChipLogProgress(chipTool, " ***** Test Step 7 : Wait 1000ms\n"); + err = TestWait1000ms_7(); break; case 8: - ChipLogProgress(chipTool, - " ***** Test Step 8 : Check EnhancedCurrentHue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A4000")) { + ChipLogProgress(chipTool, " ***** Test Step 8 : TH reads EnhancedCurrentHue attribute from DUT several times.\n"); + if (ShouldSkip("CC.S.F01 && CC.S.A4000")) { NextTest(); return; } - err = TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_8(); + err = TestThReadsEnhancedCurrentHueAttributeFromDutSeveralTimes_8(); break; case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Wait 300ms\n"); - err = TestWait300ms_9(); + ChipLogProgress(chipTool, " ***** Test Step 9 : Wait 1000ms\n"); + err = TestWait1000ms_9(); break; case 10: - ChipLogProgress(chipTool, - " ***** Test Step 10 : Check EnhancedCurrentHue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A4000")) { + ChipLogProgress(chipTool, " ***** Test Step 10 : TH reads EnhancedCurrentHue attribute from DUT several times.\n"); + if (ShouldSkip("CC.S.F01 && CC.S.A4000")) { NextTest(); return; } - err = TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_10(); + err = TestThReadsEnhancedCurrentHueAttributeFromDutSeveralTimes_10(); break; case 11: - ChipLogProgress(chipTool, " ***** Test Step 11 : Enhanced Move Hue Stop command\n"); - if (ShouldSkip("CC.S.C41.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 11 : TH sends EnhancedMoveHue command to DUT with MoveMode Stop\n"); + if (ShouldSkip("CC.S.F01 && CC.S.C41.Rsp")) { NextTest(); return; } - err = TestEnhancedMoveHueStopCommand_11(); + err = TestThSendsEnhancedMoveHueCommandToDutWithMoveModeStop_11(); break; case 12: - ChipLogProgress(chipTool, - " ***** Test Step 12 : Check EnhancedCurrentHue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A4000")) { + ChipLogProgress(chipTool, " ***** Test Step 12 : TH reads EnhancedCurrentHue attribute from DUT several times\n"); + if (ShouldSkip("CC.S.F01 && CC.S.A4000")) { NextTest(); return; } - err = TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_12(); + err = TestThReadsEnhancedCurrentHueAttributeFromDutSeveralTimes_12(); break; case 13: - ChipLogProgress(chipTool, " ***** Test Step 13 : Enhanced Move Hue Down command\n"); - if (ShouldSkip("CC.S.C41.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 13 : TH sends EnhancedMoveHue command to DUT with MoveMode Down\n"); + if (ShouldSkip("CC.S.F01 && CC.S.C41.Rsp")) { NextTest(); return; } - err = TestEnhancedMoveHueDownCommand_13(); + err = TestThSendsEnhancedMoveHueCommandToDutWithMoveModeDown_13(); break; case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : Wait 40ms\n"); - err = TestWait40ms_14(); + ChipLogProgress(chipTool, " ***** Test Step 14 : Wait 500ms\n"); + err = TestWait500ms_14(); break; case 15: - ChipLogProgress(chipTool, - " ***** Test Step 15 : Check EnhancedCurrentHue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A4000")) { + ChipLogProgress(chipTool, " ***** Test Step 15 : TH reads EnhancedCurrentHue attribute from DUT several times\n"); + if (ShouldSkip("CC.S.F01 && CC.S.A4000")) { NextTest(); return; } - err = TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_15(); + err = TestThReadsEnhancedCurrentHueAttributeFromDutSeveralTimes_15(); break; case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : Wait 45ms\n"); - err = TestWait45ms_16(); + ChipLogProgress(chipTool, " ***** Test Step 16 : Wait 500ms\n"); + err = TestWait500ms_16(); break; case 17: - ChipLogProgress(chipTool, - " ***** Test Step 17 : Check EnhancedCurrentHue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A4000")) { + ChipLogProgress(chipTool, " ***** Test Step 17 : TH reads EnhancedCurrentHue attribute from DUT several times\n"); + if (ShouldSkip("CC.S.F01 && CC.S.A4000")) { NextTest(); return; } - err = TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_17(); + err = TestThReadsEnhancedCurrentHueAttributeFromDutSeveralTimes_17(); break; case 18: - ChipLogProgress(chipTool, " ***** Test Step 18 : Wait 50ms\n"); - err = TestWait50ms_18(); + ChipLogProgress(chipTool, " ***** Test Step 18 : Wait 500ms\n"); + err = TestWait500ms_18(); break; case 19: - ChipLogProgress(chipTool, - " ***** Test Step 19 : Check EnhancedCurrentHue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A4000")) { + ChipLogProgress(chipTool, " ***** Test Step 19 : TH reads EnhancedCurrentHue attribute from DUT several times\n"); + if (ShouldSkip("CC.S.F01 && CC.S.A4000")) { NextTest(); return; } - err = TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_19(); + err = TestThReadsEnhancedCurrentHueAttributeFromDutSeveralTimes_19(); break; case 20: - ChipLogProgress(chipTool, " ***** Test Step 20 : Enhanced Move Hue Stop command\n"); - if (ShouldSkip("CC.S.C41.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 20 : TH sends EnhancedMoveHue command to DUT with MoveMode Stop\n"); + if (ShouldSkip("CC.S.F01 && CC.S.C41.Rsp")) { NextTest(); return; } - err = TestEnhancedMoveHueStopCommand_20(); + err = TestThSendsEnhancedMoveHueCommandToDutWithMoveModeStop_20(); break; case 21: - ChipLogProgress(chipTool, - " ***** Test Step 21 : Check EnhancedCurrentHue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A4000")) { + ChipLogProgress(chipTool, " ***** Test Step 21 : TH reads EnhancedCurrentHue attribute from DUT several times.\n"); + if (ShouldSkip("CC.S.F01 && CC.S.A4000")) { NextTest(); return; } - err = TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_21(); + err = TestThReadsEnhancedCurrentHueAttributeFromDutSeveralTimes_21(); break; case 22: ChipLogProgress(chipTool, " ***** Test Step 22 : Turn off light that we turned on\n"); @@ -14559,7 +12085,7 @@ class Test_TC_CC_7_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckEnhancedCurrentHueAttributeFromDut_3() + CHIP_ERROR TestThReadsEnhancedCurrentHueAttributeFromDut_3() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -14568,7 +12094,7 @@ class Test_TC_CC_7_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeEnhancedCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check EnhancedCurrentHue attribute from DUT Error: %@", err); + NSLog(@"TH reads EnhancedCurrentHue attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -14582,7 +12108,7 @@ class Test_TC_CC_7_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestEnhancedMoveHueUpCommand_4() + CHIP_ERROR TestThSendsEnhancedMoveHueCommandToDutWithMoveModeUp_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -14597,7 +12123,7 @@ class Test_TC_CC_7_2 : public TestCommandBridge { params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster enhancedMoveHueWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Enhanced Move Hue Up command Error: %@", err); + NSLog(@"TH sends EnhancedMoveHue command to DUT with MoveMode Up Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -14607,14 +12133,14 @@ class Test_TC_CC_7_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait290ms_5() + CHIP_ERROR TestWait1000ms_5() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 290UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_6() + CHIP_ERROR TestThReadsEnhancedCurrentHueAttributeFromDutSeveralTimes_6() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -14623,7 +12149,7 @@ class Test_TC_CC_7_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeEnhancedCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check EnhancedCurrentHue attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"TH reads EnhancedCurrentHue attribute from DUT several times. Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -14637,14 +12163,14 @@ class Test_TC_CC_7_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait295ms_7() + CHIP_ERROR TestWait1000ms_7() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 295UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_8() + CHIP_ERROR TestThReadsEnhancedCurrentHueAttributeFromDutSeveralTimes_8() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -14653,7 +12179,7 @@ class Test_TC_CC_7_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeEnhancedCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check EnhancedCurrentHue attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"TH reads EnhancedCurrentHue attribute from DUT several times. Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -14667,14 +12193,14 @@ class Test_TC_CC_7_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait300ms_9() + CHIP_ERROR TestWait1000ms_9() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 300UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_10() + CHIP_ERROR TestThReadsEnhancedCurrentHueAttributeFromDutSeveralTimes_10() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -14683,7 +12209,7 @@ class Test_TC_CC_7_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeEnhancedCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check EnhancedCurrentHue attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"TH reads EnhancedCurrentHue attribute from DUT several times. Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -14697,7 +12223,7 @@ class Test_TC_CC_7_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestEnhancedMoveHueStopCommand_11() + CHIP_ERROR TestThSendsEnhancedMoveHueCommandToDutWithMoveModeStop_11() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -14712,7 +12238,7 @@ class Test_TC_CC_7_2 : public TestCommandBridge { params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster enhancedMoveHueWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Enhanced Move Hue Stop command Error: %@", err); + NSLog(@"TH sends EnhancedMoveHue command to DUT with MoveMode Stop Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -14722,7 +12248,7 @@ class Test_TC_CC_7_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_12() + CHIP_ERROR TestThReadsEnhancedCurrentHueAttributeFromDutSeveralTimes_12() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -14731,7 +12257,7 @@ class Test_TC_CC_7_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeEnhancedCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check EnhancedCurrentHue attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"TH reads EnhancedCurrentHue attribute from DUT several times Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -14745,7 +12271,7 @@ class Test_TC_CC_7_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestEnhancedMoveHueDownCommand_13() + CHIP_ERROR TestThSendsEnhancedMoveHueCommandToDutWithMoveModeDown_13() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -14755,12 +12281,12 @@ class Test_TC_CC_7_2 : public TestCommandBridge { __auto_type * params = [[MTRColorControlClusterEnhancedMoveHueParams alloc] init]; params.moveMode = [NSNumber numberWithUnsignedChar:3U]; - params.rate = [NSNumber numberWithUnsignedShort:5U]; + params.rate = [NSNumber numberWithUnsignedShort:15U]; params.optionsMask = [NSNumber numberWithUnsignedChar:0U]; params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster enhancedMoveHueWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Enhanced Move Hue Down command Error: %@", err); + NSLog(@"TH sends EnhancedMoveHue command to DUT with MoveMode Down Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -14770,14 +12296,14 @@ class Test_TC_CC_7_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait40ms_14() + CHIP_ERROR TestWait500ms_14() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 40UL; + value.ms = 500UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_15() + CHIP_ERROR TestThReadsEnhancedCurrentHueAttributeFromDutSeveralTimes_15() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -14786,7 +12312,7 @@ class Test_TC_CC_7_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeEnhancedCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check EnhancedCurrentHue attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"TH reads EnhancedCurrentHue attribute from DUT several times Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -14800,14 +12326,14 @@ class Test_TC_CC_7_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait45ms_16() + CHIP_ERROR TestWait500ms_16() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 45UL; + value.ms = 500UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_17() + CHIP_ERROR TestThReadsEnhancedCurrentHueAttributeFromDutSeveralTimes_17() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -14816,7 +12342,7 @@ class Test_TC_CC_7_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeEnhancedCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check EnhancedCurrentHue attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"TH reads EnhancedCurrentHue attribute from DUT several times Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -14830,14 +12356,14 @@ class Test_TC_CC_7_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait50ms_18() + CHIP_ERROR TestWait500ms_18() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 50UL; + value.ms = 500UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_19() + CHIP_ERROR TestThReadsEnhancedCurrentHueAttributeFromDutSeveralTimes_19() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -14846,7 +12372,7 @@ class Test_TC_CC_7_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeEnhancedCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check EnhancedCurrentHue attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"TH reads EnhancedCurrentHue attribute from DUT several times Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -14860,7 +12386,7 @@ class Test_TC_CC_7_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestEnhancedMoveHueStopCommand_20() + CHIP_ERROR TestThSendsEnhancedMoveHueCommandToDutWithMoveModeStop_20() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -14875,7 +12401,7 @@ class Test_TC_CC_7_2 : public TestCommandBridge { params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster enhancedMoveHueWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Enhanced Move Hue Stop command Error: %@", err); + NSLog(@"TH sends EnhancedMoveHue command to DUT with MoveMode Stop Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -14885,7 +12411,7 @@ class Test_TC_CC_7_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastCommand_21() + CHIP_ERROR TestThReadsEnhancedCurrentHueAttributeFromDutSeveralTimes_21() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -14894,7 +12420,7 @@ class Test_TC_CC_7_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeEnhancedCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check EnhancedCurrentHue attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"TH reads EnhancedCurrentHue attribute from DUT several times. Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -14999,48 +12525,48 @@ class Test_TC_CC_7_3 : public TestCommandBridge { err = TestCheckOnOffAttributeValueIsTrueAfterOnCommand_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Reads EnhancedCurrentHue attribute from DUT\n"); - if (ShouldSkip("CC.S.A4000")) { + ChipLogProgress(chipTool, " ***** Test Step 3 : TH reads EnhancedCurrentHue attribute from DUT\n"); + if (ShouldSkip("CC.S.F01 && CC.S.A4000")) { NextTest(); return; } - err = TestReadsEnhancedCurrentHueAttributeFromDut_3(); + err = TestThReadsEnhancedCurrentHueAttributeFromDut_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Enhanced Step Hue Up command\n"); - if (ShouldSkip("CC.S.C42.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 4 : TH sends EnhancedStepHue command to DUT with StepMode Up\n"); + if (ShouldSkip("CC.S.F01 && CC.S.C42.Rsp")) { NextTest(); return; } - err = TestEnhancedStepHueUpCommand_4(); + err = TestThSendsEnhancedStepHueCommandToDutWithStepModeUp_4(); break; case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Wait 10ms\n"); - err = TestWait10ms_5(); + ChipLogProgress(chipTool, " ***** Test Step 5 : Wait 1000ms\n"); + err = TestWait1000ms_5(); break; case 6: ChipLogProgress(chipTool, " ***** Test Step 6 : Over TransitionTime,Read EnhancedCurrentHue attribute from DUT\n"); - if (ShouldSkip("CC.S.A4000")) { + if (ShouldSkip("CC.S.F01 && CC.S.A4000")) { NextTest(); return; } err = TestOverTransitionTimeReadEnhancedCurrentHueAttributeFromDut_6(); break; case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : Enhanced Step Hue Down command\n"); - if (ShouldSkip("CC.S.C42.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 7 : TH sends EnhancedStepHue command to DUT with StepMode Down\n"); + if (ShouldSkip("CC.S.F01 && CC.S.C42.Rsp")) { NextTest(); return; } - err = TestEnhancedStepHueDownCommand_7(); + err = TestThSendsEnhancedStepHueCommandToDutWithStepModeDown_7(); break; case 8: - ChipLogProgress(chipTool, " ***** Test Step 8 : Wait 10ms\n"); - err = TestWait10ms_8(); + ChipLogProgress(chipTool, " ***** Test Step 8 : Wait 1000ms\n"); + err = TestWait1000ms_8(); break; case 9: ChipLogProgress(chipTool, " ***** Test Step 9 : Over TransitionTime,Read EnhancedCurrentHue attribute from DUT\n"); - if (ShouldSkip("CC.S.A4000")) { + if (ShouldSkip("CC.S.F01 && CC.S.A4000")) { NextTest(); return; } @@ -15167,7 +12693,7 @@ class Test_TC_CC_7_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsEnhancedCurrentHueAttributeFromDut_3() + CHIP_ERROR TestThReadsEnhancedCurrentHueAttributeFromDut_3() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -15176,7 +12702,7 @@ class Test_TC_CC_7_3 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeEnhancedCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads EnhancedCurrentHue attribute from DUT Error: %@", err); + NSLog(@"TH reads EnhancedCurrentHue attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -15190,7 +12716,7 @@ class Test_TC_CC_7_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestEnhancedStepHueUpCommand_4() + CHIP_ERROR TestThSendsEnhancedStepHueCommandToDutWithStepModeUp_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -15206,7 +12732,7 @@ class Test_TC_CC_7_3 : public TestCommandBridge { params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster enhancedStepHueWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Enhanced Step Hue Up command Error: %@", err); + NSLog(@"TH sends EnhancedStepHue command to DUT with StepMode Up Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -15216,10 +12742,10 @@ class Test_TC_CC_7_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait10ms_5() + CHIP_ERROR TestWait1000ms_5() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 10UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } @@ -15246,7 +12772,7 @@ class Test_TC_CC_7_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestEnhancedStepHueDownCommand_7() + CHIP_ERROR TestThSendsEnhancedStepHueCommandToDutWithStepModeDown_7() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -15262,7 +12788,7 @@ class Test_TC_CC_7_3 : public TestCommandBridge { params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster enhancedStepHueWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Enhanced Step Hue Down command Error: %@", err); + NSLog(@"TH sends EnhancedStepHue command to DUT with StepMode Down Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -15272,10 +12798,10 @@ class Test_TC_CC_7_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait10ms_8() + CHIP_ERROR TestWait1000ms_8() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 10UL; + value.ms = 1000UL; return WaitForMs("alpha", value); } @@ -15393,29 +12919,29 @@ class Test_TC_CC_7_4 : public TestCommandBridge { err = TestCheckOnOffAttributeValueIsTrueAfterOnCommand_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Reads EnhancedCurrentHue attribute from DUT\n"); - if (ShouldSkip("CC.S.A4000")) { + ChipLogProgress(chipTool, " ***** Test Step 3 : TH reads EnhancedCurrentHue attribute from DUT\n"); + if (ShouldSkip("CC.S.F01 && CC.S.A4000")) { NextTest(); return; } - err = TestReadsEnhancedCurrentHueAttributeFromDut_3(); + err = TestThReadsEnhancedCurrentHueAttributeFromDut_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Enhanced move to hue and saturation command\n"); - if (ShouldSkip("CC.S.C43.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 4 : TH sends EnhancedMoveToHueAndSaturation command to DUT\n"); + if (ShouldSkip("CC.S.F01 && CC.S.C43.Rsp")) { NextTest(); return; } - err = TestEnhancedMoveToHueAndSaturationCommand_4(); + err = TestThSendsEnhancedMoveToHueAndSaturationCommandToDut_4(); break; case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Wait 10ms\n"); - err = TestWait10ms_5(); + ChipLogProgress(chipTool, " ***** Test Step 5 : Wait 1500ms\n"); + err = TestWait1500ms_5(); break; case 6: ChipLogProgress(chipTool, " ***** Test Step 6 : Check EnhancedCurrentHue attribute value matched the value sent by the last command\n"); - if (ShouldSkip("CC.S.A4000")) { + if (ShouldSkip("CC.S.F01 && CC.S.A4000")) { NextTest(); return; } @@ -15533,7 +13059,7 @@ class Test_TC_CC_7_4 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsEnhancedCurrentHueAttributeFromDut_3() + CHIP_ERROR TestThReadsEnhancedCurrentHueAttributeFromDut_3() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -15542,7 +13068,7 @@ class Test_TC_CC_7_4 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeEnhancedCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads EnhancedCurrentHue attribute from DUT Error: %@", err); + NSLog(@"TH reads EnhancedCurrentHue attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -15556,7 +13082,7 @@ class Test_TC_CC_7_4 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestEnhancedMoveToHueAndSaturationCommand_4() + CHIP_ERROR TestThSendsEnhancedMoveToHueAndSaturationCommandToDut_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -15572,7 +13098,7 @@ class Test_TC_CC_7_4 : public TestCommandBridge { params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster enhancedMoveToHueAndSaturationWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Enhanced move to hue and saturation command Error: %@", err); + NSLog(@"TH sends EnhancedMoveToHueAndSaturation command to DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -15582,10 +13108,10 @@ class Test_TC_CC_7_4 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait10ms_5() + CHIP_ERROR TestWait1500ms_5() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 10UL; + value.ms = 1500UL; return WaitForMs("alpha", value); } @@ -15602,6 +13128,11 @@ class Test_TC_CC_7_4 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + { + id actualValue = value; + VerifyOrReturn(CheckValue("EnhancedCurrentHue", actualValue, 1200U)); + } + VerifyOrReturn(CheckConstraintType("enhancedCurrentHue", "", "uint16")); VerifyOrReturn(CheckConstraintMinValue("enhancedCurrentHue", [value unsignedShortValue], 0U)); VerifyOrReturn(CheckConstraintMaxValue("enhancedCurrentHue", [value unsignedShortValue], 65535U)); @@ -15703,197 +13234,192 @@ class Test_TC_CC_8_1 : public TestCommandBridge { err = TestCheckOnOffAttributeValueIsTrueAfterOnCommand_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Move hue up command\n"); + ChipLogProgress(chipTool, " ***** Test Step 3 : TH sends MoveHue command to DUT\n"); if (ShouldSkip("CC.S.C01.Rsp")) { NextTest(); return; } - err = TestMoveHueUpCommand_3(); + err = TestThSendsMoveHueCommandToDut_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Reads CurrentHue attribute from DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 4 : TH reads CurrentHue attribute from DUT\n"); if (ShouldSkip("CC.S.A0000")) { NextTest(); return; } - err = TestReadsCurrentHueAttributeFromDut_4(); + err = TestThReadsCurrentHueAttributeFromDut_4(); break; case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Stop Move Step command\n"); + ChipLogProgress(chipTool, " ***** Test Step 5 : TH sends StopMoveStep command to DUT\n"); if (ShouldSkip("CC.S.C47.Rsp")) { NextTest(); return; } - err = TestStopMoveStepCommand_5(); + err = TestThSendsStopMoveStepCommandToDut_5(); break; case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : Reads CurrentHue attribute from DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 6 : TH reads CurrentHue attribute from DUT\n"); if (ShouldSkip("CC.S.A0000")) { NextTest(); return; } - err = TestReadsCurrentHueAttributeFromDut_6(); + err = TestThReadsCurrentHueAttributeFromDut_6(); break; case 7: ChipLogProgress(chipTool, " ***** Test Step 7 : Wait 100ms\n"); err = TestWait100ms_7(); break; case 8: - ChipLogProgress( - chipTool, " ***** Test Step 8 : Check current hue attribute value matched the value sent by the last attribute\n"); + ChipLogProgress(chipTool, " ***** Test Step 8 : TH reads CurrentHue attribute from DUT\n"); if (ShouldSkip("CC.S.A0000")) { NextTest(); return; } - err = TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastAttribute_8(); + err = TestThReadsCurrentHueAttributeFromDut_8(); break; case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Move saturation up command\n"); + ChipLogProgress(chipTool, " ***** Test Step 9 : TH sends MoveSaturation command to DUT\n"); if (ShouldSkip("CC.S.C04.Rsp")) { NextTest(); return; } - err = TestMoveSaturationUpCommand_9(); + err = TestThSendsMoveSaturationCommandToDut_9(); break; case 10: - ChipLogProgress( - chipTool, " ***** Test Step 10 : Check Saturation attribute value matched the value sent by the last command\n"); + ChipLogProgress(chipTool, " ***** Test Step 10 : TH reads CurrentSaturation attribute from DUT\n"); if (ShouldSkip("CC.S.A0001")) { NextTest(); return; } - err = TestCheckSaturationAttributeValueMatchedTheValueSentByTheLastCommand_10(); + err = TestThReadsCurrentSaturationAttributeFromDut_10(); break; case 11: - ChipLogProgress(chipTool, " ***** Test Step 11 : Stop Move Step command\n"); + ChipLogProgress(chipTool, " ***** Test Step 11 : TH sends StopMoveStep command to DUT\n"); if (ShouldSkip("CC.S.C47.Rsp")) { NextTest(); return; } - err = TestStopMoveStepCommand_11(); + err = TestThSendsStopMoveStepCommandToDut_11(); break; case 12: - ChipLogProgress(chipTool, " ***** Test Step 12 : Reads CurrentSaturation attribute from DUT.\n"); + ChipLogProgress(chipTool, " ***** Test Step 12 : TH reads CurrentSaturation attribute from DUT\n"); if (ShouldSkip("CC.S.A0001")) { NextTest(); return; } - err = TestReadsCurrentSaturationAttributeFromDut_12(); + err = TestThReadsCurrentSaturationAttributeFromDut_12(); break; case 13: ChipLogProgress(chipTool, " ***** Test Step 13 : Wait 100ms\n"); err = TestWait100ms_13(); break; case 14: - ChipLogProgress( - chipTool, " ***** Test Step 14 : Check Saturation attribute value matched the value sent by the last attribute\n"); + ChipLogProgress(chipTool, " ***** Test Step 14 : TH reads CurrentSaturation attribute from DUT\n"); if (ShouldSkip("CC.S.A0001")) { NextTest(); return; } - err = TestCheckSaturationAttributeValueMatchedTheValueSentByTheLastAttribute_14(); + err = TestThReadsCurrentSaturationAttributeFromDut_14(); break; case 15: - ChipLogProgress(chipTool, " ***** Test Step 15 : Move Color command\n"); + ChipLogProgress(chipTool, " ***** Test Step 15 : TH sends MoveColor command to DUT\n"); if (ShouldSkip("CC.S.C08.Rsp")) { NextTest(); return; } - err = TestMoveColorCommand_15(); + err = TestThSendsMoveColorCommandToDut_15(); break; case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : Reads CurrentX attribute from DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 16 : TH reads CurrentX attribute from DUT\n"); if (ShouldSkip("CC.S.A0003")) { NextTest(); return; } - err = TestReadsCurrentXAttributeFromDut_16(); + err = TestThReadsCurrentXAttributeFromDut_16(); break; case 17: - ChipLogProgress(chipTool, " ***** Test Step 17 : Reads CurrentY attribute from DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 17 : TH reads CurrentY attribute from DUT\n"); if (ShouldSkip("CC.S.A0004")) { NextTest(); return; } - err = TestReadsCurrentYAttributeFromDut_17(); + err = TestThReadsCurrentYAttributeFromDut_17(); break; case 18: - ChipLogProgress(chipTool, " ***** Test Step 18 : Stop Move Step command\n"); + ChipLogProgress(chipTool, " ***** Test Step 18 : TH sends StopMoveStep command to DUT\n"); if (ShouldSkip("CC.S.C47.Rsp")) { NextTest(); return; } - err = TestStopMoveStepCommand_18(); + err = TestThSendsStopMoveStepCommandToDut_18(); break; case 19: - ChipLogProgress(chipTool, " ***** Test Step 19 : Reads CurrentX attribute from DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 19 : TH reads CurrentX attribute from DUT\n"); if (ShouldSkip("CC.S.A0003")) { NextTest(); return; } - err = TestReadsCurrentXAttributeFromDut_19(); + err = TestThReadsCurrentXAttributeFromDut_19(); break; case 20: - ChipLogProgress(chipTool, " ***** Test Step 20 : Reads CurrentY attribute from DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 20 : TH reads CurrentY attribute from DUT\n"); if (ShouldSkip("CC.S.A0004")) { NextTest(); return; } - err = TestReadsCurrentYAttributeFromDut_20(); + err = TestThReadsCurrentYAttributeFromDut_20(); break; case 21: ChipLogProgress(chipTool, " ***** Test Step 21 : Wait 100ms\n"); err = TestWait100ms_21(); break; case 22: - ChipLogProgress( - chipTool, " ***** Test Step 22 : Check current x attribute value matched the value sent by the last attribute\n"); + ChipLogProgress(chipTool, " ***** Test Step 22 : TH reads CurrentY attribute from DUT\n"); if (ShouldSkip("CC.S.A0003")) { NextTest(); return; } - err = TestCheckCurrentXAttributeValueMatchedTheValueSentByTheLastAttribute_22(); + err = TestThReadsCurrentYAttributeFromDut_22(); break; case 23: - ChipLogProgress( - chipTool, " ***** Test Step 23 : Check current y attribute value matched the value sent by the last attribute\n"); + ChipLogProgress(chipTool, " ***** Test Step 23 : TH reads CurrentY attribute from DUT\n"); if (ShouldSkip("CC.S.A0004")) { NextTest(); return; } - err = TestCheckCurrentYAttributeValueMatchedTheValueSentByTheLastAttribute_23(); + err = TestThReadsCurrentYAttributeFromDut_23(); break; case 24: - ChipLogProgress(chipTool, " ***** Test Step 24 : Move up color temperature command\n"); + ChipLogProgress(chipTool, " ***** Test Step 24 : TH sends MoveColorTemperature command to DUT\n"); if (ShouldSkip("CC.S.C4B.Rsp")) { NextTest(); return; } - err = TestMoveUpColorTemperatureCommand_24(); + err = TestThSendsMoveColorTemperatureCommandToDut_24(); break; case 25: - ChipLogProgress(chipTool, " ***** Test Step 25 : Reads current color temprature from DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 25 : TH reads ColorTemperatureMireds attribute from DUT\n"); if (ShouldSkip("CC.S.A0007")) { NextTest(); return; } - err = TestReadsCurrentColorTempratureFromDut_25(); + err = TestThReadsColorTemperatureMiredsAttributeFromDut_25(); break; case 26: - ChipLogProgress(chipTool, " ***** Test Step 26 : Stop Move Step command\n"); + ChipLogProgress(chipTool, " ***** Test Step 26 : TH sends StopMoveStep command to DUT\n"); if (ShouldSkip("CC.S.C47.Rsp")) { NextTest(); return; } - err = TestStopMoveStepCommand_26(); + err = TestThSendsStopMoveStepCommandToDut_26(); break; case 27: - ChipLogProgress(chipTool, " ***** Test Step 27 : Reads current color temprature from DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 27 : TH reads ColorTemperatureMireds attribute from DUT\n"); if (ShouldSkip("CC.S.A0007")) { NextTest(); return; } - err = TestReadsCurrentColorTempratureFromDut_27(); + err = TestThReadsColorTemperatureMiredsAttributeFromDut_27(); break; case 28: ChipLogProgress(chipTool, " ***** Test Step 28 : Wait 100ms\n"); @@ -15909,49 +13435,48 @@ class Test_TC_CC_8_1 : public TestCommandBridge { err = TestReadsCurrentColorAttributeValueMatchedTheValueSentByTheLastAttribute_29(); break; case 30: - ChipLogProgress(chipTool, " ***** Test Step 30 : Enhanced Move Hue Up command\n"); + ChipLogProgress(chipTool, " ***** Test Step 30 : TH sends EnhancedMoveHue command to DUT.\n"); if (ShouldSkip("CC.S.C41.Rsp")) { NextTest(); return; } - err = TestEnhancedMoveHueUpCommand_30(); + err = TestThSendsEnhancedMoveHueCommandToDut_30(); break; case 31: - ChipLogProgress(chipTool, " ***** Test Step 31 : Reads EnhancedCurrentHue attribute value from DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 31 : TH reads EnhancedCurrentHue attribute from DUT\n"); if (ShouldSkip("CC.S.A4000")) { NextTest(); return; } - err = TestReadsEnhancedCurrentHueAttributeValueFromDut_31(); + err = TestThReadsEnhancedCurrentHueAttributeFromDut_31(); break; case 32: - ChipLogProgress(chipTool, " ***** Test Step 32 : Stop Move Step command\n"); + ChipLogProgress(chipTool, " ***** Test Step 32 : TH sends StopMoveStep command to DUT\n"); if (ShouldSkip("CC.S.C47.Rsp")) { NextTest(); return; } - err = TestStopMoveStepCommand_32(); + err = TestThSendsStopMoveStepCommandToDut_32(); break; case 33: - ChipLogProgress(chipTool, " ***** Test Step 33 : Reads EnhancedCurrentHue attribute value from DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 33 : TH reads EnhancedCurrentHue attribute from DUT\n"); if (ShouldSkip("CC.S.A4000")) { NextTest(); return; } - err = TestReadsEnhancedCurrentHueAttributeValueFromDut_33(); + err = TestThReadsEnhancedCurrentHueAttributeFromDut_33(); break; case 34: ChipLogProgress(chipTool, " ***** Test Step 34 : Wait 100ms\n"); err = TestWait100ms_34(); break; case 35: - ChipLogProgress(chipTool, - " ***** Test Step 35 : Check EnhancedCurrentHue attribute value matched the value sent by the last attribute\n"); + ChipLogProgress(chipTool, " ***** Test Step 35 : TH reads EnhancedCurrentHue attribute from DUT\n"); if (ShouldSkip("CC.S.A4000")) { NextTest(); return; } - err = TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastAttribute_35(); + err = TestThReadsEnhancedCurrentHueAttributeFromDut_35(); break; case 36: ChipLogProgress(chipTool, " ***** Test Step 36 : Turn off light that we turned on\n"); @@ -16152,7 +13677,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestMoveHueUpCommand_3() + CHIP_ERROR TestThSendsMoveHueCommandToDut_3() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -16167,7 +13692,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster moveHueWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Move hue up command Error: %@", err); + NSLog(@"TH sends MoveHue command to DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -16177,7 +13702,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsCurrentHueAttributeFromDut_4() + CHIP_ERROR TestThReadsCurrentHueAttributeFromDut_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -16186,7 +13711,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads CurrentHue attribute from DUT Error: %@", err); + NSLog(@"TH reads CurrentHue attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -16200,7 +13725,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStopMoveStepCommand_5() + CHIP_ERROR TestThSendsStopMoveStepCommandToDut_5() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -16213,7 +13738,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster stopMoveStepWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Stop Move Step command Error: %@", err); + NSLog(@"TH sends StopMoveStep command to DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -16222,8 +13747,9 @@ class Test_TC_CC_8_1 : public TestCommandBridge { return CHIP_NO_ERROR; } + NSNumber * _Nonnull CurrentHueValue; - CHIP_ERROR TestReadsCurrentHueAttributeFromDut_6() + CHIP_ERROR TestThReadsCurrentHueAttributeFromDut_6() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -16232,13 +13758,16 @@ class Test_TC_CC_8_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads CurrentHue attribute from DUT Error: %@", err); + NSLog(@"TH reads CurrentHue attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("currentHue", "", "uint8")); VerifyOrReturn(CheckConstraintMinValue("currentHue", [value unsignedCharValue], 0U)); VerifyOrReturn(CheckConstraintMaxValue("currentHue", [value unsignedCharValue], 254U)); + { + CurrentHueValue = value; + } NextTest(); }]; @@ -16253,7 +13782,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckCurrentHueAttributeValueMatchedTheValueSentByTheLastAttribute_8() + CHIP_ERROR TestThReadsCurrentHueAttributeFromDut_8() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -16262,10 +13791,15 @@ class Test_TC_CC_8_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current hue attribute value matched the value sent by the last attribute Error: %@", err); + NSLog(@"TH reads CurrentHue attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + { + id actualValue = value; + VerifyOrReturn(CheckValue("CurrentHue", actualValue, CurrentHueValue)); + } + VerifyOrReturn(CheckConstraintType("currentHue", "", "uint8")); VerifyOrReturn(CheckConstraintMinValue("currentHue", [value unsignedCharValue], 0U)); VerifyOrReturn(CheckConstraintMaxValue("currentHue", [value unsignedCharValue], 254U)); @@ -16276,7 +13810,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestMoveSaturationUpCommand_9() + CHIP_ERROR TestThSendsMoveSaturationCommandToDut_9() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -16291,7 +13825,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster moveSaturationWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Move saturation up command Error: %@", err); + NSLog(@"TH sends MoveSaturation command to DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -16301,7 +13835,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckSaturationAttributeValueMatchedTheValueSentByTheLastCommand_10() + CHIP_ERROR TestThReadsCurrentSaturationAttributeFromDut_10() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -16310,7 +13844,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check Saturation attribute value matched the value sent by the last command Error: %@", err); + NSLog(@"TH reads CurrentSaturation attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -16324,7 +13858,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStopMoveStepCommand_11() + CHIP_ERROR TestThSendsStopMoveStepCommandToDut_11() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -16337,7 +13871,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster stopMoveStepWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Stop Move Step command Error: %@", err); + NSLog(@"TH sends StopMoveStep command to DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -16346,8 +13880,9 @@ class Test_TC_CC_8_1 : public TestCommandBridge { return CHIP_NO_ERROR; } + NSNumber * _Nonnull CurrentSaturationValue; - CHIP_ERROR TestReadsCurrentSaturationAttributeFromDut_12() + CHIP_ERROR TestThReadsCurrentSaturationAttributeFromDut_12() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -16356,13 +13891,16 @@ class Test_TC_CC_8_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads CurrentSaturation attribute from DUT. Error: %@", err); + NSLog(@"TH reads CurrentSaturation attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("currentSaturation", "", "uint8")); VerifyOrReturn(CheckConstraintMinValue("currentSaturation", [value unsignedCharValue], 0U)); VerifyOrReturn(CheckConstraintMaxValue("currentSaturation", [value unsignedCharValue], 254U)); + { + CurrentSaturationValue = value; + } NextTest(); }]; @@ -16377,7 +13915,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckSaturationAttributeValueMatchedTheValueSentByTheLastAttribute_14() + CHIP_ERROR TestThReadsCurrentSaturationAttributeFromDut_14() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -16386,10 +13924,15 @@ class Test_TC_CC_8_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check Saturation attribute value matched the value sent by the last attribute Error: %@", err); + NSLog(@"TH reads CurrentSaturation attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + { + id actualValue = value; + VerifyOrReturn(CheckValue("CurrentSaturation", actualValue, CurrentSaturationValue)); + } + VerifyOrReturn(CheckConstraintType("currentSaturation", "", "uint8")); VerifyOrReturn(CheckConstraintMinValue("currentSaturation", [value unsignedCharValue], 0U)); VerifyOrReturn(CheckConstraintMaxValue("currentSaturation", [value unsignedCharValue], 254U)); @@ -16400,7 +13943,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestMoveColorCommand_15() + CHIP_ERROR TestThSendsMoveColorCommandToDut_15() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -16415,7 +13958,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster moveColorWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Move Color command Error: %@", err); + NSLog(@"TH sends MoveColor command to DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -16425,7 +13968,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsCurrentXAttributeFromDut_16() + CHIP_ERROR TestThReadsCurrentXAttributeFromDut_16() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -16434,7 +13977,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentXWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads CurrentX attribute from DUT Error: %@", err); + NSLog(@"TH reads CurrentX attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -16448,7 +13991,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsCurrentYAttributeFromDut_17() + CHIP_ERROR TestThReadsCurrentYAttributeFromDut_17() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -16457,7 +14000,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentYWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads CurrentY attribute from DUT Error: %@", err); + NSLog(@"TH reads CurrentY attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -16471,7 +14014,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStopMoveStepCommand_18() + CHIP_ERROR TestThSendsStopMoveStepCommandToDut_18() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -16484,7 +14027,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster stopMoveStepWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Stop Move Step command Error: %@", err); + NSLog(@"TH sends StopMoveStep command to DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -16493,8 +14036,9 @@ class Test_TC_CC_8_1 : public TestCommandBridge { return CHIP_NO_ERROR; } + NSNumber * _Nonnull CurrentXValue; - CHIP_ERROR TestReadsCurrentXAttributeFromDut_19() + CHIP_ERROR TestThReadsCurrentXAttributeFromDut_19() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -16503,21 +14047,25 @@ class Test_TC_CC_8_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentXWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads CurrentX attribute from DUT Error: %@", err); + NSLog(@"TH reads CurrentX attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("currentX", "", "uint16")); VerifyOrReturn(CheckConstraintMinValue("currentX", [value unsignedShortValue], 0U)); VerifyOrReturn(CheckConstraintMaxValue("currentX", [value unsignedShortValue], 65279U)); + { + CurrentXValue = value; + } NextTest(); }]; return CHIP_NO_ERROR; } + NSNumber * _Nonnull CurrentYValue; - CHIP_ERROR TestReadsCurrentYAttributeFromDut_20() + CHIP_ERROR TestThReadsCurrentYAttributeFromDut_20() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -16526,13 +14074,16 @@ class Test_TC_CC_8_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentYWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads CurrentY attribute from DUT Error: %@", err); + NSLog(@"TH reads CurrentY attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("currentY", "", "uint16")); VerifyOrReturn(CheckConstraintMinValue("currentY", [value unsignedShortValue], 0U)); VerifyOrReturn(CheckConstraintMaxValue("currentY", [value unsignedShortValue], 65279U)); + { + CurrentYValue = value; + } NextTest(); }]; @@ -16547,7 +14098,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckCurrentXAttributeValueMatchedTheValueSentByTheLastAttribute_22() + CHIP_ERROR TestThReadsCurrentYAttributeFromDut_22() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -16556,10 +14107,15 @@ class Test_TC_CC_8_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentXWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current x attribute value matched the value sent by the last attribute Error: %@", err); + NSLog(@"TH reads CurrentY attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + { + id actualValue = value; + VerifyOrReturn(CheckValue("CurrentX", actualValue, CurrentXValue)); + } + VerifyOrReturn(CheckConstraintType("currentX", "", "uint16")); VerifyOrReturn(CheckConstraintMinValue("currentX", [value unsignedShortValue], 0U)); VerifyOrReturn(CheckConstraintMaxValue("currentX", [value unsignedShortValue], 65279U)); @@ -16570,7 +14126,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckCurrentYAttributeValueMatchedTheValueSentByTheLastAttribute_23() + CHIP_ERROR TestThReadsCurrentYAttributeFromDut_23() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -16579,10 +14135,15 @@ class Test_TC_CC_8_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentYWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check current y attribute value matched the value sent by the last attribute Error: %@", err); + NSLog(@"TH reads CurrentY attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + { + id actualValue = value; + VerifyOrReturn(CheckValue("CurrentY", actualValue, CurrentYValue)); + } + VerifyOrReturn(CheckConstraintType("currentY", "", "uint16")); VerifyOrReturn(CheckConstraintMinValue("currentY", [value unsignedShortValue], 0U)); VerifyOrReturn(CheckConstraintMaxValue("currentY", [value unsignedShortValue], 65279U)); @@ -16593,7 +14154,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestMoveUpColorTemperatureCommand_24() + CHIP_ERROR TestThSendsMoveColorTemperatureCommandToDut_24() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -16610,7 +14171,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster moveColorTemperatureWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Move up color temperature command Error: %@", err); + NSLog(@"TH sends MoveColorTemperature command to DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -16620,7 +14181,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsCurrentColorTempratureFromDut_25() + CHIP_ERROR TestThReadsColorTemperatureMiredsAttributeFromDut_25() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -16629,7 +14190,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads current color temprature from DUT Error: %@", err); + NSLog(@"TH reads ColorTemperatureMireds attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -16643,7 +14204,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStopMoveStepCommand_26() + CHIP_ERROR TestThSendsStopMoveStepCommandToDut_26() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -16656,7 +14217,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster stopMoveStepWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Stop Move Step command Error: %@", err); + NSLog(@"TH sends StopMoveStep command to DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -16665,8 +14226,9 @@ class Test_TC_CC_8_1 : public TestCommandBridge { return CHIP_NO_ERROR; } + NSNumber * _Nonnull ColorTemperatureMiredsValue; - CHIP_ERROR TestReadsCurrentColorTempratureFromDut_27() + CHIP_ERROR TestThReadsColorTemperatureMiredsAttributeFromDut_27() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -16675,13 +14237,16 @@ class Test_TC_CC_8_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads current color temprature from DUT Error: %@", err); + NSLog(@"TH reads ColorTemperatureMireds attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); + { + ColorTemperatureMiredsValue = value; + } NextTest(); }]; @@ -16709,6 +14274,11 @@ class Test_TC_CC_8_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + { + id actualValue = value; + VerifyOrReturn(CheckValue("ColorTemperature", actualValue, ColorTemperatureMiredsValue)); + } + VerifyOrReturn(CheckConstraintType("colorTemperature", "", "uint16")); VerifyOrReturn(CheckConstraintMinValue("colorTemperature", [value unsignedShortValue], 0U)); VerifyOrReturn(CheckConstraintMaxValue("colorTemperature", [value unsignedShortValue], 65279U)); @@ -16719,7 +14289,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestEnhancedMoveHueUpCommand_30() + CHIP_ERROR TestThSendsEnhancedMoveHueCommandToDut_30() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -16734,7 +14304,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster enhancedMoveHueWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Enhanced Move Hue Up command Error: %@", err); + NSLog(@"TH sends EnhancedMoveHue command to DUT. Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -16744,7 +14314,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsEnhancedCurrentHueAttributeValueFromDut_31() + CHIP_ERROR TestThReadsEnhancedCurrentHueAttributeFromDut_31() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -16753,7 +14323,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeEnhancedCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads EnhancedCurrentHue attribute value from DUT Error: %@", err); + NSLog(@"TH reads EnhancedCurrentHue attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -16767,7 +14337,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStopMoveStepCommand_32() + CHIP_ERROR TestThSendsStopMoveStepCommandToDut_32() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -16780,7 +14350,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { params.optionsOverride = [NSNumber numberWithUnsignedChar:0U]; [cluster stopMoveStepWithParams:params completionHandler:^(NSError * _Nullable err) { - NSLog(@"Stop Move Step command Error: %@", err); + NSLog(@"TH sends StopMoveStep command to DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -16789,8 +14359,9 @@ class Test_TC_CC_8_1 : public TestCommandBridge { return CHIP_NO_ERROR; } + NSNumber * _Nonnull EnhancedCurrentHueValue; - CHIP_ERROR TestReadsEnhancedCurrentHueAttributeValueFromDut_33() + CHIP_ERROR TestThReadsEnhancedCurrentHueAttributeFromDut_33() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -16799,13 +14370,16 @@ class Test_TC_CC_8_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeEnhancedCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads EnhancedCurrentHue attribute value from DUT Error: %@", err); + NSLog(@"TH reads EnhancedCurrentHue attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("enhancedCurrentHue", "", "uint16")); VerifyOrReturn(CheckConstraintMinValue("enhancedCurrentHue", [value unsignedShortValue], 0U)); VerifyOrReturn(CheckConstraintMaxValue("enhancedCurrentHue", [value unsignedShortValue], 65535U)); + { + EnhancedCurrentHueValue = value; + } NextTest(); }]; @@ -16820,7 +14394,7 @@ class Test_TC_CC_8_1 : public TestCommandBridge { return WaitForMs("alpha", value); } - CHIP_ERROR TestCheckEnhancedCurrentHueAttributeValueMatchedTheValueSentByTheLastAttribute_35() + CHIP_ERROR TestThReadsEnhancedCurrentHueAttributeFromDut_35() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -16829,10 +14403,15 @@ class Test_TC_CC_8_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeEnhancedCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Check EnhancedCurrentHue attribute value matched the value sent by the last attribute Error: %@", err); + NSLog(@"TH reads EnhancedCurrentHue attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + { + id actualValue = value; + VerifyOrReturn(CheckValue("EnhancedCurrentHue", actualValue, EnhancedCurrentHueValue)); + } + VerifyOrReturn(CheckConstraintType("enhancedCurrentHue", "", "uint16")); VerifyOrReturn(CheckConstraintMinValue("enhancedCurrentHue", [value unsignedShortValue], 0U)); VerifyOrReturn(CheckConstraintMaxValue("enhancedCurrentHue", [value unsignedShortValue], 65535U)); @@ -22043,12 +19622,12 @@ class Test_TC_LVL_1_1 : public TestCommandBridge { err = TestReadTheOptonalAttributeMinLevelInAttributeList_6(); break; case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : Read the optonal attribute(MinLevel) in AttributeList\n"); + ChipLogProgress(chipTool, " ***** Test Step 7 : Read the optonal attribute(MaxLevel) in AttributeList\n"); if (ShouldSkip("LVL.S.A0003")) { NextTest(); return; } - err = TestReadTheOptonalAttributeMinLevelInAttributeList_7(); + err = TestReadTheOptonalAttributeMaxLevelInAttributeList_7(); break; case 8: ChipLogProgress(chipTool, " ***** Test Step 8 : Read the optonal attribute(OnOffTransitionTime) in AttributeList\n"); @@ -22339,7 +19918,7 @@ class Test_TC_LVL_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptonalAttributeMinLevelInAttributeList_7() + CHIP_ERROR TestReadTheOptonalAttributeMaxLevelInAttributeList_7() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -22348,7 +19927,7 @@ class Test_TC_LVL_1_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeAttributeListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the optonal attribute(MinLevel) in AttributeList Error: %@", err); + NSLog(@"Read the optonal attribute(MaxLevel) in AttributeList Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -22586,188 +20165,164 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { err = TestWaitForTheCommissionedDeviceToBeRetrieved_0(); break; case 1: - ChipLogProgress(chipTool, " ***** Test Step 1 : Precondition: Reset level to 254\n"); - if (ShouldSkip("PICS_SDK_CI_ONLY")) { - NextTest(); - return; - } - err = TestPreconditionResetLevelTo254_1(); - break; - case 2: - ChipLogProgress(chipTool, " ***** Test Step 2 : Wait 100ms\n"); - if (ShouldSkip("PICS_SDK_CI_ONLY")) { - NextTest(); - return; - } - err = TestWait100ms_2(); - break; - case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Precondition: Reads the CurrentLevel attribute\n"); + ChipLogProgress(chipTool, " ***** Test Step 1 : Reads the CurrentLevel attribute\n"); if (ShouldSkip("LVL.S.A0000")) { NextTest(); return; } - err = TestPreconditionReadsTheCurrentLevelAttribute_3(); + err = TestReadsTheCurrentLevelAttribute_1(); break; - case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Reads the CurrentLevel attribute\n"); - if (ShouldSkip("LVL.S.A0000")) { - NextTest(); - return; - } - err = TestReadsTheCurrentLevelAttribute_4(); - break; - case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Reads the RemainingTime attribute\n"); + case 2: + ChipLogProgress(chipTool, " ***** Test Step 2 : Reads the RemainingTime attribute\n"); if (ShouldSkip("LVL.S.A0001")) { NextTest(); return; } - err = TestReadsTheRemainingTimeAttribute_5(); + err = TestReadsTheRemainingTimeAttribute_2(); break; - case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : Reads the MinLevel attribute\n"); + case 3: + ChipLogProgress(chipTool, " ***** Test Step 3 : Reads the MinLevel attribute\n"); if (ShouldSkip("LVL.S.A0002 && LVL.S.F01")) { NextTest(); return; } - err = TestReadsTheMinLevelAttribute_6(); + err = TestReadsTheMinLevelAttribute_3(); break; - case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : Reads the MinLevel attribute\n"); + case 4: + ChipLogProgress(chipTool, " ***** Test Step 4 : Reads the MinLevel attribute\n"); if (ShouldSkip("LVL.S.A0002 && !LVL.S.F01")) { NextTest(); return; } - err = TestReadsTheMinLevelAttribute_7(); + err = TestReadsTheMinLevelAttribute_4(); break; - case 8: - ChipLogProgress(chipTool, " ***** Test Step 8 : Reads the MaxLevel attribute\n"); + case 5: + ChipLogProgress(chipTool, " ***** Test Step 5 : Reads the MaxLevel attribute\n"); if (ShouldSkip("LVL.S.A0003 && LVL.S.F01")) { NextTest(); return; } - err = TestReadsTheMaxLevelAttribute_8(); + err = TestReadsTheMaxLevelAttribute_5(); break; - case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Reads the MaxLevel attribute\n"); + case 6: + ChipLogProgress(chipTool, " ***** Test Step 6 : Reads the MaxLevel attribute\n"); if (ShouldSkip("LVL.S.A0003 && !LVL.S.F01")) { NextTest(); return; } - err = TestReadsTheMaxLevelAttribute_9(); + err = TestReadsTheMaxLevelAttribute_6(); break; - case 10: - ChipLogProgress(chipTool, " ***** Test Step 10 : Step 4b & 4C Reads the CurrentLevel attribute\n"); + case 7: + ChipLogProgress(chipTool, " ***** Test Step 7 : Step 4b & 4C Reads the CurrentLevel attribute\n"); if (ShouldSkip("LVL.S.F01 && LVL.S.A0002 && LVL.S.A0003")) { NextTest(); return; } - err = TestStep4b4cReadsTheCurrentLevelAttribute_10(); + err = TestStep4b4cReadsTheCurrentLevelAttribute_7(); break; - case 11: - ChipLogProgress(chipTool, " ***** Test Step 11 : Step 4b & 4C Reads the CurrentLevel attribute\n"); + case 8: + ChipLogProgress(chipTool, " ***** Test Step 8 : Step 4b & 4C Reads the CurrentLevel attribute\n"); if (ShouldSkip("LVL.S.A0002 && LVL.S.A0003 && !LVL.S.F01")) { NextTest(); return; } - err = TestStep4b4cReadsTheCurrentLevelAttribute_11(); + err = TestStep4b4cReadsTheCurrentLevelAttribute_8(); break; - case 12: - ChipLogProgress(chipTool, " ***** Test Step 12 : Reads the CurrentFrequency attribute\n"); + case 9: + ChipLogProgress(chipTool, " ***** Test Step 9 : Reads the CurrentFrequency attribute\n"); if (ShouldSkip("LVL.S.A0004")) { NextTest(); return; } - err = TestReadsTheCurrentFrequencyAttribute_12(); + err = TestReadsTheCurrentFrequencyAttribute_9(); break; - case 13: - ChipLogProgress(chipTool, " ***** Test Step 13 : Reads the MinFrequency attribute\n"); + case 10: + ChipLogProgress(chipTool, " ***** Test Step 10 : Reads the MinFrequency attribute\n"); if (ShouldSkip("LVL.S.A0005")) { NextTest(); return; } - err = TestReadsTheMinFrequencyAttribute_13(); + err = TestReadsTheMinFrequencyAttribute_10(); break; - case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : Reads the MaxFrequency attribute\n"); + case 11: + ChipLogProgress(chipTool, " ***** Test Step 11 : Reads the MaxFrequency attribute\n"); if (ShouldSkip("LVL.S.A0006")) { NextTest(); return; } - err = TestReadsTheMaxFrequencyAttribute_14(); + err = TestReadsTheMaxFrequencyAttribute_11(); break; - case 15: - ChipLogProgress(chipTool, " ***** Test Step 15 : Step 7b & 7C Reads the CurrentFrequency attribute\n"); + case 12: + ChipLogProgress(chipTool, " ***** Test Step 12 : Step 7b & 7C Reads the CurrentFrequency attribute\n"); if (ShouldSkip("LVL.S.A0004 && LVL.S.A0005 && LVL.S.A0006")) { NextTest(); return; } - err = TestStep7b7cReadsTheCurrentFrequencyAttribute_15(); + err = TestStep7b7cReadsTheCurrentFrequencyAttribute_12(); break; - case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : Reads the OnOffTransitionTime attribute\n"); + case 13: + ChipLogProgress(chipTool, " ***** Test Step 13 : Reads the OnOffTransitionTime attribute\n"); if (ShouldSkip("LVL.S.A0010")) { NextTest(); return; } - err = TestReadsTheOnOffTransitionTimeAttribute_16(); + err = TestReadsTheOnOffTransitionTimeAttribute_13(); break; - case 17: - ChipLogProgress(chipTool, " ***** Test Step 17 : Reads the OnLevel attribute \n"); + case 14: + ChipLogProgress(chipTool, " ***** Test Step 14 : Reads the OnLevel attribute \n"); if (ShouldSkip("LVL.S.F01 && LVL.S.A0011")) { NextTest(); return; } - err = TestReadsTheOnLevelAttribute_17(); + err = TestReadsTheOnLevelAttribute_14(); break; - case 18: - ChipLogProgress(chipTool, " ***** Test Step 18 : Reads the OnLevel attribute \n"); + case 15: + ChipLogProgress(chipTool, " ***** Test Step 15 : Reads the OnLevel attribute \n"); if (ShouldSkip("LVL.S.A0011 && !LVL.S.F01")) { NextTest(); return; } - err = TestReadsTheOnLevelAttribute_18(); + err = TestReadsTheOnLevelAttribute_15(); break; - case 19: - ChipLogProgress(chipTool, " ***** Test Step 19 : Reads the OnTransitionTime attribute \n"); + case 16: + ChipLogProgress(chipTool, " ***** Test Step 16 : Reads the OnTransitionTime attribute \n"); if (ShouldSkip("LVL.S.A0012")) { NextTest(); return; } - err = TestReadsTheOnTransitionTimeAttribute_19(); + err = TestReadsTheOnTransitionTimeAttribute_16(); break; - case 20: - ChipLogProgress(chipTool, " ***** Test Step 20 : Reads the OffTransitionTime attribute \n"); + case 17: + ChipLogProgress(chipTool, " ***** Test Step 17 : Reads the OffTransitionTime attribute \n"); if (ShouldSkip("LVL.S.A0013")) { NextTest(); return; } - err = TestReadsTheOffTransitionTimeAttribute_20(); + err = TestReadsTheOffTransitionTimeAttribute_17(); break; - case 21: - ChipLogProgress(chipTool, " ***** Test Step 21 : Reads the DefaultMoveRate attribute \n"); + case 18: + ChipLogProgress(chipTool, " ***** Test Step 18 : Reads the DefaultMoveRate attribute \n"); if (ShouldSkip("LVL.S.A0014")) { NextTest(); return; } - err = TestReadsTheDefaultMoveRateAttribute_21(); + err = TestReadsTheDefaultMoveRateAttribute_18(); break; - case 22: - ChipLogProgress(chipTool, " ***** Test Step 22 : Reads the Options attribute \n"); + case 19: + ChipLogProgress(chipTool, " ***** Test Step 19 : Reads the Options attribute \n"); if (ShouldSkip("LVL.S.A000f")) { NextTest(); return; } - err = TestReadsTheOptionsAttribute_22(); + err = TestReadsTheOptionsAttribute_19(); break; - case 23: - ChipLogProgress(chipTool, " ***** Test Step 23 : Reads the StartUpCurrentLevel attribute \n"); + case 20: + ChipLogProgress(chipTool, " ***** Test Step 20 : Reads the StartUpCurrentLevel attribute \n"); if (ShouldSkip("LVL.S.A4000")) { NextTest(); return; } - err = TestReadsTheStartUpCurrentLevelAttribute_23(); + err = TestReadsTheStartUpCurrentLevelAttribute_20(); break; } @@ -22843,15 +20398,6 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { case 20: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 21: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 22: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 23: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; } // Go on to the next test. @@ -22865,7 +20411,7 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 24; + const uint16_t mTestCount = 21; chip::Optional mNodeId; chip::Optional mCluster; @@ -22878,65 +20424,9 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; return WaitForCommissionee("alpha", value); } - - CHIP_ERROR TestPreconditionResetLevelTo254_1() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - __auto_type * params = [[MTRLevelControlClusterMoveToLevelParams alloc] init]; - params.level = [NSNumber numberWithUnsignedChar:254U]; - params.transitionTime = [NSNumber numberWithUnsignedShort:0U]; - params.optionMask = [NSNumber numberWithUnsignedChar:1U]; - params.optionOverride = [NSNumber numberWithUnsignedChar:1U]; - [cluster moveToLevelWithParams:params - completionHandler:^(NSError * _Nullable err) { - NSLog(@"Precondition: Reset level to 254 Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait100ms_2() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 100UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestPreconditionReadsTheCurrentLevelAttribute_3() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeCurrentLevelWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Precondition: Reads the CurrentLevel attribute Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("current level", actualValue, 254U)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } NSNumber * _Nonnull CurrentLevelValue; - CHIP_ERROR TestReadsTheCurrentLevelAttribute_4() + CHIP_ERROR TestReadsTheCurrentLevelAttribute_1() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -22962,7 +20452,7 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsTheRemainingTimeAttribute_5() + CHIP_ERROR TestReadsTheRemainingTimeAttribute_2() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -22986,7 +20476,7 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { } NSNumber * _Nonnull MinLevelValue; - CHIP_ERROR TestReadsTheMinLevelAttribute_6() + CHIP_ERROR TestReadsTheMinLevelAttribute_3() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -23014,9 +20504,9 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - NSNumber * _Nonnull MinLevelValue1; + NSNumber * _Nonnull MinLevelFeatureMapNotSupportedValue; - CHIP_ERROR TestReadsTheMinLevelAttribute_7() + CHIP_ERROR TestReadsTheMinLevelAttribute_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -23033,7 +20523,7 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { VerifyOrReturn(CheckConstraintMinValue("minLevel", [value unsignedCharValue], 0U)); VerifyOrReturn(CheckConstraintMaxValue("minLevel", [value unsignedCharValue], 255U)); { - MinLevelValue1 = value; + MinLevelFeatureMapNotSupportedValue = value; } NextTest(); @@ -23043,7 +20533,7 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { } NSNumber * _Nonnull MaxLevelValue; - CHIP_ERROR TestReadsTheMaxLevelAttribute_8() + CHIP_ERROR TestReadsTheMaxLevelAttribute_5() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -23072,9 +20562,9 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - NSNumber * _Nonnull MaxLevelValue1; + NSNumber * _Nonnull MaxLevelFeatureMapNotSupportedValue; - CHIP_ERROR TestReadsTheMaxLevelAttribute_9() + CHIP_ERROR TestReadsTheMaxLevelAttribute_6() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -23088,10 +20578,11 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("maxLevel", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("maxLevel", [value unsignedCharValue], MinLevelValue1)); + VerifyOrReturn( + CheckConstraintMinValue("maxLevel", [value unsignedCharValue], MinLevelFeatureMapNotSupportedValue)); VerifyOrReturn(CheckConstraintMaxValue("maxLevel", [value unsignedCharValue], 254U)); { - MaxLevelValue1 = value; + MaxLevelFeatureMapNotSupportedValue = value; } NextTest(); @@ -23100,7 +20591,7 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4b4cReadsTheCurrentLevelAttribute_10() + CHIP_ERROR TestStep4b4cReadsTheCurrentLevelAttribute_7() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -23123,7 +20614,7 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4b4cReadsTheCurrentLevelAttribute_11() + CHIP_ERROR TestStep4b4cReadsTheCurrentLevelAttribute_8() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -23137,8 +20628,10 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("currentLevel", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("currentLevel", [value unsignedCharValue], MinLevelValue1)); - VerifyOrReturn(CheckConstraintMaxValue("currentLevel", [value unsignedCharValue], MaxLevelValue1)); + VerifyOrReturn( + CheckConstraintMinValue("currentLevel", [value unsignedCharValue], MinLevelFeatureMapNotSupportedValue)); + VerifyOrReturn( + CheckConstraintMaxValue("currentLevel", [value unsignedCharValue], MaxLevelFeatureMapNotSupportedValue)); NextTest(); }]; @@ -23146,7 +20639,7 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsTheCurrentFrequencyAttribute_12() + CHIP_ERROR TestReadsTheCurrentFrequencyAttribute_9() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -23170,7 +20663,7 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { } NSNumber * _Nonnull MinFrequencyValue; - CHIP_ERROR TestReadsTheMinFrequencyAttribute_13() + CHIP_ERROR TestReadsTheMinFrequencyAttribute_10() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -23197,7 +20690,7 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { } NSNumber * _Nonnull MaxFrequencyValue; - CHIP_ERROR TestReadsTheMaxFrequencyAttribute_14() + CHIP_ERROR TestReadsTheMaxFrequencyAttribute_11() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -23223,7 +20716,7 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep7b7cReadsTheCurrentFrequencyAttribute_15() + CHIP_ERROR TestStep7b7cReadsTheCurrentFrequencyAttribute_12() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -23246,7 +20739,7 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsTheOnOffTransitionTimeAttribute_16() + CHIP_ERROR TestReadsTheOnOffTransitionTimeAttribute_13() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -23269,7 +20762,7 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsTheOnLevelAttribute_17() + CHIP_ERROR TestReadsTheOnLevelAttribute_14() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -23295,7 +20788,7 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsTheOnLevelAttribute_18() + CHIP_ERROR TestReadsTheOnLevelAttribute_15() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -23311,8 +20804,10 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { if (value != nil) { VerifyOrReturn(CheckConstraintType("onLevel", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("onLevel", [value unsignedCharValue], MinLevelValue1)); - VerifyOrReturn(CheckConstraintMaxValue("onLevel", [value unsignedCharValue], MaxLevelValue1)); + VerifyOrReturn( + CheckConstraintMinValue("onLevel", [value unsignedCharValue], MinLevelFeatureMapNotSupportedValue)); + VerifyOrReturn( + CheckConstraintMaxValue("onLevel", [value unsignedCharValue], MaxLevelFeatureMapNotSupportedValue)); } NextTest(); @@ -23321,7 +20816,7 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsTheOnTransitionTimeAttribute_19() + CHIP_ERROR TestReadsTheOnTransitionTimeAttribute_16() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -23347,7 +20842,7 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsTheOffTransitionTimeAttribute_20() + CHIP_ERROR TestReadsTheOffTransitionTimeAttribute_17() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -23373,7 +20868,7 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsTheDefaultMoveRateAttribute_21() + CHIP_ERROR TestReadsTheDefaultMoveRateAttribute_18() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -23399,7 +20894,7 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsTheOptionsAttribute_22() + CHIP_ERROR TestReadsTheOptionsAttribute_19() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -23424,7 +20919,7 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsTheStartUpCurrentLevelAttribute_23() + CHIP_ERROR TestReadsTheStartUpCurrentLevelAttribute_20() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -24444,32 +21939,20 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { err = TestReadsCurrentLevelAttributeFromDut_17(); break; case 18: - ChipLogProgress(chipTool, " ***** Test Step 18 : Reset level to 254\n"); - if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0010 && LVL.S.A0000")) { - NextTest(); - return; - } - err = TestResetLevelTo254_18(); - break; - case 19: - ChipLogProgress(chipTool, " ***** Test Step 19 : Wait 100ms\n"); - err = TestWait100ms_19(); - break; - case 20: - ChipLogProgress(chipTool, " ***** Test Step 20 : Precondition send Off Command\n"); + ChipLogProgress(chipTool, " ***** Test Step 18 : Precondition send Off Command\n"); if (ShouldSkip("OO.S.C00.Rsp")) { NextTest(); return; } - err = TestPreconditionSendOffCommand_20(); + err = TestPreconditionSendOffCommand_18(); break; - case 21: - ChipLogProgress(chipTool, " ***** Test Step 21 : Check on/off attribute value is false after off command\n"); + case 19: + ChipLogProgress(chipTool, " ***** Test Step 19 : Check on/off attribute value is false after off command\n"); if (ShouldSkip("OO.S.A0000")) { NextTest(); return; } - err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_21(); + err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_19(); break; } @@ -24542,12 +22025,6 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 20: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 21: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; } // Go on to the next test. @@ -24561,7 +22038,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 22; + const uint16_t mTestCount = 20; chip::Optional mNodeId; chip::Optional mCluster; @@ -24905,39 +22382,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestResetLevelTo254_18() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - __auto_type * params = [[MTRLevelControlClusterMoveToLevelParams alloc] init]; - params.level = [NSNumber numberWithUnsignedChar:254U]; - params.transitionTime = [NSNumber numberWithUnsignedShort:0U]; - params.optionMask = [NSNumber numberWithUnsignedChar:1U]; - params.optionOverride = [NSNumber numberWithUnsignedChar:1U]; - [cluster moveToLevelWithParams:params - completionHandler:^(NSError * _Nullable err) { - NSLog(@"Reset level to 254 Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait100ms_19() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 100UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestPreconditionSendOffCommand_20() + CHIP_ERROR TestPreconditionSendOffCommand_18() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -24954,7 +22399,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_21() + CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_19() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -25150,32 +22595,20 @@ class Test_TC_LVL_4_1 : public TestCommandBridge { err = TestPhysicallyVerifyThatTheDeviceMovesAtTheRateRecordedInStep3aAndCompletesMovingToItsMaximumLevel_17(); break; case 18: - ChipLogProgress(chipTool, " ***** Test Step 18 : Reset level to 254\n"); - if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0010 && LVL.S.A0000")) { - NextTest(); - return; - } - err = TestResetLevelTo254_18(); - break; - case 19: - ChipLogProgress(chipTool, " ***** Test Step 19 : Wait 100ms\n"); - err = TestWait100ms_19(); - break; - case 20: - ChipLogProgress(chipTool, " ***** Test Step 20 : Precondition send Off Command\n"); + ChipLogProgress(chipTool, " ***** Test Step 18 : Precondition send Off Command\n"); if (ShouldSkip("OO.S.C00.Rsp")) { NextTest(); return; } - err = TestPreconditionSendOffCommand_20(); + err = TestPreconditionSendOffCommand_18(); break; - case 21: - ChipLogProgress(chipTool, " ***** Test Step 21 : Check on/off attribute value is false after off command\n"); + case 19: + ChipLogProgress(chipTool, " ***** Test Step 19 : Check on/off attribute value is false after off command\n"); if (ShouldSkip("OO.S.A0000")) { NextTest(); return; } - err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_21(); + err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_19(); break; } @@ -25248,12 +22681,6 @@ class Test_TC_LVL_4_1 : public TestCommandBridge { case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 20: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 21: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; } // Go on to the next test. @@ -25267,7 +22694,7 @@ class Test_TC_LVL_4_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 22; + const uint16_t mTestCount = 20; chip::Optional mNodeId; chip::Optional mCluster; @@ -25601,39 +23028,7 @@ class Test_TC_LVL_4_1 : public TestCommandBridge { return UserPrompt("alpha", value); } - CHIP_ERROR TestResetLevelTo254_18() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - __auto_type * params = [[MTRLevelControlClusterMoveToLevelParams alloc] init]; - params.level = [NSNumber numberWithUnsignedChar:254U]; - params.transitionTime = [NSNumber numberWithUnsignedShort:0U]; - params.optionMask = [NSNumber numberWithUnsignedChar:1U]; - params.optionOverride = [NSNumber numberWithUnsignedChar:1U]; - [cluster moveToLevelWithParams:params - completionHandler:^(NSError * _Nullable err) { - NSLog(@"Reset level to 254 Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait100ms_19() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 100UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestPreconditionSendOffCommand_20() + CHIP_ERROR TestPreconditionSendOffCommand_18() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -25650,7 +23045,7 @@ class Test_TC_LVL_4_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_21() + CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_19() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -25741,87 +23136,99 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { break; case 4: ChipLogProgress(chipTool, " ***** Test Step 4 : Sends MoveToLevelWithOnOff command to DUT\n"); - if (ShouldSkip("LVL.S.C04.Rsp")) { + if (ShouldSkip("LVL.S.C04.Rsp && LVL.S.A0002")) { NextTest(); return; } err = TestSendsMoveToLevelWithOnOffCommandToDut_4(); break; case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Reads current level attribute from DUT\n"); - if (ShouldSkip("LVL.S.A0000")) { + ChipLogProgress(chipTool, " ***** Test Step 5 : Sends MoveToLevelWithOnOff command to DUT\n"); + if (ShouldSkip("LVL.S.C04.Rsp && !LVL.S.A0002")) { NextTest(); return; } - err = TestReadsCurrentLevelAttributeFromDut_5(); + err = TestSendsMoveToLevelWithOnOffCommandToDut_5(); break; case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : Sends step up command to DUT\n"); - if (ShouldSkip("LVL.S.C02.Rsp && LVL.S.M.VarRate")) { + ChipLogProgress(chipTool, " ***** Test Step 6 : Reads current level attribute from DUT\n"); + if (ShouldSkip("LVL.S.A0000")) { NextTest(); return; } - err = TestSendsStepUpCommandToDut_6(); + err = TestReadsCurrentLevelAttributeFromDut_6(); break; case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : Wait 4000ms\n"); - err = TestWait4000ms_7(); + ChipLogProgress(chipTool, " ***** Test Step 7 : Reads current level attribute from DUT\n"); + if (ShouldSkip("LVL.S.A0000 && !LVL.S.A0002")) { + NextTest(); + return; + } + err = TestReadsCurrentLevelAttributeFromDut_7(); break; case 8: - ChipLogProgress(chipTool, " ***** Test Step 8 : Reads current level attribute from DUT\n"); - if (ShouldSkip("LVL.S.A0000 && LVL.S.C02.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 8 : Sends step up command to DUT\n"); + if (ShouldSkip("LVL.S.C02.Rsp && LVL.S.M.VarRate")) { NextTest(); return; } - err = TestReadsCurrentLevelAttributeFromDut_8(); + err = TestSendsStepUpCommandToDut_8(); break; case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Sends a StepWithOnOff command\n"); - if (ShouldSkip("LVL.S.C06.Rsp && LVL.S.M.VarRate")) { + ChipLogProgress(chipTool, " ***** Test Step 9 : Wait 4000ms\n"); + err = TestWait4000ms_9(); + break; + case 10: + ChipLogProgress(chipTool, " ***** Test Step 10 : Reads current level attribute from DUT\n"); + if (ShouldSkip("LVL.S.A0000 && LVL.S.C02.Rsp")) { NextTest(); return; } - err = TestSendsAStepWithOnOffCommand_9(); - break; - case 10: - ChipLogProgress(chipTool, " ***** Test Step 10 : Wait 4000ms\n"); - err = TestWait4000ms_10(); + err = TestReadsCurrentLevelAttributeFromDut_10(); break; case 11: - ChipLogProgress(chipTool, " ***** Test Step 11 : Reads current level attribute from DUT\n"); - if (ShouldSkip("LVL.S.C06.Rsp && LVL.S.A0000")) { + ChipLogProgress(chipTool, " ***** Test Step 11 : Sends a StepWithOnOff command\n"); + if (ShouldSkip("LVL.S.C06.Rsp && LVL.S.M.VarRate")) { NextTest(); return; } - err = TestReadsCurrentLevelAttributeFromDut_11(); + err = TestSendsAStepWithOnOffCommand_11(); break; case 12: - ChipLogProgress(chipTool, " ***** Test Step 12 : Reset level to 254\n"); - if (ShouldSkip("LVL.S.C00.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 12 : Wait 4000ms\n"); + err = TestWait4000ms_12(); + break; + case 13: + ChipLogProgress(chipTool, " ***** Test Step 13 : Reads current level attribute from DUT\n"); + if (ShouldSkip("LVL.S.C06.Rsp && LVL.S.A0000")) { NextTest(); return; } - err = TestResetLevelTo254_12(); - break; - case 13: - ChipLogProgress(chipTool, " ***** Test Step 13 : Wait 100ms\n"); - err = TestWait100ms_13(); + err = TestReadsCurrentLevelAttributeFromDut_13(); break; case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : Precondition send Off Command\n"); - if (ShouldSkip("OO.S.C00.Rsp")) { + ChipLogProgress(chipTool, " ***** Test Step 14 : Reads current level attribute from DUT\n"); + if (ShouldSkip("LVL.S.C06.Rsp && LVL.S.A0000 && !LVL.S.A0002")) { NextTest(); return; } - err = TestPreconditionSendOffCommand_14(); + err = TestReadsCurrentLevelAttributeFromDut_14(); break; case 15: - ChipLogProgress(chipTool, " ***** Test Step 15 : Check on/off attribute value is false after off command\n"); + ChipLogProgress(chipTool, " ***** Test Step 15 : Precondition send Off Command\n"); + if (ShouldSkip("OO.S.C00.Rsp")) { + NextTest(); + return; + } + err = TestPreconditionSendOffCommand_15(); + break; + case 16: + ChipLogProgress(chipTool, " ***** Test Step 16 : Check on/off attribute value is false after off command\n"); if (ShouldSkip("OO.S.A0000")) { NextTest(); return; } - err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_15(); + err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_16(); break; } @@ -25882,6 +23289,9 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 16: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -25895,7 +23305,7 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 16; + const uint16_t mTestCount = 17; chip::Optional mNodeId; chip::Optional mCluster; @@ -25984,7 +23394,30 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); __auto_type * params = [[MTRLevelControlClusterMoveToLevelWithOnOffParams alloc] init]; - params.level = [MinlevelValue copy]; + params.level = [NSNumber numberWithUnsignedChar:[MinlevelValue unsignedCharValue] + 1U]; + params.transitionTime = [NSNumber numberWithUnsignedShort:0U]; + [cluster moveToLevelWithOnOffWithParams:params + completionHandler:^(NSError * _Nullable err) { + NSLog(@"Sends MoveToLevelWithOnOff command to DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestSendsMoveToLevelWithOnOffCommandToDut_5() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + __auto_type * params = [[MTRLevelControlClusterMoveToLevelWithOnOffParams alloc] init]; + params.level = [NSNumber numberWithUnsignedChar:2U]; params.transitionTime = [NSNumber numberWithUnsignedShort:0U]; [cluster moveToLevelWithOnOffWithParams:params completionHandler:^(NSError * _Nullable err) { @@ -25999,7 +23432,7 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { } NSNumber * _Nonnull CurrentlevelValue; - CHIP_ERROR TestReadsCurrentLevelAttributeFromDut_5() + CHIP_ERROR TestReadsCurrentLevelAttributeFromDut_6() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -26014,7 +23447,7 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { { id actualValue = value; - VerifyOrReturn(CheckValue("current level", actualValue, MinlevelValue)); + VerifyOrReturn(CheckValue("current level", actualValue, [MinlevelValue unsignedCharValue] + 1U)); } VerifyOrReturn(CheckConstraintType("currentLevel", "", "uint8")); @@ -26030,7 +23463,35 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestSendsStepUpCommandToDut_6() + CHIP_ERROR TestReadsCurrentLevelAttributeFromDut_7() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeCurrentLevelWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Reads current level attribute from DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("current level", actualValue, 2U)); + } + + VerifyOrReturn(CheckConstraintType("currentLevel", "", "uint8")); + VerifyOrReturn(CheckConstraintMinValue("currentLevel", [value unsignedCharValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("currentLevel", [value unsignedCharValue], 255U)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestSendsStepUpCommandToDut_8() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -26056,14 +23517,14 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait4000ms_7() + CHIP_ERROR TestWait4000ms_9() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 4000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestReadsCurrentLevelAttributeFromDut_8() + CHIP_ERROR TestReadsCurrentLevelAttributeFromDut_10() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -26086,7 +23547,7 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestSendsAStepWithOnOffCommand_9() + CHIP_ERROR TestSendsAStepWithOnOffCommand_11() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -26110,14 +23571,14 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait4000ms_10() + CHIP_ERROR TestWait4000ms_12() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 4000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestReadsCurrentLevelAttributeFromDut_11() + CHIP_ERROR TestReadsCurrentLevelAttributeFromDut_13() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -26141,7 +23602,7 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestResetLevelTo254_12() + CHIP_ERROR TestReadsCurrentLevelAttributeFromDut_14() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -26149,31 +23610,23 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - __auto_type * params = [[MTRLevelControlClusterMoveToLevelParams alloc] init]; - params.level = [NSNumber numberWithUnsignedChar:254U]; - params.transitionTime = [NSNumber numberWithUnsignedShort:0U]; - params.optionMask = [NSNumber numberWithUnsignedChar:1U]; - params.optionOverride = [NSNumber numberWithUnsignedChar:1U]; - [cluster moveToLevelWithParams:params - completionHandler:^(NSError * _Nullable err) { - NSLog(@"Reset level to 254 Error: %@", err); + [cluster readAttributeCurrentLevelWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Reads current level attribute from DUT Error: %@", err); - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - NextTest(); - }]; + { + id actualValue = value; + VerifyOrReturn(CheckValue("current level", actualValue, 2U)); + } - return CHIP_NO_ERROR; - } + NextTest(); + }]; - CHIP_ERROR TestWait100ms_13() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 100UL; - return WaitForMs("alpha", value); + return CHIP_NO_ERROR; } - CHIP_ERROR TestPreconditionSendOffCommand_14() + CHIP_ERROR TestPreconditionSendOffCommand_15() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -26190,7 +23643,7 @@ class Test_TC_LVL_5_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_15() + CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_16() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -26364,32 +23817,20 @@ class Test_TC_LVL_6_1 : public TestCommandBridge { err = TestReadsCurrentLevelAttributeFromDut_15(); break; case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : Reset level to 254\n"); - if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0010 && LVL.S.A0000")) { - NextTest(); - return; - } - err = TestResetLevelTo254_16(); - break; - case 17: - ChipLogProgress(chipTool, " ***** Test Step 17 : Wait 100ms\n"); - err = TestWait100ms_17(); - break; - case 18: - ChipLogProgress(chipTool, " ***** Test Step 18 : Precondition send Off Command\n"); + ChipLogProgress(chipTool, " ***** Test Step 16 : Precondition send Off Command\n"); if (ShouldSkip("OO.S.C00.Rsp")) { NextTest(); return; } - err = TestPreconditionSendOffCommand_18(); + err = TestPreconditionSendOffCommand_16(); break; - case 19: - ChipLogProgress(chipTool, " ***** Test Step 19 : Check on/off attribute value is false after off command\n"); + case 17: + ChipLogProgress(chipTool, " ***** Test Step 17 : Check on/off attribute value is false after off command\n"); if (ShouldSkip("OO.S.A0000")) { NextTest(); return; } - err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_19(); + err = TestCheckOnOffAttributeValueIsFalseAfterOffCommand_17(); break; } @@ -26456,12 +23897,6 @@ class Test_TC_LVL_6_1 : public TestCommandBridge { case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 18: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 19: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; } // Go on to the next test. @@ -26475,7 +23910,7 @@ class Test_TC_LVL_6_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 20; + const uint16_t mTestCount = 18; chip::Optional mNodeId; chip::Optional mCluster; @@ -26778,39 +24213,7 @@ class Test_TC_LVL_6_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestResetLevelTo254_16() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - __auto_type * params = [[MTRLevelControlClusterMoveToLevelParams alloc] init]; - params.level = [NSNumber numberWithUnsignedChar:254U]; - params.transitionTime = [NSNumber numberWithUnsignedShort:0U]; - params.optionMask = [NSNumber numberWithUnsignedChar:1U]; - params.optionOverride = [NSNumber numberWithUnsignedChar:1U]; - [cluster moveToLevelWithParams:params - completionHandler:^(NSError * _Nullable err) { - NSLog(@"Reset level to 254 Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWait100ms_17() - { - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 100UL; - return WaitForMs("alpha", value); - } - - CHIP_ERROR TestPreconditionSendOffCommand_18() + CHIP_ERROR TestPreconditionSendOffCommand_16() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -26827,7 +24230,7 @@ class Test_TC_LVL_6_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_19() + CHIP_ERROR TestCheckOnOffAttributeValueIsFalseAfterOffCommand_17() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterOnOff * cluster = [[MTRBaseClusterOnOff alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -27159,12 +24562,12 @@ class Test_TC_KEYPADINPUT_1_2 : public TestCommandBridge { err = TestReadTheGlobalAttributeClusterRevision_1(); break; case 2: - ChipLogProgress(chipTool, " ***** Test Step 2 : Read the optional global attribute: FeatureMap\n"); + ChipLogProgress(chipTool, " ***** Test Step 2 : Read the global attribute: FeatureMap\n"); if (ShouldSkip("KEYPADINPUT.S.NV || KEYPADINPUT.S.LK || KEYPADINPUT.S.NK")) { NextTest(); return; } - err = TestReadTheOptionalGlobalAttributeFeatureMap_2(); + err = TestReadTheGlobalAttributeFeatureMap_2(); break; case 3: ChipLogProgress(chipTool, " ***** Test Step 3 : Read the global attribute: AttributeList\n"); @@ -27272,7 +24675,7 @@ class Test_TC_KEYPADINPUT_1_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalGlobalAttributeFeatureMap_2() + CHIP_ERROR TestReadTheGlobalAttributeFeatureMap_2() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterKeypadInput * cluster = [[MTRBaseClusterKeypadInput alloc] initWithDevice:device @@ -27281,7 +24684,7 @@ class Test_TC_KEYPADINPUT_1_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeFeatureMapWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the optional global attribute: FeatureMap Error: %@", err); + NSLog(@"Read the global attribute: FeatureMap Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -27422,12 +24825,12 @@ class Test_TC_APPLAUNCHER_1_3 : public TestCommandBridge { err = TestReadTheGlobalAttributeClusterRevision_1(); break; case 2: - ChipLogProgress(chipTool, " ***** Test Step 2 : Read the optional global attribute: FeatureMap\n"); + ChipLogProgress(chipTool, " ***** Test Step 2 : Read the global attribute: FeatureMap\n"); if (ShouldSkip("APPLAUNCHER.S.AP")) { NextTest(); return; } - err = TestReadTheOptionalGlobalAttributeFeatureMap_2(); + err = TestReadTheGlobalAttributeFeatureMap_2(); break; case 3: ChipLogProgress(chipTool, " ***** Test Step 3 : Read the global attribute: FeatureMap\n"); @@ -27572,7 +24975,7 @@ class Test_TC_APPLAUNCHER_1_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalGlobalAttributeFeatureMap_2() + CHIP_ERROR TestReadTheGlobalAttributeFeatureMap_2() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterApplicationLauncher * cluster = [[MTRBaseClusterApplicationLauncher alloc] initWithDevice:device @@ -27581,7 +24984,7 @@ class Test_TC_APPLAUNCHER_1_3 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeFeatureMapWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the optional global attribute: FeatureMap Error: %@", err); + NSLog(@"Read the global attribute: FeatureMap Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -27795,12 +25198,12 @@ class Test_TC_MEDIAINPUT_1_4 : public TestCommandBridge { err = TestReadTheGlobalAttributeClusterRevision_1(); break; case 2: - ChipLogProgress(chipTool, " ***** Test Step 2 : Read the optional global attribute: FeatureMap\n"); + ChipLogProgress(chipTool, " ***** Test Step 2 : Read the global attribute: FeatureMap\n"); if (ShouldSkip("MEDIAINPUT.S.NU")) { NextTest(); return; } - err = TestReadTheOptionalGlobalAttributeFeatureMap_2(); + err = TestReadTheGlobalAttributeFeatureMap_2(); break; case 3: ChipLogProgress(chipTool, " ***** Test Step 3 : Read the global attribute: AttributeList\n"); @@ -27934,7 +25337,7 @@ class Test_TC_MEDIAINPUT_1_4 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalGlobalAttributeFeatureMap_2() + CHIP_ERROR TestReadTheGlobalAttributeFeatureMap_2() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterMediaInput * cluster = [[MTRBaseClusterMediaInput alloc] initWithDevice:device @@ -27943,7 +25346,7 @@ class Test_TC_MEDIAINPUT_1_4 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeFeatureMapWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the optional global attribute: FeatureMap Error: %@", err); + NSLog(@"Read the global attribute: FeatureMap Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -28393,12 +25796,12 @@ class Test_TC_CHANNEL_1_6 : public TestCommandBridge { err = TestReadTheGlobalAttributeClusterRevision_1(); break; case 2: - ChipLogProgress(chipTool, " ***** Test Step 2 : Read the optional global attribute: FeatureMap\n"); + ChipLogProgress(chipTool, " ***** Test Step 2 : Read the global attribute: FeatureMap\n"); if (ShouldSkip("CHANNEL.S.CL || CHANNEL.S.LI")) { NextTest(); return; } - err = TestReadTheOptionalGlobalAttributeFeatureMap_2(); + err = TestReadTheGlobalAttributeFeatureMap_2(); break; case 3: ChipLogProgress(chipTool, " ***** Test Step 3 : Read the global attribute: AttributeList\n"); @@ -28433,22 +25836,47 @@ class Test_TC_CHANNEL_1_6 : public TestCommandBridge { err = TestReadTheOptionalAttributeCurrentChannelAttributeList_6(); break; case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : Read the global attribute: AcceptedCommandList\n"); - err = TestReadTheGlobalAttributeAcceptedCommandList_7(); + ChipLogProgress(chipTool, " ***** Test Step 7 : Read the optional command(ChangeChannel) in AcceptedCommandList\n"); + if (ShouldSkip("CHANNEL.S.C00.Rsp")) { + NextTest(); + return; + } + err = TestReadTheOptionalCommandChangeChannelInAcceptedCommandList_7(); break; case 8: - ChipLogProgress(chipTool, " ***** Test Step 8 : Read the global attribute: GeneratedCommandList\n"); - err = TestReadTheGlobalAttributeGeneratedCommandList_8(); + ChipLogProgress( + chipTool, " ***** Test Step 8 : Read the optional command(ChangeChannelByNumber) in AcceptedCommandList\n"); + if (ShouldSkip("CHANNEL.S.C02.Rsp")) { + NextTest(); + return; + } + err = TestReadTheOptionalCommandChangeChannelByNumberInAcceptedCommandList_8(); break; case 9: + ChipLogProgress(chipTool, " ***** Test Step 9 : Read the optional command(SkipChannel) in AcceptedCommandList\n"); + if (ShouldSkip("CHANNEL.S.C03.Rsp")) { + NextTest(); + return; + } + err = TestReadTheOptionalCommandSkipChannelInAcceptedCommandList_9(); + break; + case 10: + ChipLogProgress(chipTool, " ***** Test Step 10 : Read the global attribute: GeneratedCommandList\n"); + if (ShouldSkip("CHANNEL.S.C01.Tx")) { + NextTest(); + return; + } + err = TestReadTheGlobalAttributeGeneratedCommandList_10(); + break; + case 11: ChipLogProgress(chipTool, - " ***** Test Step 9 : Read EventList attribute from the DUT and Verify that the DUT response provides a list of " + " ***** Test Step 11 : Read EventList attribute from the DUT and Verify that the DUT response provides a list of " "supported events.\n"); if (ShouldSkip("PICS_USER_PROMPT")) { NextTest(); return; } - err = TestReadEventListAttributeFromTheDutAndVerifyThatTheDutResponseProvidesAListOfSupportedEvents_9(); + err = TestReadEventListAttributeFromTheDutAndVerifyThatTheDutResponseProvidesAListOfSupportedEvents_11(); break; } @@ -28491,6 +25919,12 @@ class Test_TC_CHANNEL_1_6 : public TestCommandBridge { case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 10: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 11: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -28504,7 +25938,7 @@ class Test_TC_CHANNEL_1_6 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 10; + const uint16_t mTestCount = 12; chip::Optional mNodeId; chip::Optional mCluster; @@ -28541,14 +25975,14 @@ class Test_TC_CHANNEL_1_6 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalGlobalAttributeFeatureMap_2() + CHIP_ERROR TestReadTheGlobalAttributeFeatureMap_2() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterChannel * cluster = [[MTRBaseClusterChannel alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeFeatureMapWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the optional global attribute: FeatureMap Error: %@", err); + NSLog(@"Read the global attribute: FeatureMap Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -28646,20 +26080,58 @@ class Test_TC_CHANNEL_1_6 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheGlobalAttributeAcceptedCommandList_7() + CHIP_ERROR TestReadTheOptionalCommandChangeChannelInAcceptedCommandList_7() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterChannel * cluster = [[MTRBaseClusterChannel alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeAcceptedCommandListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the global attribute: AcceptedCommandList Error: %@", err); + NSLog(@"Read the optional command(ChangeChannel) in AcceptedCommandList Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("acceptedCommandList", "", "list")); VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 0UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadTheOptionalCommandChangeChannelByNumberInAcceptedCommandList_8() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterChannel * cluster = [[MTRBaseClusterChannel alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAcceptedCommandListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the optional command(ChangeChannelByNumber) in AcceptedCommandList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("acceptedCommandList", "", "list")); VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 2UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadTheOptionalCommandSkipChannelInAcceptedCommandList_9() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterChannel * cluster = [[MTRBaseClusterChannel alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAcceptedCommandListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the optional command(SkipChannel) in AcceptedCommandList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("acceptedCommandList", "", "list")); VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 3UL)); NextTest(); @@ -28668,7 +26140,7 @@ class Test_TC_CHANNEL_1_6 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheGlobalAttributeGeneratedCommandList_8() + CHIP_ERROR TestReadTheGlobalAttributeGeneratedCommandList_10() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterChannel * cluster = [[MTRBaseClusterChannel alloc] initWithDevice:device endpoint:1 queue:mCallbackQueue]; @@ -28680,13 +26152,15 @@ class Test_TC_CHANNEL_1_6 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("generatedCommandList", "", "list")); + VerifyOrReturn(CheckConstraintContains("generatedCommandList", value, 1UL)); + NextTest(); }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestReadEventListAttributeFromTheDutAndVerifyThatTheDutResponseProvidesAListOfSupportedEvents_9() + CHIP_ERROR TestReadEventListAttributeFromTheDutAndVerifyThatTheDutResponseProvidesAListOfSupportedEvents_11() { chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); @@ -28743,12 +26217,12 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { err = TestReadTheGlobalAttributeClusterRevision_1(); break; case 2: - ChipLogProgress(chipTool, " ***** Test Step 2 : Read the optional global attribute: FeatureMap\n"); + ChipLogProgress(chipTool, " ***** Test Step 2 : Read the global attribute: FeatureMap\n"); if (ShouldSkip("MEDIAPLAYBACK.S.AS || MEDIAPLAYBACK.S.VS")) { NextTest(); return; } - err = TestReadTheOptionalGlobalAttributeFeatureMap_2(); + err = TestReadTheGlobalAttributeFeatureMap_2(); break; case 3: ChipLogProgress(chipTool, " ***** Test Step 3 : Read the global attribute: AttributeList\n"); @@ -28807,18 +26281,82 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { err = TestReadTheGlobalAttributeAcceptedCommandList_10(); break; case 11: - ChipLogProgress(chipTool, " ***** Test Step 11 : Read the global attribute: GeneratedCommandList\n"); - err = TestReadTheGlobalAttributeGeneratedCommandList_11(); + ChipLogProgress(chipTool, " ***** Test Step 11 : Read the optional command(StartOver) in AcceptedCommandList\n"); + if (ShouldSkip("MEDIAPLAYBACK.S.C03.Rsp")) { + NextTest(); + return; + } + err = TestReadTheOptionalCommandStartOverInAcceptedCommandList_11(); break; case 12: + ChipLogProgress(chipTool, " ***** Test Step 12 : Read the optional command(Previous) in AcceptedCommandList\n"); + if (ShouldSkip("MEDIAPLAYBACK.S.C04.Rsp")) { + NextTest(); + return; + } + err = TestReadTheOptionalCommandPreviousInAcceptedCommandList_12(); + break; + case 13: + ChipLogProgress(chipTool, " ***** Test Step 13 : Read the optional command(Next) in AcceptedCommandList\n"); + if (ShouldSkip("MEDIAPLAYBACK.S.C05.Rsp")) { + NextTest(); + return; + } + err = TestReadTheOptionalCommandNextInAcceptedCommandList_13(); + break; + case 14: + ChipLogProgress(chipTool, " ***** Test Step 14 : Read the optional command(Rewind) in AcceptedCommandList\n"); + if (ShouldSkip("MEDIAPLAYBACK.S.C06.Rsp")) { + NextTest(); + return; + } + err = TestReadTheOptionalCommandRewindInAcceptedCommandList_14(); + break; + case 15: + ChipLogProgress(chipTool, " ***** Test Step 15 : Read the optional command(FastForward) in AcceptedCommandList\n"); + if (ShouldSkip("MEDIAPLAYBACK.S.C07.Rsp")) { + NextTest(); + return; + } + err = TestReadTheOptionalCommandFastForwardInAcceptedCommandList_15(); + break; + case 16: + ChipLogProgress(chipTool, " ***** Test Step 16 : Read the optional command(SkipForward) in AcceptedCommandList\n"); + if (ShouldSkip("MEDIAPLAYBACK.S.C08.Rsp")) { + NextTest(); + return; + } + err = TestReadTheOptionalCommandSkipForwardInAcceptedCommandList_16(); + break; + case 17: + ChipLogProgress(chipTool, " ***** Test Step 17 : Read the optional command(SkipBackward) in AcceptedCommandList\n"); + if (ShouldSkip("MEDIAPLAYBACK.S.C09.Rsp")) { + NextTest(); + return; + } + err = TestReadTheOptionalCommandSkipBackwardInAcceptedCommandList_17(); + break; + case 18: + ChipLogProgress(chipTool, " ***** Test Step 18 : Read the optional command(Seek) in AcceptedCommandList\n"); + if (ShouldSkip("MEDIAPLAYBACK.S.C0B.Rsp")) { + NextTest(); + return; + } + err = TestReadTheOptionalCommandSeekInAcceptedCommandList_18(); + break; + case 19: + ChipLogProgress(chipTool, " ***** Test Step 19 : Read the global attribute: GeneratedCommandList\n"); + err = TestReadTheGlobalAttributeGeneratedCommandList_19(); + break; + case 20: ChipLogProgress(chipTool, - " ***** Test Step 12 : Read EventList attribute from the DUT and Verify that the DUT response provides a list of " + " ***** Test Step 20 : Read EventList attribute from the DUT and Verify that the DUT response provides a list of " "supported events.\n"); if (ShouldSkip("PICS_USER_PROMPT")) { NextTest(); return; } - err = TestReadEventListAttributeFromTheDutAndVerifyThatTheDutResponseProvidesAListOfSupportedEvents_12(); + err = TestReadEventListAttributeFromTheDutAndVerifyThatTheDutResponseProvidesAListOfSupportedEvents_20(); break; } @@ -28870,6 +26408,30 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 13: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 14: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 15: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 16: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 17: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 18: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 19: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 20: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -28883,7 +26445,7 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 13; + const uint16_t mTestCount = 21; chip::Optional mNodeId; chip::Optional mCluster; @@ -28922,7 +26484,7 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalGlobalAttributeFeatureMap_2() + CHIP_ERROR TestReadTheGlobalAttributeFeatureMap_2() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device @@ -28931,7 +26493,7 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeFeatureMapWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the optional global attribute: FeatureMap Error: %@", err); + NSLog(@"Read the global attribute: FeatureMap Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -29128,7 +26690,183 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheGlobalAttributeGeneratedCommandList_11() + CHIP_ERROR TestReadTheOptionalCommandStartOverInAcceptedCommandList_11() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAcceptedCommandListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the optional command(StartOver) in AcceptedCommandList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("acceptedCommandList", "", "list")); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 3UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadTheOptionalCommandPreviousInAcceptedCommandList_12() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAcceptedCommandListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the optional command(Previous) in AcceptedCommandList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("acceptedCommandList", "", "list")); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 4UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadTheOptionalCommandNextInAcceptedCommandList_13() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAcceptedCommandListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the optional command(Next) in AcceptedCommandList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("acceptedCommandList", "", "list")); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 5UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadTheOptionalCommandRewindInAcceptedCommandList_14() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAcceptedCommandListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the optional command(Rewind) in AcceptedCommandList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("acceptedCommandList", "", "list")); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 6UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadTheOptionalCommandFastForwardInAcceptedCommandList_15() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAcceptedCommandListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the optional command(FastForward) in AcceptedCommandList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("acceptedCommandList", "", "list")); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 7UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadTheOptionalCommandSkipForwardInAcceptedCommandList_16() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAcceptedCommandListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the optional command(SkipForward) in AcceptedCommandList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("acceptedCommandList", "", "list")); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 8UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadTheOptionalCommandSkipBackwardInAcceptedCommandList_17() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAcceptedCommandListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the optional command(SkipBackward) in AcceptedCommandList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("acceptedCommandList", "", "list")); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 9UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadTheOptionalCommandSeekInAcceptedCommandList_18() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAcceptedCommandListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the optional command(Seek) in AcceptedCommandList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("acceptedCommandList", "", "list")); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 11UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadTheGlobalAttributeGeneratedCommandList_19() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device @@ -29150,7 +26888,7 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadEventListAttributeFromTheDutAndVerifyThatTheDutResponseProvidesAListOfSupportedEvents_12() + CHIP_ERROR TestReadEventListAttributeFromTheDutAndVerifyThatTheDutResponseProvidesAListOfSupportedEvents_20() { chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); @@ -30093,19 +27831,15 @@ class Test_TC_CONTENTLAUNCHER_1_11 : public TestCommandBridge { err = TestReadTheGlobalAttributeClusterRevision_1(); break; case 2: - ChipLogProgress(chipTool, " ***** Test Step 2 : Read the optional global attribute: FeatureMap\n"); + ChipLogProgress(chipTool, " ***** Test Step 2 : Read the global attribute: FeatureMap\n"); if (ShouldSkip("CONTENTLAUNCHER.S.CS || CONTENTLAUNCHER.S.UP")) { NextTest(); return; } - err = TestReadTheOptionalGlobalAttributeFeatureMap_2(); + err = TestReadTheGlobalAttributeFeatureMap_2(); break; case 3: ChipLogProgress(chipTool, " ***** Test Step 3 : Read the global attribute: AttributeList\n"); - if (ShouldSkip("CONTENTLAUNCHER.S.A0000 && CONTENTLAUNCHER.S.A0001")) { - NextTest(); - return; - } err = TestReadTheGlobalAttributeAttributeList_3(); break; case 4: @@ -30250,7 +27984,7 @@ class Test_TC_CONTENTLAUNCHER_1_11 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalGlobalAttributeFeatureMap_2() + CHIP_ERROR TestReadTheGlobalAttributeFeatureMap_2() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterContentLauncher * cluster = [[MTRBaseClusterContentLauncher alloc] initWithDevice:device @@ -30259,7 +27993,7 @@ class Test_TC_CONTENTLAUNCHER_1_11 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeFeatureMapWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the optional global attribute: FeatureMap Error: %@", err); + NSLog(@"Read the global attribute: FeatureMap Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -32463,7 +30197,7 @@ class Test_TC_CHANNEL_5_2 : public TestCommandBridge { break; case 2: ChipLogProgress(chipTool, " ***** Test Step 2 : TH sends a ChangeChannelByNumber command\n"); - if (ShouldSkip("CHANNEL.S.C0002")) { + if (ShouldSkip("CHANNEL.S.C02.Rsp")) { NextTest(); return; } @@ -32687,7 +30421,7 @@ class Test_TC_CHANNEL_5_3 : public TestCommandBridge { break; case 4: ChipLogProgress(chipTool, " ***** Test Step 4 : Sends a SkipChannel command to the DUT\n"); - if (ShouldSkip("CHANNEL.S.C0003")) { + if (ShouldSkip("CHANNEL.S.C03.Rsp")) { NextTest(); return; } @@ -32966,12 +30700,12 @@ class Test_TC_MEDIAPLAYBACK_6_1 : public TestCommandBridge { err = TestVerifyThatTheMediaStateIsPlaying_4(); break; case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Reads the playback state attribute\n"); + ChipLogProgress(chipTool, " ***** Test Step 5 : Reads the CurrentState attribute\n"); if (ShouldSkip("MEDIAPLAYBACK.S.A0000")) { NextTest(); return; } - err = TestReadsThePlaybackStateAttribute_5(); + err = TestReadsTheCurrentStateAttribute_5(); break; case 6: ChipLogProgress(chipTool, " ***** Test Step 6 : sends a Pause command\n"); @@ -32990,8 +30724,8 @@ class Test_TC_MEDIAPLAYBACK_6_1 : public TestCommandBridge { err = TestVerifyThatTheMediaIsPaused_7(); break; case 8: - ChipLogProgress(chipTool, " ***** Test Step 8 : Reads the playback state attribute\n"); - err = TestReadsThePlaybackStateAttribute_8(); + ChipLogProgress(chipTool, " ***** Test Step 8 : Reads the CurrentState attribute\n"); + err = TestReadsTheCurrentStateAttribute_8(); break; case 9: ChipLogProgress(chipTool, " ***** Test Step 9 : Sends a Stop command\n"); @@ -33010,12 +30744,12 @@ class Test_TC_MEDIAPLAYBACK_6_1 : public TestCommandBridge { err = TestVerifyThatTheMediaIsStoped_10(); break; case 11: - ChipLogProgress(chipTool, " ***** Test Step 11 : Reads the playback state attribute\n"); + ChipLogProgress(chipTool, " ***** Test Step 11 : Reads the CurrentState attribute\n"); if (ShouldSkip("MEDIAPLAYBACK.S.A0000")) { NextTest(); return; } - err = TestReadsThePlaybackStateAttribute_11(); + err = TestReadsTheCurrentStateAttribute_11(); break; } @@ -33174,7 +30908,7 @@ class Test_TC_MEDIAPLAYBACK_6_1 : public TestCommandBridge { return UserPrompt("alpha", value); } - CHIP_ERROR TestReadsThePlaybackStateAttribute_5() + CHIP_ERROR TestReadsTheCurrentStateAttribute_5() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device @@ -33183,7 +30917,7 @@ class Test_TC_MEDIAPLAYBACK_6_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentStateWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads the playback state attribute Error: %@", err); + NSLog(@"Reads the CurrentState attribute Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -33232,7 +30966,7 @@ class Test_TC_MEDIAPLAYBACK_6_1 : public TestCommandBridge { return UserPrompt("alpha", value); } - CHIP_ERROR TestReadsThePlaybackStateAttribute_8() + CHIP_ERROR TestReadsTheCurrentStateAttribute_8() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device @@ -33241,7 +30975,7 @@ class Test_TC_MEDIAPLAYBACK_6_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentStateWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads the playback state attribute Error: %@", err); + NSLog(@"Reads the CurrentState attribute Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -33290,7 +31024,7 @@ class Test_TC_MEDIAPLAYBACK_6_1 : public TestCommandBridge { return UserPrompt("alpha", value); } - CHIP_ERROR TestReadsThePlaybackStateAttribute_11() + CHIP_ERROR TestReadsTheCurrentStateAttribute_11() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterMediaPlayback * cluster = [[MTRBaseClusterMediaPlayback alloc] initWithDevice:device @@ -33299,7 +31033,7 @@ class Test_TC_MEDIAPLAYBACK_6_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentStateWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads the playback state attribute Error: %@", err); + NSLog(@"Reads the CurrentState attribute Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -33400,7 +31134,7 @@ class Test_TC_MEDIAPLAYBACK_6_2 : public TestCommandBridge { break; case 6: ChipLogProgress(chipTool, " ***** Test Step 6 : Sends a StartOver command to the DUT\n"); - if (ShouldSkip("MEDIAPLAYBACK.S.C0003")) { + if (ShouldSkip("MEDIAPLAYBACK.S.C03.Rsp")) { NextTest(); return; } @@ -33416,7 +31150,7 @@ class Test_TC_MEDIAPLAYBACK_6_2 : public TestCommandBridge { break; case 8: ChipLogProgress(chipTool, " ***** Test Step 8 : Sends a Next command to the DUT\n"); - if (ShouldSkip("MEDIAPLAYBACK.S.C0005")) { + if (ShouldSkip("MEDIAPLAYBACK.S.C05.Rsp")) { NextTest(); return; } @@ -33432,7 +31166,7 @@ class Test_TC_MEDIAPLAYBACK_6_2 : public TestCommandBridge { break; case 10: ChipLogProgress(chipTool, " ***** Test Step 10 : Sends a Previous command to the DUT\n"); - if (ShouldSkip("MEDIAPLAYBACK.S.C0004")) { + if (ShouldSkip("MEDIAPLAYBACK.S.C04.Rsp")) { NextTest(); return; } @@ -33448,7 +31182,7 @@ class Test_TC_MEDIAPLAYBACK_6_2 : public TestCommandBridge { break; case 12: ChipLogProgress(chipTool, " ***** Test Step 12 : Sends a SkipForward command to the DUT \n"); - if (ShouldSkip("MEDIAPLAYBACK.S.C0008")) { + if (ShouldSkip("MEDIAPLAYBACK.S.C08.Rsp")) { NextTest(); return; } @@ -33472,7 +31206,7 @@ class Test_TC_MEDIAPLAYBACK_6_2 : public TestCommandBridge { break; case 15: ChipLogProgress(chipTool, " ***** Test Step 15 : Sends a SkipBackward command to the DUT \n"); - if (ShouldSkip("MEDIAPLAYBACK.S.C0009")) { + if (ShouldSkip("MEDIAPLAYBACK.S.C09.Rsp")) { NextTest(); return; } @@ -33978,7 +31712,7 @@ class Test_TC_MEDIAPLAYBACK_6_3 : public TestCommandBridge { break; case 2: ChipLogProgress(chipTool, " ***** Test Step 2 : Sends a Seek command\n"); - if (ShouldSkip("MEDIAPLAYBACK.S.C000B")) { + if (ShouldSkip("MEDIAPLAYBACK.S.C0B.Rsp")) { NextTest(); return; } @@ -34036,7 +31770,7 @@ class Test_TC_MEDIAPLAYBACK_6_3 : public TestCommandBridge { case 9: ChipLogProgress( chipTool, " ***** Test Step 9 : Sends a Seek command Position value beyond the furthest valid position\n"); - if (ShouldSkip("MEDIAPLAYBACK.S.C000B")) { + if (ShouldSkip("MEDIAPLAYBACK.S.C0B.Rsp")) { NextTest(); return; } @@ -34332,7 +32066,7 @@ class Test_TC_MEDIAPLAYBACK_6_4 : public TestCommandBridge { break; case 4: ChipLogProgress(chipTool, " ***** Test Step 4 : Sends a FastForward command\n"); - if (ShouldSkip("MEDIAPLAYBACK.S.C0007")) { + if (ShouldSkip("MEDIAPLAYBACK.S.C07.Rsp")) { NextTest(); return; } @@ -34356,7 +32090,7 @@ class Test_TC_MEDIAPLAYBACK_6_4 : public TestCommandBridge { break; case 7: ChipLogProgress(chipTool, " ***** Test Step 7 : Sends a FastForward command\n"); - if (ShouldSkip("MEDIAPLAYBACK.S.C0007")) { + if (ShouldSkip("MEDIAPLAYBACK.S.C07.Rsp")) { NextTest(); return; } @@ -34372,7 +32106,7 @@ class Test_TC_MEDIAPLAYBACK_6_4 : public TestCommandBridge { break; case 9: ChipLogProgress(chipTool, " ***** Test Step 9 : Sends a Rewind command to the DUT\n"); - if (ShouldSkip("MEDIAPLAYBACK.S.C0006")) { + if (ShouldSkip("MEDIAPLAYBACK.S.C06.Rsp")) { NextTest(); return; } @@ -34388,7 +32122,7 @@ class Test_TC_MEDIAPLAYBACK_6_4 : public TestCommandBridge { break; case 11: ChipLogProgress(chipTool, " ***** Test Step 11 : Reads the PlaybackSpeed attribute from the DUT\n"); - if (ShouldSkip("PICS_USER_PROMPT && MEDIAPLAYBACK.S.C0007")) { + if (ShouldSkip("PICS_USER_PROMPT && MEDIAPLAYBACK.S.C07.Rsp")) { NextTest(); return; } @@ -34396,7 +32130,7 @@ class Test_TC_MEDIAPLAYBACK_6_4 : public TestCommandBridge { break; case 12: ChipLogProgress(chipTool, " ***** Test Step 12 : Sends a Rewind command to the DUT\n"); - if (ShouldSkip("MEDIAPLAYBACK.S.C0006")) { + if (ShouldSkip("MEDIAPLAYBACK.S.C06.Rsp")) { NextTest(); return; } @@ -34428,7 +32162,7 @@ class Test_TC_MEDIAPLAYBACK_6_4 : public TestCommandBridge { break; case 16: ChipLogProgress(chipTool, " ***** Test Step 16 : Sends consecutive FastForward commands\n"); - if (ShouldSkip("PICS_USER_PROMPT && MEDIAPLAYBACK.S.C0007")) { + if (ShouldSkip("PICS_USER_PROMPT && MEDIAPLAYBACK.S.C07.Rsp")) { NextTest(); return; } @@ -34436,7 +32170,7 @@ class Test_TC_MEDIAPLAYBACK_6_4 : public TestCommandBridge { break; case 17: ChipLogProgress(chipTool, " ***** Test Step 17 : Sends consecutive Rewind commands\n"); - if (ShouldSkip("PICS_USER_PROMPT && MEDIAPLAYBACK.S.C0006")) { + if (ShouldSkip("PICS_USER_PROMPT && MEDIAPLAYBACK.S.C06.Rsp")) { NextTest(); return; } @@ -39873,13 +37607,7 @@ class Test_TC_PS_1_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("attributeList", "", "list")); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 3UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 4UL)); VerifyOrReturn(CheckConstraintContains("attributeList", value, 5UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 7UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 8UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 9UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 10UL)); NextTest(); }]; @@ -39901,14 +37629,9 @@ class Test_TC_PS_1_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("attributeList", "", "list")); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 11UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 12UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 13UL)); VerifyOrReturn(CheckConstraintContains("attributeList", value, 14UL)); VerifyOrReturn(CheckConstraintContains("attributeList", value, 15UL)); VerifyOrReturn(CheckConstraintContains("attributeList", value, 16UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 17UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 18UL)); NextTest(); }]; @@ -39931,10 +37654,7 @@ class Test_TC_PS_1_1 : public TestCommandBridge { VerifyOrReturn(CheckConstraintType("attributeList", "", "list")); VerifyOrReturn(CheckConstraintContains("attributeList", value, 26UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 27UL)); VerifyOrReturn(CheckConstraintContains("attributeList", value, 28UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 29UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 30UL)); NextTest(); }]; @@ -39957,11 +37677,6 @@ class Test_TC_PS_1_1 : public TestCommandBridge { VerifyOrReturn(CheckConstraintType("attributeList", "", "list")); VerifyOrReturn(CheckConstraintContains("attributeList", value, 19UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 20UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 21UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 22UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 23UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 24UL)); VerifyOrReturn(CheckConstraintContains("attributeList", value, 25UL)); NextTest(); @@ -46203,7 +43918,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { ChipLogProgress(chipTool, " ***** Test Step 7 : Read the Feature dependent(TSTAT.S.F01(COOL) & TSTAT.S.F02(OCC)) attribute in " "AttributeList\n"); - if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.F01")) { + if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.F02")) { NextTest(); return; } @@ -46464,12 +44179,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("attributeList", "", "list")); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 5UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 6UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 7UL)); VerifyOrReturn(CheckConstraintContains("attributeList", value, 17UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 23UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 24UL)); NextTest(); }]; @@ -46513,12 +44223,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("attributeList", "", "list")); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 3UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 4UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 8UL)); VerifyOrReturn(CheckConstraintContains("attributeList", value, 18UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 21UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 22UL)); NextTest(); }]; @@ -46585,7 +44290,6 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { VerifyOrReturn(CheckConstraintType("attributeList", "", "list")); VerifyOrReturn(CheckConstraintContains("attributeList", value, 25UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 30UL)); NextTest(); }]; @@ -55290,10 +52994,9 @@ class Test_TC_DGWIFI_2_3 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("BeaconLostCount", actualValue, 0UL)); - } + VerifyOrReturn(CheckConstraintType("beaconLostCount", "", "uint32")); + VerifyOrReturn(CheckConstraintMinValue("beaconLostCount", [value unsignedIntValue], 0UL)); + VerifyOrReturn(CheckConstraintMaxValue("beaconLostCount", [value unsignedIntValue], 4294967295UL)); NextTest(); }]; @@ -55313,10 +53016,9 @@ class Test_TC_DGWIFI_2_3 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("BeaconRxCount", actualValue, 0UL)); - } + VerifyOrReturn(CheckConstraintType("beaconRxCount", "", "uint32")); + VerifyOrReturn(CheckConstraintMinValue("beaconRxCount", [value unsignedIntValue], 0UL)); + VerifyOrReturn(CheckConstraintMaxValue("beaconRxCount", [value unsignedIntValue], 4294967295UL)); NextTest(); }]; @@ -55336,10 +53038,9 @@ class Test_TC_DGWIFI_2_3 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("PacketMulticastRxCount", actualValue, 0UL)); - } + VerifyOrReturn(CheckConstraintType("packetMulticastRxCount", "", "uint32")); + VerifyOrReturn(CheckConstraintMinValue("packetMulticastRxCount", [value unsignedIntValue], 0UL)); + VerifyOrReturn(CheckConstraintMaxValue("packetMulticastRxCount", [value unsignedIntValue], 4294967295UL)); NextTest(); }]; @@ -55359,10 +53060,9 @@ class Test_TC_DGWIFI_2_3 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("PacketMulticastTxCount", actualValue, 0UL)); - } + VerifyOrReturn(CheckConstraintType("packetMulticastTxCount", "", "uint32")); + VerifyOrReturn(CheckConstraintMinValue("packetMulticastTxCount", [value unsignedIntValue], 0UL)); + VerifyOrReturn(CheckConstraintMaxValue("packetMulticastTxCount", [value unsignedIntValue], 4294967295UL)); NextTest(); }]; @@ -55382,10 +53082,9 @@ class Test_TC_DGWIFI_2_3 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("PacketUnicastRxCount", actualValue, 0UL)); - } + VerifyOrReturn(CheckConstraintType("packetUnicastRxCount", "", "uint32")); + VerifyOrReturn(CheckConstraintMinValue("packetUnicastRxCount", [value unsignedIntValue], 0UL)); + VerifyOrReturn(CheckConstraintMaxValue("packetUnicastRxCount", [value unsignedIntValue], 4294967295UL)); NextTest(); }]; @@ -55405,10 +53104,9 @@ class Test_TC_DGWIFI_2_3 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("PacketUnicastTxCount", actualValue, 0UL)); - } + VerifyOrReturn(CheckConstraintType("packetUnicastTxCount", "", "uint32")); + VerifyOrReturn(CheckConstraintMinValue("packetUnicastTxCount", [value unsignedIntValue], 0UL)); + VerifyOrReturn(CheckConstraintMaxValue("packetUnicastTxCount", [value unsignedIntValue], 4294967295UL)); NextTest(); }]; @@ -113735,7 +111433,6 @@ void registerCommandsTests(Commands & commands) make_unique(), make_unique(), make_unique(), - make_unique(), make_unique(), make_unique(), make_unique(), @@ -113748,7 +111445,6 @@ void registerCommandsTests(Commands & commands) make_unique(), make_unique(), make_unique(), - make_unique(), make_unique(), make_unique(), make_unique(), From 513235823b2a1f6b5a299f71feef9e28c95dc1cf Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Wed, 20 Jul 2022 19:30:37 -0400 Subject: [PATCH 07/18] Include non-fabric-associated pending roots in the RootCertificates attribute. (#21016) * Include non-fabric-associated pending roots in the RootCertificates attribute. Fixes https://github.com/project-chip/connectedhomeip/issues/20791 Also moves a function that was supposed to be private from public to private. * Add unit test. --- .../operational-credentials-server.cpp | 18 +++++ src/credentials/FabricTable.cpp | 18 +++++ src/credentials/FabricTable.h | 42 ++++++++---- src/credentials/tests/TestFabricTable.cpp | 65 +++++++++++++++++++ 4 files changed, 130 insertions(+), 13 deletions(-) diff --git a/src/app/clusters/operational-credentials-server/operational-credentials-server.cpp b/src/app/clusters/operational-credentials-server/operational-credentials-server.cpp index 0894122eab8fb7..ce29aaea9c5fb1 100644 --- a/src/app/clusters/operational-credentials-server/operational-credentials-server.cpp +++ b/src/app/clusters/operational-credentials-server/operational-credentials-server.cpp @@ -206,6 +206,24 @@ CHIP_ERROR OperationalCredentialsAttrAccess::ReadRootCertificates(EndpointId end ReturnErrorOnFailure(encoder.Encode(ByteSpan{ cert })); } + { + uint8_t certBuf[kMaxCHIPCertLength]; + MutableByteSpan cert{ certBuf }; + CHIP_ERROR err = fabricTable.FetchPendingNonFabricAssociatedRootCert(cert); + if (err == CHIP_ERROR_NOT_FOUND) + { + // No pending root cert, do nothing + } + else if (err != CHIP_NO_ERROR) + { + return err; + } + else + { + ReturnErrorOnFailure(encoder.Encode(ByteSpan{ cert })); + } + } + return CHIP_NO_ERROR; }); } diff --git a/src/credentials/FabricTable.cpp b/src/credentials/FabricTable.cpp index bf380af1a74136..1829541e635e8a 100644 --- a/src/credentials/FabricTable.cpp +++ b/src/credentials/FabricTable.cpp @@ -554,6 +554,24 @@ CHIP_ERROR FabricTable::FetchRootCert(FabricIndex fabricIndex, MutableByteSpan & return mOpCertStore->GetCertificate(fabricIndex, CertChainElement::kRcac, outCert); } +CHIP_ERROR FabricTable::FetchPendingNonFabricAssociatedRootCert(MutableByteSpan & outCert) const +{ + VerifyOrReturnError(mOpCertStore != nullptr, CHIP_ERROR_INCORRECT_STATE); + if (!mStateFlags.Has(StateFlags::kIsTrustedRootPending)) + { + return CHIP_ERROR_NOT_FOUND; + } + + if (mStateFlags.Has(StateFlags::kIsAddPending)) + { + // The root certificate is already associated with a pending fabric, so + // does not exist for purposes of this API. + return CHIP_ERROR_NOT_FOUND; + } + + return FetchRootCert(mFabricIndexWithPendingState, outCert); +} + CHIP_ERROR FabricTable::FetchICACert(FabricIndex fabricIndex, MutableByteSpan & outCert) const { VerifyOrReturnError(mOpCertStore != nullptr, CHIP_ERROR_INCORRECT_STATE); diff --git a/src/credentials/FabricTable.h b/src/credentials/FabricTable.h index 68f9f9c8e132a1..4c0fbb4a3bf61b 100644 --- a/src/credentials/FabricTable.h +++ b/src/credentials/FabricTable.h @@ -514,19 +514,6 @@ class DLL_EXPORT FabricTable ConstFabricIterator begin() const { return cbegin(); } ConstFabricIterator end() const { return cend(); } - /** - * @brief Get a mutable FabricInfo entry from the table by FabricIndex. - * - * NOTE: This is private for use within the FabricTable itself. All mutations have to go through the - * FabricTable public methods that take a FabricIndex so that there are no mutations about which - * the FabricTable is unaware, since this would break expectations regarding shadow/pending - * entries used during fail-safe. - * - * @param fabricIndex - fabric index for which to get a mutable FabricInfo entry - * @return the FabricInfo entry for the fabricIndex if found, or nullptr if not found - */ - FabricInfo * GetMutableFabricByIndex(FabricIndex fabricIndex); - /** * @brief Get the RCAC (operational root certificate) associated with a fabric. * @@ -541,6 +528,22 @@ class DLL_EXPORT FabricTable */ CHIP_ERROR FetchRootCert(FabricIndex fabricIndex, MutableByteSpan & outCert) const; + /** + * @brief Get the pending root certificate which is not associated with a fabric, if there is one. + * + * If a root is pending from `AddNewPendingTrustedRootCert`, and there is no + * fabric associated with the corresponding fabric index yet + * (i.e. `AddNewPendingFabric*` has not been called yet) it is returned. + * + * @param outCert - MutableByteSpan to receive the certificate. Resized to actual size. + * @retval CHIP_NO_ERROR on success + * @retval CHIP_ERROR_BUFFER_TOO_SMALL if `outCert` is too small. + * @retval CHIP_ERROR_NOT_FOUND if there is no pending root certificate + * that's not yet associated with a fabric. + * @retval other CHIP_ERROR values on invalid arguments or internal errors. + */ + CHIP_ERROR FetchPendingNonFabricAssociatedRootCert(MutableByteSpan & outCert) const; + /** * @brief Get the ICAC (operational intermediate certificate) associated with a fabric. * @@ -948,6 +951,19 @@ class DLL_EXPORT FabricTable bool isAddition = false; }; + /** + * @brief Get a mutable FabricInfo entry from the table by FabricIndex. + * + * NOTE: This is private for use within the FabricTable itself. All mutations have to go through the + * FabricTable public methods that take a FabricIndex so that there are no mutations about which + * the FabricTable is unaware, since this would break expectations regarding shadow/pending + * entries used during fail-safe. + * + * @param fabricIndex - fabric index for which to get a mutable FabricInfo entry + * @return the FabricInfo entry for the fabricIndex if found, or nullptr if not found + */ + FabricInfo * GetMutableFabricByIndex(FabricIndex fabricIndex); + // Load a FabricInfo metatada item from storage for a given new fabric index. Returns internal error on failure. CHIP_ERROR LoadFromStorage(FabricInfo * fabric, FabricIndex newFabricIndex); diff --git a/src/credentials/tests/TestFabricTable.cpp b/src/credentials/tests/TestFabricTable.cpp index 2b8debafffa37d..c0923279a0d1f9 100644 --- a/src/credentials/tests/TestFabricTable.cpp +++ b/src/credentials/tests/TestFabricTable.cpp @@ -478,7 +478,21 @@ void TestBasicAddNocUpdateNocFlow(nlTestSuite * inSuite, void * inContext) NL_TEST_ASSERT(inSuite, saw1 == false); } + uint8_t rcacBuf[Credentials::kMaxCHIPCertLength]; + { + // No pending root cert yet. + MutableByteSpan fetchedSpan{ rcacBuf }; + NL_TEST_ASSERT(inSuite, fabricTable.FetchPendingNonFabricAssociatedRootCert(fetchedSpan) == CHIP_ERROR_NOT_FOUND); + } + NL_TEST_ASSERT_SUCCESS(inSuite, fabricTable.AddNewPendingTrustedRootCert(rcac)); + { + // Now have a pending root cert. + MutableByteSpan fetchedSpan{ rcacBuf }; + NL_TEST_ASSERT_SUCCESS(inSuite, fabricTable.FetchPendingNonFabricAssociatedRootCert(fetchedSpan)); + NL_TEST_ASSERT(inSuite, fetchedSpan.data_equal(rcac)); + } + FabricIndex newFabricIndex = kUndefinedFabricIndex; bool keyIsExternallyOwned = true; @@ -488,6 +502,11 @@ void TestBasicAddNocUpdateNocFlow(nlTestSuite * inSuite, void * inContext) keyIsExternallyOwned, &newFabricIndex)); NL_TEST_ASSERT(inSuite, newFabricIndex == 1); NL_TEST_ASSERT_EQUALS(inSuite, fabricTable.FabricCount(), 1); + { + // No more pending root cert; it's associated with a fabric now. + MutableByteSpan fetchedSpan{ rcacBuf }; + NL_TEST_ASSERT(inSuite, fabricTable.FetchPendingNonFabricAssociatedRootCert(fetchedSpan) == CHIP_ERROR_NOT_FOUND); + } // No storage yet NL_TEST_ASSERT(inSuite, storage.GetNumKeys() == numStorageKeysAtStart); @@ -1750,6 +1769,51 @@ void TestUpdateNocFailSafe(nlTestSuite * inSuite, void * inContext) } } +void TestAddRootCertFailSafe(nlTestSuite * inSuite, void * inContext) +{ + Credentials::TestOnlyLocalCertificateAuthority fabric11CertAuthority; + + chip::TestPersistentStorageDelegate storage; + + NL_TEST_ASSERT(inSuite, fabric11CertAuthority.Init().IsSuccess()); + + // Initialize a fabric table. + ScopedFabricTable fabricTableHolder; + NL_TEST_ASSERT(inSuite, fabricTableHolder.Init(&storage) == CHIP_NO_ERROR); + FabricTable & fabricTable = fabricTableHolder.GetFabricTable(); + + NL_TEST_ASSERT_EQUALS(inSuite, fabricTable.FabricCount(), 0); + + // Add a root cert, see that pending works, and that revert works + { + ByteSpan rcac = fabric11CertAuthority.GetRcac(); + + uint8_t rcacBuf[Credentials::kMaxCHIPCertLength]; + { + // No pending root cert yet. + MutableByteSpan fetchedSpan{ rcacBuf }; + NL_TEST_ASSERT(inSuite, fabricTable.FetchPendingNonFabricAssociatedRootCert(fetchedSpan) == CHIP_ERROR_NOT_FOUND); + } + + NL_TEST_ASSERT_SUCCESS(inSuite, fabricTable.AddNewPendingTrustedRootCert(rcac)); + { + // Now have a pending root cert. + MutableByteSpan fetchedSpan{ rcacBuf }; + NL_TEST_ASSERT_SUCCESS(inSuite, fabricTable.FetchPendingNonFabricAssociatedRootCert(fetchedSpan)); + NL_TEST_ASSERT(inSuite, fetchedSpan.data_equal(rcac)); + } + + // Revert + fabricTable.RevertPendingFabricData(); + + { + // No pending root cert anymore. + MutableByteSpan fetchedSpan{ rcacBuf }; + NL_TEST_ASSERT(inSuite, fabricTable.FetchPendingNonFabricAssociatedRootCert(fetchedSpan) == CHIP_ERROR_NOT_FOUND); + } + } +} + void TestSequenceErrors(nlTestSuite * inSuite, void * inContext) { // TODO: Write test @@ -2436,6 +2500,7 @@ static const nlTest sTests[] = NL_TEST_DEF("Validate fabrics are loaded from persistence at FabricTable::init", TestPersistence), NL_TEST_DEF("Test fail-safe handling during AddNOC", TestAddNocFailSafe), NL_TEST_DEF("Test fail-safe handling during UpdateNoc", TestUpdateNocFailSafe), + NL_TEST_DEF("Test fail-safe handling for root cert", TestAddRootCertFailSafe), NL_TEST_DEF("Test interlock sequencing errors", TestSequenceErrors), NL_TEST_DEF("Test fabric label changes", TestFabricLabelChange), NL_TEST_DEF("Test compressed fabric ID is properly generated", TestCompressedFabricId), From 6b1d52a357a5d7ae94bb8651b1dfba7440adfa4e Mon Sep 17 00:00:00 2001 From: Jerry Johns Date: Wed, 20 Jul 2022 18:17:26 -0700 Subject: [PATCH 08/18] Python: Support for specifying absolute timeouts for Invoke/Write (#20531) * Python: Support for specifying absolute timeouts for Invoke/Write This adds support for specifying an absolute timeout for ChipDeviceController.SendCommand and ChipDeviceController.WriteAttribute methods. This timeout is used to bound both mDNS discovery and the subsequent IM interaction. * Review feedback * Review feedback --- src/controller/python/BUILD.gn | 1 + src/controller/python/chip/ChipDeviceCtrl.py | 43 ++++++++++--- src/controller/python/chip/ChipStack.py | 15 +++-- .../python/chip/clusters/Attribute.py | 4 +- .../python/chip/clusters/Command.py | 9 ++- .../python/chip/clusters/attribute.cpp | 14 +++-- .../python/chip/clusters/command.cpp | 13 +++- .../python/chip/utils/DeviceProxyUtils.cpp | 63 +++++++++++++++++++ 8 files changed, 137 insertions(+), 25 deletions(-) create mode 100644 src/controller/python/chip/utils/DeviceProxyUtils.cpp diff --git a/src/controller/python/BUILD.gn b/src/controller/python/BUILD.gn index 5297f0d2fba9c8..6e8c612c6e2e2a 100644 --- a/src/controller/python/BUILD.gn +++ b/src/controller/python/BUILD.gn @@ -67,6 +67,7 @@ shared_library("ChipDeviceCtrl") { "chip/internal/ChipThreadWork.h", "chip/internal/CommissionerImpl.cpp", "chip/logging/LoggingRedirect.cpp", + "chip/utils/DeviceProxyUtils.cpp", ] } else { sources += [ diff --git a/src/controller/python/chip/ChipDeviceCtrl.py b/src/controller/python/chip/ChipDeviceCtrl.py index edc2944afea6aa..5aa1c14efca6df 100644 --- a/src/controller/python/chip/ChipDeviceCtrl.py +++ b/src/controller/python/chip/ChipDeviceCtrl.py @@ -563,7 +563,7 @@ def GetClusterHandler(self): return self._Cluster - def GetConnectedDeviceSync(self, nodeid, allowPASE=True): + def GetConnectedDeviceSync(self, nodeid, allowPASE=True, timeoutMs: int = None): self.CheckIsActive() returnDevice = c_void_p(None) @@ -582,13 +582,13 @@ def DeviceAvailableCallback(device, err): if allowPASE: res = self._ChipStack.Call(lambda: self._dmLib.pychip_GetDeviceBeingCommissioned( - self.devCtrl, nodeid, byref(returnDevice))) + self.devCtrl, nodeid, byref(returnDevice)), timeoutMs) if res == 0: print('Using PASE connection') return returnDevice res = self._ChipStack.Call(lambda: self._dmLib.pychip_GetConnectedDeviceByNodeId( - self.devCtrl, nodeid, DeviceAvailableCallback)) + self.devCtrl, nodeid, DeviceAvailableCallback), timeoutMs) if res != 0: raise self._ChipStack.ErrorToException(res) @@ -596,43 +596,66 @@ def DeviceAvailableCallback(device, err): # Check if the device is already set before waiting for the callback. if returnDevice.value is None: with deviceAvailableCV: - deviceAvailableCV.wait() + timeout = None + if (timeoutMs): + timeout = float(timeoutMs) / 1000 + + ret = deviceAvailableCV.wait(timeout) + if ret is False: + raise TimeoutError("Timed out waiting for DNS-SD resolution") if returnDevice.value is None: raise self._ChipStack.ErrorToException(returnErr) return returnDevice - async def SendCommand(self, nodeid: int, endpoint: int, payload: ClusterObjects.ClusterCommand, responseType=None, timedRequestTimeoutMs: int = None): + def ComputeRoundTripTimeout(self, nodeid, upperLayerProcessingTimeoutMs: int = 0): + ''' Returns a computed timeout value based on the round-trip time it takes for the peer at the other end of the session to + receive a message, process it and send it back. This is computed based on the session type, the type of transport, sleepy + characteristics of the target and a caller-provided value for the time it takes to process a message at the upper layer on + the target For group sessions. + + This will result in a session being established if one wasn't already. + ''' + device = self.GetConnectedDeviceSync(nodeid) + res = self._ChipStack.Call(lambda: self._dmLib.pychip_DeviceProxy_ComputeRoundTripTimeout( + device, upperLayerProcessingTimeoutMs)) + return res + + async def SendCommand(self, nodeid: int, endpoint: int, payload: ClusterObjects.ClusterCommand, responseType=None, timedRequestTimeoutMs: int = None, interactionTimeoutMs: int = None): ''' Send a cluster-object encapsulated command to a node and get returned a future that can be awaited upon to receive the response. If a valid responseType is passed in, that will be used to deserialize the object. If not, the type will be automatically deduced from the metadata received over the wire. timedWriteTimeoutMs: Timeout for a timed invoke request. Omit or set to 'None' to indicate a non-timed request. + interactionTimeoutMs: Overall timeout for the interaction. Omit or set to 'None' to have the SDK automatically compute the right + timeout value based on transport characteristics as well as the responsiveness of the target. ''' self.CheckIsActive() eventLoop = asyncio.get_running_loop() future = eventLoop.create_future() - device = self.GetConnectedDeviceSync(nodeid) + device = self.GetConnectedDeviceSync(nodeid, timeoutMs=interactionTimeoutMs) res = ClusterCommand.SendCommand( future, eventLoop, responseType, device, ClusterCommand.CommandPath( EndpointId=endpoint, ClusterId=payload.cluster_id, CommandId=payload.command_id, - ), payload, timedRequestTimeoutMs=timedRequestTimeoutMs) + ), payload, timedRequestTimeoutMs=timedRequestTimeoutMs, interactionTimeoutMs=interactionTimeoutMs) if res != 0: future.set_exception(self._ChipStack.ErrorToException(res)) return await future - async def WriteAttribute(self, nodeid: int, attributes: typing.List[typing.Tuple[int, ClusterObjects.ClusterAttributeDescriptor, int]], timedRequestTimeoutMs: int = None): + async def WriteAttribute(self, nodeid: int, attributes: typing.List[typing.Tuple[int, ClusterObjects.ClusterAttributeDescriptor, int]], timedRequestTimeoutMs: int = None, interactionTimeoutMs: int = None): ''' Write a list of attributes on a target node. nodeId: Target's Node ID timedWriteTimeoutMs: Timeout for a timed write request. Omit or set to 'None' to indicate a non-timed request. attributes: A list of tuples of type (endpoint, cluster-object): + interactionTimeoutMs: Overall timeout for the interaction. Omit or set to 'None' to have the SDK automatically compute the right + timeout value based on transport characteristics as well as the responsiveness of the target. E.g (1, Clusters.TestCluster.Attributes.XYZAttribute('hello')) -- Write 'hello' to the XYZ attribute on the test cluster to endpoint 1 @@ -642,7 +665,7 @@ async def WriteAttribute(self, nodeid: int, attributes: typing.List[typing.Tuple eventLoop = asyncio.get_running_loop() future = eventLoop.create_future() - device = self.GetConnectedDeviceSync(nodeid) + device = self.GetConnectedDeviceSync(nodeid, timeoutMs=interactionTimeoutMs) attrs = [] for v in attributes: @@ -654,7 +677,7 @@ async def WriteAttribute(self, nodeid: int, attributes: typing.List[typing.Tuple v[0], v[1], v[2], 1, v[1].value)) res = ClusterAttribute.WriteAttributes( - future, eventLoop, device, attrs, timedRequestTimeoutMs=timedRequestTimeoutMs) + future, eventLoop, device, attrs, timedRequestTimeoutMs=timedRequestTimeoutMs, interactionTimeoutMs=interactionTimeoutMs) if res != 0: raise self._ChipStack.ErrorToException(res) return await future diff --git a/src/controller/python/chip/ChipStack.py b/src/controller/python/chip/ChipStack.py index ef1cd597d9ef9e..ffae3d2b04fd25 100644 --- a/src/controller/python/chip/ChipStack.py +++ b/src/controller/python/chip/ChipStack.py @@ -151,10 +151,17 @@ def __call__(self): self._cv.notify_all() pythonapi.Py_DecRef(py_object(self)) - def Wait(self): + def Wait(self, timeoutMs: int = None): + timeout = None + if timeoutMs is not None: + timeout = float(timeoutMs) / 1000 + with self._cv: while self._finish is False: - self._cv.wait() + res = self._cv.wait(timeout) + if res is False: + raise TimeoutError("Timed out waiting for task to finish executing on the Matter thread") + if self._exc is not None: raise self._exc return self._res @@ -335,7 +342,7 @@ def Shutdown(self): self.devMgr = None self.callbackRes = None - def Call(self, callFunct): + def Call(self, callFunct, timeoutMs: int = None): '''Run a Python function on CHIP stack, and wait for the response. This function is a wrapper of PostTaskOnChipThread, which includes some handling of application specific logics. Calling this function on CHIP on CHIP mainloop thread will cause deadlock. @@ -344,7 +351,7 @@ def Call(self, callFunct): self.callbackRes = None self.completeEvent.clear() with self.networkLock: - res = self.PostTaskOnChipThread(callFunct).Wait() + res = self.PostTaskOnChipThread(callFunct).Wait(timeoutMs) self.completeEvent.set() if res == 0 and self.callbackRes != None: return self.callbackRes diff --git a/src/controller/python/chip/clusters/Attribute.py b/src/controller/python/chip/clusters/Attribute.py index a11d324d5890a4..87fd371cf963c3 100644 --- a/src/controller/python/chip/clusters/Attribute.py +++ b/src/controller/python/chip/clusters/Attribute.py @@ -873,7 +873,7 @@ def _OnWriteDoneCallback(closure): closure.handleDone() -def WriteAttributes(future: Future, eventLoop, device, attributes: List[AttributeWriteRequest], timedRequestTimeoutMs: int = None) -> int: +def WriteAttributes(future: Future, eventLoop, device, attributes: List[AttributeWriteRequest], timedRequestTimeoutMs: int = None, interactionTimeoutMs: int = None) -> int: handle = chip.native.GetLibraryHandle() writeargs = [] @@ -898,7 +898,7 @@ def WriteAttributes(future: Future, eventLoop, device, attributes: List[Attribut ctypes.pythonapi.Py_IncRef(ctypes.py_object(transaction)) res = builtins.chipStack.Call( lambda: handle.pychip_WriteClient_WriteAttributes( - ctypes.py_object(transaction), device, ctypes.c_uint16(0 if timedRequestTimeoutMs is None else timedRequestTimeoutMs), ctypes.c_size_t(len(attributes)), *writeargs)) + ctypes.py_object(transaction), device, ctypes.c_uint16(0 if timedRequestTimeoutMs is None else timedRequestTimeoutMs), ctypes.c_uint16(0 if interactionTimeoutMs is None else interactionTimeoutMs), ctypes.c_size_t(len(attributes)), *writeargs)) if res != 0: ctypes.pythonapi.Py_DecRef(ctypes.py_object(transaction)) return res diff --git a/src/controller/python/chip/clusters/Command.py b/src/controller/python/chip/clusters/Command.py index 7d53b21784ff5e..74101d4edb47cf 100644 --- a/src/controller/python/chip/clusters/Command.py +++ b/src/controller/python/chip/clusters/Command.py @@ -145,13 +145,18 @@ def _OnCommandSenderDoneCallback(closure): ctypes.pythonapi.Py_DecRef(ctypes.py_object(closure)) -def SendCommand(future: Future, eventLoop, responseType: Type, device, commandPath: CommandPath, payload: ClusterCommand, timedRequestTimeoutMs: int = None) -> int: +def SendCommand(future: Future, eventLoop, responseType: Type, device, commandPath: CommandPath, payload: ClusterCommand, timedRequestTimeoutMs: int = None, interactionTimeoutMs: int = None) -> int: ''' Send a cluster-object encapsulated command to a device and does the following: - On receipt of a successful data response, returns the cluster-object equivalent through the provided future. - None (on a successful response containing no data) - Raises an exception if any errors are encountered. If no response type is provided above, the type will be automatically deduced. + + If a valid timedRequestTimeoutMs is provided, a timed interaction will be initiated instead. + If a valid interactionTimeoutMs is provided, the interaction will terminate with a CHIP_ERROR_TIMEOUT if a response + has not been received within that timeout. If it isn't provided, a sensible value will be automatically computed that + accounts for the underlying characteristics of both the transport and the responsiveness of the receiver. ''' if (responseType is not None) and (not issubclass(responseType, ClusterCommand)): raise ValueError("responseType must be a ClusterCommand or None") @@ -166,7 +171,7 @@ def SendCommand(future: Future, eventLoop, responseType: Type, device, commandPa ctypes.pythonapi.Py_IncRef(ctypes.py_object(transaction)) return builtins.chipStack.Call( lambda: handle.pychip_CommandSender_SendCommand(ctypes.py_object( - transaction), device, c_uint16(0 if timedRequestTimeoutMs is None else timedRequestTimeoutMs), commandPath.EndpointId, commandPath.ClusterId, commandPath.CommandId, payloadTLV, len(payloadTLV))) + transaction), device, c_uint16(0 if timedRequestTimeoutMs is None else timedRequestTimeoutMs), commandPath.EndpointId, commandPath.ClusterId, commandPath.CommandId, payloadTLV, len(payloadTLV), ctypes.c_uint16(0 if interactionTimeoutMs is None else interactionTimeoutMs))) def Init(): diff --git a/src/controller/python/chip/clusters/attribute.cpp b/src/controller/python/chip/clusters/attribute.cpp index e4480a3bb1e059..59de72d01ffef5 100644 --- a/src/controller/python/chip/clusters/attribute.cpp +++ b/src/controller/python/chip/clusters/attribute.cpp @@ -29,6 +29,8 @@ #include #include +#include + using namespace chip; using namespace chip::app; @@ -241,7 +243,8 @@ struct __attribute__((packed)) PyReadAttributeParams // Encodes n attribute write requests, follows 3 * n arguments, in the (AttributeWritePath*=void *, uint8_t*, size_t) order. chip::ChipError::StorageType pychip_WriteClient_WriteAttributes(void * appContext, DeviceProxy * device, - uint16_t timedWriteTimeoutMs, size_t n, ...); + uint16_t timedWriteTimeoutMs, uint16_t interactionTimeoutMs, + size_t n, ...); chip::ChipError::StorageType pychip_ReadClient_ReadAttributes(void * appContext, ReadClient ** pReadClient, ReadClientCallback ** pCallback, DeviceProxy * device, uint8_t * readParamsBuf, size_t n, size_t total, ...); @@ -319,7 +322,8 @@ void pychip_ReadClient_InitCallbacks(OnReadAttributeDataCallback onReadAttribute } chip::ChipError::StorageType pychip_WriteClient_WriteAttributes(void * appContext, DeviceProxy * device, - uint16_t timedWriteTimeoutMs, size_t n, ...) + uint16_t timedWriteTimeoutMs, uint16_t interactionTimeoutMs, + size_t n, ...) { CHIP_ERROR err = CHIP_NO_ERROR; @@ -331,7 +335,7 @@ chip::ChipError::StorageType pychip_WriteClient_WriteAttributes(void * appContex va_list args; va_start(args, n); - VerifyOrExit(device != nullptr && device->GetSecureSession().HasValue(), err = CHIP_ERROR_INCORRECT_STATE); + VerifyOrExit(device != nullptr && device->GetSecureSession().HasValue(), err = CHIP_ERROR_MISSING_SECURE_SESSION); { for (size_t i = 0; i < n; i++) @@ -359,7 +363,9 @@ chip::ChipError::StorageType pychip_WriteClient_WriteAttributes(void * appContex } } - SuccessOrExit(err = client->SendWriteRequest(device->GetSecureSession().Value())); + SuccessOrExit(err = client->SendWriteRequest(device->GetSecureSession().Value(), + interactionTimeoutMs != 0 ? System::Clock::Milliseconds32(interactionTimeoutMs) + : System::Clock::kZero)); client.release(); callback.release(); diff --git a/src/controller/python/chip/clusters/command.cpp b/src/controller/python/chip/clusters/command.cpp index e87a2252048b26..342e624698ed18 100644 --- a/src/controller/python/chip/clusters/command.cpp +++ b/src/controller/python/chip/clusters/command.cpp @@ -35,7 +35,8 @@ extern "C" { chip::ChipError::StorageType pychip_CommandSender_SendCommand(void * appContext, DeviceProxy * device, uint16_t timedRequestTimeoutMs, chip::EndpointId endpointId, chip::ClusterId clusterId, chip::CommandId commandId, - const uint8_t * payload, size_t length); + const uint8_t * payload, size_t length, + uint16_t interactionTimeoutMs); } namespace chip { @@ -127,10 +128,12 @@ void pychip_CommandSender_InitCallbacks(OnCommandSenderResponseCallback onComman chip::ChipError::StorageType pychip_CommandSender_SendCommand(void * appContext, DeviceProxy * device, uint16_t timedRequestTimeoutMs, chip::EndpointId endpointId, chip::ClusterId clusterId, chip::CommandId commandId, - const uint8_t * payload, size_t length) + const uint8_t * payload, size_t length, uint16_t interactionTimeoutMs) { CHIP_ERROR err = CHIP_NO_ERROR; + VerifyOrReturnError(device->GetSecureSession().HasValue(), CHIP_ERROR_MISSING_SECURE_SESSION.AsInteger()); + std::unique_ptr callback = std::make_unique(appContext); std::unique_ptr sender = std::make_unique(callback.get(), device->GetExchangeManager(), /* is timed request */ timedRequestTimeoutMs != 0); @@ -151,7 +154,11 @@ chip::ChipError::StorageType pychip_CommandSender_SendCommand(void * appContext, SuccessOrExit(err = sender->FinishCommand(timedRequestTimeoutMs != 0 ? Optional(timedRequestTimeoutMs) : Optional::Missing())); - SuccessOrExit(err = device->SendCommands(sender.get())); + + SuccessOrExit(err = sender->SendCommandRequest(device->GetSecureSession().Value(), + interactionTimeoutMs != 0 + ? MakeOptional(System::Clock::Milliseconds32(interactionTimeoutMs)) + : Optional::Missing())); sender.release(); callback.release(); diff --git a/src/controller/python/chip/utils/DeviceProxyUtils.cpp b/src/controller/python/chip/utils/DeviceProxyUtils.cpp new file mode 100644 index 00000000000000..ea6add7a039609 --- /dev/null +++ b/src/controller/python/chip/utils/DeviceProxyUtils.cpp @@ -0,0 +1,63 @@ +/* + * + * Copyright (c) 2020-2022 Project CHIP Authors + * Copyright (c) 2019-2020 Google LLC. + * Copyright (c) 2013-2018 Nest Labs, Inc. + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @file + * Implementation of the native methods expected by the Python + * version of Chip Device Manager. + * + */ + +#include "system/SystemClock.h" +#include +#include +#include + +using namespace chip; + +static_assert(std::is_same::value, "python assumes CHIP_ERROR maps to c_uint32"); + +extern "C" { + +/** + * @brief + * + * This computes the value for a timeout based on the round trip time it takes for a message to be sent to a peer, + * the message to be processed given the upperLayerProcessingTimeoutMs argument, and a response to come back. + * + * See Session::ComputeRoundTripTimeout for more specific details. + * + * A valid DeviceProxy pointer with a valid, established session is required for this method. + * + * + */ +uint32_t pychip_DeviceProxy_ComputeRoundTripTimeout(DeviceProxy * device, uint32_t upperLayerProcessingTimeoutMs) +{ + VerifyOrDie(device != nullptr); + + auto * deviceProxy = static_cast(device); + VerifyOrDie(deviceProxy->GetSecureSession().HasValue()); + + return deviceProxy->GetSecureSession() + .Value() + ->ComputeRoundTripTimeout(System::Clock::Milliseconds32(upperLayerProcessingTimeoutMs)) + .count(); +} +} From 077128df786644b46b91812657ad10194f7d4194 Mon Sep 17 00:00:00 2001 From: Amon Al-Khatib <108832650+ajwak@users.noreply.github.com> Date: Thu, 21 Jul 2022 01:36:50 +0000 Subject: [PATCH 09/18] Pass controller vendor ID when creating a commisioner instance (#21032) * Pass controller vendor ID when creating a commisioner instance * clean up clang-format issue * clean up clang-format issue 2 --- .../java/AndroidDeviceControllerWrapper.cpp | 4 ++-- .../java/AndroidDeviceControllerWrapper.h | 16 ++++++++-------- src/controller/java/CHIPDeviceController-JNI.cpp | 8 +++++++- .../chip/devicecontroller/ControllerParams.java | 13 +++++++++++++ 4 files changed, 30 insertions(+), 11 deletions(-) diff --git a/src/controller/java/AndroidDeviceControllerWrapper.cpp b/src/controller/java/AndroidDeviceControllerWrapper.cpp index b3c969c2577b74..494bb5694c86e1 100644 --- a/src/controller/java/AndroidDeviceControllerWrapper.cpp +++ b/src/controller/java/AndroidDeviceControllerWrapper.cpp @@ -74,7 +74,7 @@ AndroidDeviceControllerWrapper * AndroidDeviceControllerWrapper::AllocateNew( chip::Inet::EndPointManager * tcpEndPointManager, chip::Inet::EndPointManager * udpEndPointManager, AndroidOperationalCredentialsIssuerPtr opCredsIssuerPtr, jobject keypairDelegate, jbyteArray rootCertificate, jbyteArray intermediateCertificate, jbyteArray nodeOperationalCertificate, - jbyteArray ipkEpochKey, uint16_t listenPort, CHIP_ERROR * errInfoOnFailure) + jbyteArray ipkEpochKey, uint16_t listenPort, uint16_t controllerVendorId, CHIP_ERROR * errInfoOnFailure) { if (errInfoOnFailure == nullptr) { @@ -143,7 +143,7 @@ AndroidDeviceControllerWrapper * AndroidDeviceControllerWrapper::AllocateNew( initParams.bleLayer = DeviceLayer::ConnectivityMgr().GetBleLayer(); #endif initParams.listenPort = listenPort; - setupParams.controllerVendorId = VendorId::NotSpecified; + setupParams.controllerVendorId = static_cast(controllerVendorId); setupParams.pairingDelegate = wrapper.get(); setupParams.operationalCredentialsDelegate = opCredsIssuer; initParams.fabricIndependentStorage = wrapperStorage; diff --git a/src/controller/java/AndroidDeviceControllerWrapper.h b/src/controller/java/AndroidDeviceControllerWrapper.h index a8c374ac7ede0f..668c51d5e4c0cb 100644 --- a/src/controller/java/AndroidDeviceControllerWrapper.h +++ b/src/controller/java/AndroidDeviceControllerWrapper.h @@ -113,16 +113,16 @@ class AndroidDeviceControllerWrapper : public chip::Controller::DevicePairingDel * @param[in] nodeOperationalCertificate an X.509 DER-encoded operational certificate for this node * @param[in] ipkEpochKey the IPK epoch key to use for this node * @param[in] listenPort the UDP port to listen on + * @param[in] controllerVendorId the vendor ID identifying the controller * @param[out] errInfoOnFailure a pointer to a CHIP_ERROR that will be populated if this method returns nullptr */ - static AndroidDeviceControllerWrapper * AllocateNew(JavaVM * vm, jobject deviceControllerObj, chip::NodeId nodeId, - const chip::CATValues & cats, chip::System::Layer * systemLayer, - chip::Inet::EndPointManager * tcpEndPointManager, - chip::Inet::EndPointManager * udpEndPointManager, - AndroidOperationalCredentialsIssuerPtr opCredsIssuer, - jobject keypairDelegate, jbyteArray rootCertificate, - jbyteArray intermediateCertificate, jbyteArray nodeOperationalCertificate, - jbyteArray ipkEpochKey, uint16_t listenPort, CHIP_ERROR * errInfoOnFailure); + static AndroidDeviceControllerWrapper * + AllocateNew(JavaVM * vm, jobject deviceControllerObj, chip::NodeId nodeId, const chip::CATValues & cats, + chip::System::Layer * systemLayer, chip::Inet::EndPointManager * tcpEndPointManager, + chip::Inet::EndPointManager * udpEndPointManager, + AndroidOperationalCredentialsIssuerPtr opCredsIssuer, jobject keypairDelegate, jbyteArray rootCertificate, + jbyteArray intermediateCertificate, jbyteArray nodeOperationalCertificate, jbyteArray ipkEpochKey, + uint16_t listenPort, uint16_t controllerVendorId, CHIP_ERROR * errInfoOnFailure); private: using ChipDeviceControllerPtr = std::unique_ptr; diff --git a/src/controller/java/CHIPDeviceController-JNI.cpp b/src/controller/java/CHIPDeviceController-JNI.cpp index 9b39ed0748c8e5..7277ab1f91f580 100644 --- a/src/controller/java/CHIPDeviceController-JNI.cpp +++ b/src/controller/java/CHIPDeviceController-JNI.cpp @@ -169,6 +169,11 @@ JNI_METHOD(jlong, newDeviceController)(JNIEnv * env, jobject self, jobject contr err = chip::JniReferences::GetInstance().FindMethod(env, controllerParams, "getUdpListenPort", "()I", &getUdpListenPort); SuccessOrExit(err); + jmethodID getControllerVendorId; + err = chip::JniReferences::GetInstance().FindMethod(env, controllerParams, "getControllerVendorId", "()I", + &getControllerVendorId); + SuccessOrExit(err); + jmethodID getKeypairDelegate; err = chip::JniReferences::GetInstance().FindMethod(env, controllerParams, "getKeypairDelegate", "()Lchip/devicecontroller/KeypairDelegate;", &getKeypairDelegate); @@ -194,6 +199,7 @@ JNI_METHOD(jlong, newDeviceController)(JNIEnv * env, jobject self, jobject contr { uint16_t listenPort = env->CallIntMethod(controllerParams, getUdpListenPort); + uint16_t controllerVendorId = env->CallIntMethod(controllerParams, getControllerVendorId); jobject keypairDelegate = env->CallObjectMethod(controllerParams, getKeypairDelegate); jbyteArray rootCertificate = (jbyteArray) env->CallObjectMethod(controllerParams, getRootCertificate); jbyteArray intermediateCertificate = (jbyteArray) env->CallObjectMethod(controllerParams, getIntermediateCertificate); @@ -205,7 +211,7 @@ JNI_METHOD(jlong, newDeviceController)(JNIEnv * env, jobject self, jobject contr wrapper = AndroidDeviceControllerWrapper::AllocateNew( sJVM, self, kLocalDeviceId, chip::kUndefinedCATs, &DeviceLayer::SystemLayer(), DeviceLayer::TCPEndPointManager(), DeviceLayer::UDPEndPointManager(), std::move(opCredsIssuer), keypairDelegate, rootCertificate, intermediateCertificate, - operationalCertificate, ipk, listenPort, &err); + operationalCertificate, ipk, listenPort, controllerVendorId, &err); SuccessOrExit(err); } diff --git a/src/controller/java/src/chip/devicecontroller/ControllerParams.java b/src/controller/java/src/chip/devicecontroller/ControllerParams.java index ee7f7d09d63faa..1caca6903cac09 100644 --- a/src/controller/java/src/chip/devicecontroller/ControllerParams.java +++ b/src/controller/java/src/chip/devicecontroller/ControllerParams.java @@ -6,6 +6,7 @@ public final class ControllerParams { private final int udpListenPort; + private final int controllerVendorId; @Nullable private final KeypairDelegate keypairDelegate; @Nullable private final byte[] rootCertificate; @Nullable private final byte[] intermediateCertificate; @@ -17,6 +18,7 @@ public final class ControllerParams { /** @param udpListenPort the UDP listening port, or 0 to pick any available port. */ private ControllerParams(Builder builder) { this.udpListenPort = builder.udpListenPort; + this.controllerVendorId = builder.controllerVendorId; this.keypairDelegate = builder.keypairDelegate; this.rootCertificate = builder.rootCertificate; this.intermediateCertificate = builder.intermediateCertificate; @@ -29,6 +31,10 @@ public int getUdpListenPort() { return udpListenPort; } + public int getControllerVendorId() { + return controllerVendorId; + } + public KeypairDelegate getKeypairDelegate() { return keypairDelegate; } @@ -70,6 +76,7 @@ public static Builder newBuilder(OperationalKeyConfig operationalKeyConfig) { /** Builder for {@link ControllerParams}. */ public static class Builder { private int udpListenPort = LEGACY_GLOBAL_CHIP_PORT + 1; + private int controllerVendorId = 0xFFFF; @Nullable private KeypairDelegate keypairDelegate = null; @Nullable private byte[] rootCertificate = null; @Nullable private byte[] intermediateCertificate = null; @@ -86,6 +93,12 @@ public Builder setUdpListenPort(int udpListenPort) { return this; } + /** Sets the vendor ID associated with this controller instance. */ + public Builder setControllerVendorId(int controllerVendorId) { + this.controllerVendorId = controllerVendorId; + return this; + } + public Builder setKeypairDelegate(KeypairDelegate keypairDelegate) { this.keypairDelegate = keypairDelegate; return this; From d5fd062b9fff4b7f5f152147629907ae2f069d00 Mon Sep 17 00:00:00 2001 From: cpagravel Date: Wed, 20 Jul 2022 21:02:45 -0700 Subject: [PATCH 10/18] Chef - Separate Chef build noip into separate step (#21011) --- integrations/cloudbuild/chef.yaml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/integrations/cloudbuild/chef.yaml b/integrations/cloudbuild/chef.yaml index 6c14fc1cec831c..ce4145250ef011 100644 --- a/integrations/cloudbuild/chef.yaml +++ b/integrations/cloudbuild/chef.yaml @@ -18,8 +18,6 @@ steps: args: - ./examples/chef/chef.py --build_all --keep_going --build_exclude noip - - ./examples/chef/chef.py --build_all --keep_going --build_include - linux_arm64_ipv6only.*noip id: CompileAll waitFor: - Bootstrap @@ -28,6 +26,20 @@ steps: - name: pwenv path: /pwenv + - name: "connectedhomeip/chip-build-vscode:0.5.84" + env: + - PW_ENVIRONMENT_ROOT=/pwenv + args: + - ./examples/chef/chef.py --build_all --keep_going --build_include + linux_arm64_ipv6only.*noip + id: CompileNoip + waitFor: + - CompileAll + entrypoint: ./scripts/run_in_build_env.sh + volumes: + - name: pwenv + path: /pwenv + logsBucket: matter-build-automation-build-logs # Global timeout for all steps From e1110c1baa95dc7ecf45073bff3150c947734fc8 Mon Sep 17 00:00:00 2001 From: Jerry Johns Date: Thu, 21 Jul 2022 00:15:40 -0700 Subject: [PATCH 11/18] ExchangeHolder: A RAII'fied, safer, hands-free construct for EC clean-up management (#20237) * ExchangeHolder An object for managing clean-up of ExchangeContexts. * Review feedback * Fixed up ReadHandler as well --- src/app/InteractionModelEngine.cpp | 4 +- src/app/ReadClient.cpp | 101 ++--- src/app/ReadClient.h | 4 +- src/app/ReadHandler.cpp | 96 ++--- src/app/ReadHandler.h | 18 +- src/app/reporting/Engine.cpp | 11 +- src/app/tests/TestReadInteraction.cpp | 3 - src/messaging/BUILD.gn | 1 + src/messaging/ExchangeContext.cpp | 13 + src/messaging/ExchangeContext.h | 15 +- src/messaging/ExchangeDelegate.h | 28 ++ src/messaging/ExchangeHolder.h | 140 +++++++ src/messaging/tests/BUILD.gn | 1 + src/messaging/tests/TestExchangeHolder.cpp | 441 +++++++++++++++++++++ 14 files changed, 697 insertions(+), 179 deletions(-) create mode 100644 src/messaging/ExchangeHolder.h create mode 100644 src/messaging/tests/TestExchangeHolder.cpp diff --git a/src/app/InteractionModelEngine.cpp b/src/app/InteractionModelEngine.cpp index 44aad058f9ee7f..d6dbc2058836b6 100644 --- a/src/app/InteractionModelEngine.cpp +++ b/src/app/InteractionModelEngine.cpp @@ -664,7 +664,7 @@ bool InteractionModelEngine::TrimFabricForSubscriptions(FabricIndex aFabricIndex eventPathsSubscribedByCurrentFabric > perFabricPathCapacity || subscriptionsEstablishedByCurrentFabric > perFabricSubscriptionCapacity)) { - candidate->Abort(); + candidate->Close(); return true; } return false; @@ -847,7 +847,7 @@ bool InteractionModelEngine::TrimFabricForRead(FabricIndex aFabricIndex) // Always evict the transactions on PASE sessions if the fabric table is full. (aFabricIndex == kUndefinedFabricIndex && mpFabricTable->FabricCount() == GetConfigMaxFabrics()))) { - candidate->Abort(); + candidate->Close(); return true; } return false; diff --git a/src/app/ReadClient.cpp b/src/app/ReadClient.cpp index 5c60e94986cd62..831d0c60bd7520 100644 --- a/src/app/ReadClient.cpp +++ b/src/app/ReadClient.cpp @@ -74,6 +74,7 @@ static void DefaultResubscribePolicy(uint32_t aNumCumulativeRetries, uint32_t & ReadClient::ReadClient(InteractionModelEngine * apImEngine, Messaging::ExchangeManager * apExchangeMgr, Callback & apCallback, InteractionType aInteractionType) : + mExchange(*this), mpCallback(apCallback) { // Error if already initialized. @@ -110,8 +111,6 @@ void ReadClient::StopResubscription() ReadClient::~ReadClient() { - Abort(); - if (IsSubscriptionType()) { CancelLivenessCheckTimer(); @@ -129,18 +128,6 @@ ReadClient::~ReadClient() void ReadClient::Close(CHIP_ERROR aError) { - // OnDone below can destroy us before we unwind all the way back into the - // exchange code and it tries to close itself. Make sure that it doesn't - // try to notify us that it's closing, since we will be dead. - // - // For more details, see #10344. - if (mpExchangeCtx != nullptr) - { - mpExchangeCtx->SetDelegate(nullptr); - } - - mpExchangeCtx = nullptr; - if (IsReadType()) { if (aError != CHIP_NO_ERROR) @@ -284,20 +271,22 @@ CHIP_ERROR ReadClient::SendReadRequest(ReadPrepareParams & aReadPrepareParams) VerifyOrReturnError(aReadPrepareParams.mSessionHolder, CHIP_ERROR_MISSING_SECURE_SESSION); - mpExchangeCtx = mpExchangeMgr->NewContext(aReadPrepareParams.mSessionHolder.Get().Value(), this); - VerifyOrReturnError(mpExchangeCtx != nullptr, err = CHIP_ERROR_NO_MEMORY); + auto exchange = mpExchangeMgr->NewContext(aReadPrepareParams.mSessionHolder.Get().Value(), this); + VerifyOrReturnError(exchange != nullptr, err = CHIP_ERROR_NO_MEMORY); + + mExchange.Grab(exchange); if (aReadPrepareParams.mTimeout == System::Clock::kZero) { - mpExchangeCtx->UseSuggestedResponseTimeout(app::kExpectedIMProcessingTime); + mExchange->UseSuggestedResponseTimeout(app::kExpectedIMProcessingTime); } else { - mpExchangeCtx->SetResponseTimeout(aReadPrepareParams.mTimeout); + mExchange->SetResponseTimeout(aReadPrepareParams.mTimeout); } - ReturnErrorOnFailure(mpExchangeCtx->SendMessage(Protocols::InteractionModel::MsgType::ReadRequest, std::move(msgBuf), - Messaging::SendFlags(Messaging::SendMessageFlags::kExpectResponse))); + ReturnErrorOnFailure(mExchange->SendMessage(Protocols::InteractionModel::MsgType::ReadRequest, std::move(msgBuf), + Messaging::SendFlags(Messaging::SendMessageFlags::kExpectResponse))); mPeerNodeId = aReadPrepareParams.mSessionHolder->AsSecureSession()->GetPeerNodeId(); mFabricIndex = aReadPrepareParams.mSessionHolder->GetFabricIndex(); @@ -355,6 +344,7 @@ CHIP_ERROR ReadClient::BuildDataVersionFilterList(DataVersionFilterIBs::Builder break; } } + if (!intersected) { continue; @@ -405,20 +395,13 @@ CHIP_ERROR ReadClient::OnMessageReceived(Messaging::ExchangeContext * apExchange } else if (aPayloadHeader.HasMessageType(Protocols::InteractionModel::MsgType::SubscribeResponse)) { - VerifyOrExit(apExchangeContext == mpExchangeCtx, err = CHIP_ERROR_INCORRECT_STATE); + VerifyOrExit(apExchangeContext == mExchange.Get(), err = CHIP_ERROR_INCORRECT_STATE); err = ProcessSubscribeResponse(std::move(aPayload)); SuccessOrExit(err); - - // - // Null out the delegate and context as SubscribeResponse is the last message the Subscribe transaction and - // the exchange layer will automatically close the exchange. - // - mpExchangeCtx->SetDelegate(nullptr); - mpExchangeCtx = nullptr; } else if (aPayloadHeader.HasMessageType(Protocols::InteractionModel::MsgType::StatusResponse)) { - VerifyOrExit(apExchangeContext == mpExchangeCtx, err = CHIP_ERROR_INCORRECT_STATE); + VerifyOrExit(apExchangeContext == mExchange.Get(), err = CHIP_ERROR_INCORRECT_STATE); err = StatusResponse::ProcessStatusResponse(std::move(aPayload)); SuccessOrExit(err); } @@ -436,38 +419,10 @@ CHIP_ERROR ReadClient::OnMessageReceived(Messaging::ExchangeContext * apExchange return err; } -void ReadClient::Abort() -{ - // - // If the exchange context hasn't already been gracefully closed - // (signaled by setting it to null), then we need to forcibly - // tear it down. - // - if (mpExchangeCtx != nullptr) - { - // We might be a delegate for this exchange, and we don't want the - // OnExchangeClosing notification in that case. Null out the delegate - // to avoid that. - // - // TODO: This makes all sorts of assumptions about what the delegate is - // (notice the "might" above!) that might not hold in practice. We - // really need a better solution here.... - mpExchangeCtx->SetDelegate(nullptr); - mpExchangeCtx->Abort(); - mpExchangeCtx = nullptr; - } -} - CHIP_ERROR ReadClient::OnUnsolicitedReportData(Messaging::ExchangeContext * apExchangeContext, System::PacketBufferHandle && aPayload) { - mpExchangeCtx = apExchangeContext; - - // - // Let's take over further message processing on this exchange from the IM. - // This is only relevant for reports during post-subscription. - // - mpExchangeCtx->SetDelegate(this); + mExchange.Grab(apExchangeContext); CHIP_ERROR err = ProcessReportData(std::move(aPayload)); if (err != CHIP_NO_ERROR) @@ -591,12 +546,7 @@ CHIP_ERROR ReadClient::ProcessReportData(System::PacketBufferHandle && aPayload) bool noResponseExpected = IsSubscriptionActive() && !mPendingMoreChunks; err = StatusResponse::Send(err == CHIP_NO_ERROR ? Protocols::InteractionModel::Status::Success : Protocols::InteractionModel::Status::InvalidSubscription, - mpExchangeCtx, !noResponseExpected); - - if (noResponseExpected || (err != CHIP_NO_ERROR)) - { - mpExchangeCtx = nullptr; - } + mExchange.Get(), !noResponseExpected); } mIsPrimingReports = false; @@ -756,11 +706,14 @@ CHIP_ERROR ReadClient::ProcessEventReportIBs(TLV::TLVReader & aEventReportIBsRea CHIP_ERROR ReadClient::RefreshLivenessCheckTimer() { CHIP_ERROR err = CHIP_NO_ERROR; + CancelLivenessCheckTimer(); - VerifyOrReturnError(mpExchangeCtx != nullptr, err = CHIP_ERROR_INCORRECT_STATE); - VerifyOrReturnError(mpExchangeCtx->HasSessionHandle(), err = CHIP_ERROR_INCORRECT_STATE); - System::Clock::Timeout timeout = System::Clock::Seconds16(mMaxInterval) + mpExchangeCtx->GetSessionHandle()->GetAckTimeout(); + VerifyOrReturnError(mExchange, CHIP_ERROR_INCORRECT_STATE); + VerifyOrReturnError(mExchange->HasSessionHandle(), CHIP_ERROR_INCORRECT_STATE); + + System::Clock::Timeout timeout = System::Clock::Seconds16(mMaxInterval) + mExchange->GetSessionHandle()->GetAckTimeout(); + // EFR32/MBED/INFINION/K32W's chrono count return long unsinged, but other platform returns unsigned ChipLogProgress(DataManagement, "Refresh LivenessCheckTime for %lu milliseconds with SubscriptionId = 0x%08" PRIx32 @@ -944,20 +897,22 @@ CHIP_ERROR ReadClient::SendSubscribeRequestImpl(const ReadPrepareParams & aReadP VerifyOrReturnError(aReadPrepareParams.mSessionHolder, CHIP_ERROR_MISSING_SECURE_SESSION); - mpExchangeCtx = mpExchangeMgr->NewContext(aReadPrepareParams.mSessionHolder.Get().Value(), this); - VerifyOrReturnError(mpExchangeCtx != nullptr, CHIP_ERROR_NO_MEMORY); + auto exchange = mpExchangeMgr->NewContext(aReadPrepareParams.mSessionHolder.Get().Value(), this); + VerifyOrReturnError(exchange != nullptr, CHIP_ERROR_NO_MEMORY); + + mExchange.Grab(exchange); if (aReadPrepareParams.mTimeout == System::Clock::kZero) { - mpExchangeCtx->UseSuggestedResponseTimeout(app::kExpectedIMProcessingTime); + mExchange->UseSuggestedResponseTimeout(app::kExpectedIMProcessingTime); } else { - mpExchangeCtx->SetResponseTimeout(aReadPrepareParams.mTimeout); + mExchange->SetResponseTimeout(aReadPrepareParams.mTimeout); } - ReturnErrorOnFailure(mpExchangeCtx->SendMessage(Protocols::InteractionModel::MsgType::SubscribeRequest, std::move(msgBuf), - Messaging::SendFlags(Messaging::SendMessageFlags::kExpectResponse))); + ReturnErrorOnFailure(mExchange->SendMessage(Protocols::InteractionModel::MsgType::SubscribeRequest, std::move(msgBuf), + Messaging::SendFlags(Messaging::SendMessageFlags::kExpectResponse))); mPeerNodeId = aReadPrepareParams.mSessionHolder->AsSecureSession()->GetPeerNodeId(); mFabricIndex = aReadPrepareParams.mSessionHolder->GetFabricIndex(); diff --git a/src/app/ReadClient.h b/src/app/ReadClient.h index a4514e943f33f4..0c55d1953371e0 100644 --- a/src/app/ReadClient.h +++ b/src/app/ReadClient.h @@ -40,6 +40,7 @@ #include #include #include +#include #include #include #include @@ -368,7 +369,6 @@ class ReadClient : public Messaging::ExchangeDelegate CHIP_ERROR ProcessAttributeReportIBs(TLV::TLVReader & aAttributeDataIBsReader); CHIP_ERROR ProcessEventReportIBs(TLV::TLVReader & aEventReportIBsReader); - void ClearExchangeContext() { mpExchangeCtx = nullptr; } static void OnLivenessTimeoutCallback(System::Layer * apSystemLayer, void * apAppState); CHIP_ERROR ProcessSubscribeResponse(System::PacketBufferHandle && aPayload); CHIP_ERROR RefreshLivenessCheckTimer(); @@ -415,7 +415,7 @@ class ReadClient : public Messaging::ExchangeDelegate CHIP_ERROR GetMinEventNumber(const ReadPrepareParams & aReadPrepareParams, Optional & aEventMin); Messaging::ExchangeManager * mpExchangeMgr = nullptr; - Messaging::ExchangeContext * mpExchangeCtx = nullptr; + Messaging::ExchangeHolder mExchange; Callback & mpCallback; ClientState mState = ClientState::Idle; bool mIsReporting = false; diff --git a/src/app/ReadHandler.cpp b/src/app/ReadHandler.cpp index d80292233fdcd8..0b68e02d1cec53 100644 --- a/src/app/ReadHandler.cpp +++ b/src/app/ReadHandler.cpp @@ -39,46 +39,20 @@ namespace app { ReadHandler::ReadHandler(ManagementCallback & apCallback, Messaging::ExchangeContext * apExchangeContext, InteractionType aInteractionType) : + mExchangeCtx(*this), mManagementCallback(apCallback) { - mpExchangeCtx = apExchangeContext; + VerifyOrDie(apExchangeContext != nullptr); + + mExchangeCtx.Grab(apExchangeContext); + mInteractionType = aInteractionType; mLastWrittenEventsBytes = 0; mTransactionStartGeneration = InteractionModelEngine::GetInstance()->GetReportingEngine().GetDirtySetGeneration(); mFlags.ClearAll(); mFlags.Set(ReadHandlerFlags::PrimingReports, true); - if (apExchangeContext != nullptr) - { - apExchangeContext->SetDelegate(this); - mSessionHandle.Grab(mpExchangeCtx->GetSessionHandle()); - } -} - -void ReadHandler::Abort(bool aCalledFromDestructor) -{ - // - // If the exchange context hasn't already been gracefully closed - // (signaled by setting it to null), then we need to forcibly - // tear it down. - // - if (mpExchangeCtx != nullptr) - { - // We might be a delegate for this exchange, and we don't want the - // OnExchangeClosing notification in that case. Null out the delegate - // to avoid that. - // - // TODO: This makes all sorts of assumptions about what the delegate is - // (notice the "might" above!) that might not hold in practice. We - // really need a better solution here.... - mpExchangeCtx->SetDelegate(nullptr); - mpExchangeCtx->Abort(); - mpExchangeCtx = nullptr; - } - if (!aCalledFromDestructor) - { - Close(); - } + mSessionHandle.Grab(mExchangeCtx->GetSessionHandle()); } ReadHandler::~ReadHandler() @@ -89,8 +63,6 @@ ReadHandler::~ReadHandler() appCallback->OnSubscriptionTerminated(*this); } - Abort(true); - if (IsType(InteractionType::Subscribe)) { InteractionModelEngine::GetInstance()->GetExchangeManager()->GetSessionManager()->SystemLayer()->CancelTimer( @@ -111,12 +83,6 @@ ReadHandler::~ReadHandler() void ReadHandler::Close() { - if (mpExchangeCtx != nullptr) - { - mpExchangeCtx->SetDelegate(nullptr); - mpExchangeCtx = nullptr; - } - MoveToState(HandlerState::AwaitingDestruction); mManagementCallback.OnDone(*this); } @@ -158,7 +124,7 @@ CHIP_ERROR ReadHandler::OnStatusResponse(Messaging::ExchangeContext * apExchange case HandlerState::AwaitingReportResponse: if (IsChunkedReport()) { - mpExchangeCtx->WillSendMessage(); + mExchangeCtx->WillSendMessage(); } else if (IsType(InteractionType::Subscribe)) { @@ -166,9 +132,6 @@ CHIP_ERROR ReadHandler::OnStatusResponse(Messaging::ExchangeContext * apExchange { err = SendSubscribeResponse(); - mpExchangeCtx = nullptr; - SuccessOrExit(err); - mFlags.Set(ReadHandlerFlags::ActiveSubscription); auto * appCallback = mManagementCallback.GetAppCallback(); @@ -177,10 +140,6 @@ CHIP_ERROR ReadHandler::OnStatusResponse(Messaging::ExchangeContext * apExchange appCallback->OnSubscriptionEstablished(*this); } } - else - { - mpExchangeCtx = nullptr; - } } else { @@ -215,18 +174,18 @@ CHIP_ERROR ReadHandler::SendStatusReport(Protocols::InteractionModel::Status aSt VerifyOrReturnLogError(IsReportable(), CHIP_ERROR_INCORRECT_STATE); if (IsPriming() || IsChunkedReport()) { - mSessionHandle.Grab(mpExchangeCtx->GetSessionHandle()); + mSessionHandle.Grab(mExchangeCtx->GetSessionHandle()); } else { - VerifyOrReturnLogError(mpExchangeCtx == nullptr, CHIP_ERROR_INCORRECT_STATE); + VerifyOrReturnLogError(!mExchangeCtx, CHIP_ERROR_INCORRECT_STATE); VerifyOrReturnLogError(mSessionHandle, CHIP_ERROR_INCORRECT_STATE); - mpExchangeCtx = InteractionModelEngine::GetInstance()->GetExchangeManager()->NewContext(mSessionHandle.Get().Value(), this); + auto exchange = InteractionModelEngine::GetInstance()->GetExchangeManager()->NewContext(mSessionHandle.Get().Value(), this); + mExchangeCtx.Grab(exchange); } - VerifyOrReturnLogError(mpExchangeCtx != nullptr, CHIP_ERROR_INCORRECT_STATE); - return StatusResponse::Send(aStatus, mpExchangeCtx, - /* aExpectResponse = */ false); + VerifyOrReturnLogError(mExchangeCtx, CHIP_ERROR_INCORRECT_STATE); + return StatusResponse::Send(aStatus, mExchangeCtx.Get(), /* aExpectResponse = */ false); } CHIP_ERROR ReadHandler::SendReportData(System::PacketBufferHandle && aPayload, bool aMoreChunks) @@ -234,16 +193,17 @@ CHIP_ERROR ReadHandler::SendReportData(System::PacketBufferHandle && aPayload, b VerifyOrReturnLogError(IsReportable(), CHIP_ERROR_INCORRECT_STATE); if (IsPriming() || IsChunkedReport()) { - mSessionHandle.Grab(mpExchangeCtx->GetSessionHandle()); + mSessionHandle.Grab(mExchangeCtx->GetSessionHandle()); } else { - VerifyOrReturnLogError(mpExchangeCtx == nullptr, CHIP_ERROR_INCORRECT_STATE); + VerifyOrReturnLogError(!mExchangeCtx, CHIP_ERROR_INCORRECT_STATE); VerifyOrReturnLogError(mSessionHandle, CHIP_ERROR_INCORRECT_STATE); - mpExchangeCtx = InteractionModelEngine::GetInstance()->GetExchangeManager()->NewContext(mSessionHandle.Get().Value(), this); + auto exchange = InteractionModelEngine::GetInstance()->GetExchangeManager()->NewContext(mSessionHandle.Get().Value(), this); + mExchangeCtx.Grab(exchange); } - VerifyOrReturnLogError(mpExchangeCtx != nullptr, CHIP_ERROR_INCORRECT_STATE); + VerifyOrReturnLogError(mExchangeCtx, CHIP_ERROR_INCORRECT_STATE); if (!IsReporting()) { mCurrentReportsBeginGeneration = InteractionModelEngine::GetInstance()->GetReportingEngine().GetDirtySetGeneration(); @@ -255,14 +215,13 @@ CHIP_ERROR ReadHandler::SendReportData(System::PacketBufferHandle && aPayload, b MoveToState(HandlerState::AwaitingReportResponse); } - mpExchangeCtx->UseSuggestedResponseTimeout(app::kExpectedIMProcessingTime); + mExchangeCtx->UseSuggestedResponseTimeout(app::kExpectedIMProcessingTime); CHIP_ERROR err = - mpExchangeCtx->SendMessage(Protocols::InteractionModel::MsgType::ReportData, std::move(aPayload), - Messaging::SendFlags(noResponseExpected ? Messaging::SendMessageFlags::kNone - : Messaging::SendMessageFlags::kExpectResponse)); + mExchangeCtx->SendMessage(Protocols::InteractionModel::MsgType::ReportData, std::move(aPayload), + Messaging::SendFlags(noResponseExpected ? Messaging::SendMessageFlags::kNone + : Messaging::SendMessageFlags::kExpectResponse)); if (err == CHIP_NO_ERROR && noResponseExpected) { - mpExchangeCtx = nullptr; InteractionModelEngine::GetInstance()->GetReportingEngine().OnReportConfirm(); } @@ -279,6 +238,7 @@ CHIP_ERROR ReadHandler::SendReportData(System::PacketBufferHandle && aPayload, b ClearDirty(); InteractionModelEngine::GetInstance()->ReleaseDataVersionFilterList(mpDataVersionFilterList); } + return err; } @@ -391,7 +351,7 @@ CHIP_ERROR ReadHandler::ProcessReadRequest(System::PacketBufferHandle && aPayloa ReturnErrorOnFailure(readRequestParser.ExitContainer()); MoveToState(HandlerState::GeneratingReports); - mpExchangeCtx->WillSendMessage(); + mExchangeCtx->WillSendMessage(); // There must be no code after the WillSendMessage() call that can cause // this method to return a failure. @@ -676,12 +636,12 @@ CHIP_ERROR ReadHandler::SendSubscribeResponse() ReturnErrorOnFailure(response.GetError()); ReturnErrorOnFailure(writer.Finalize(&packet)); - VerifyOrReturnLogError(mpExchangeCtx != nullptr, CHIP_ERROR_INCORRECT_STATE); + VerifyOrReturnLogError(mExchangeCtx, CHIP_ERROR_INCORRECT_STATE); ReturnErrorOnFailure(RefreshSubscribeSyncTimer()); mFlags.Set(ReadHandlerFlags::PrimingReports, false); - return mpExchangeCtx->SendMessage(Protocols::InteractionModel::MsgType::SubscribeResponse, std::move(packet)); + return mExchangeCtx->SendMessage(Protocols::InteractionModel::MsgType::SubscribeResponse, std::move(packet)); } CHIP_ERROR ReadHandler::ProcessSubscribeRequest(System::PacketBufferHandle && aPayload) @@ -750,7 +710,7 @@ CHIP_ERROR ReadHandler::ProcessSubscribeRequest(System::PacketBufferHandle && aP auto * appCallback = mManagementCallback.GetAppCallback(); if (appCallback) { - if (appCallback->OnSubscriptionRequested(*this, *mpExchangeCtx->GetSessionHandle()->AsSecureSession()) != CHIP_NO_ERROR) + if (appCallback->OnSubscriptionRequested(*this, *mExchangeCtx->GetSessionHandle()->AsSecureSession()) != CHIP_NO_ERROR) { return CHIP_ERROR_TRANSACTION_CANCELED; } @@ -766,7 +726,7 @@ CHIP_ERROR ReadHandler::ProcessSubscribeRequest(System::PacketBufferHandle && aP ReturnErrorOnFailure(subscribeRequestParser.ExitContainer()); MoveToState(HandlerState::GeneratingReports); - mpExchangeCtx->WillSendMessage(); + mExchangeCtx->WillSendMessage(); return CHIP_NO_ERROR; } diff --git a/src/app/ReadHandler.h b/src/app/ReadHandler.h index b3191760a5ae4c..548df710a96b2c 100644 --- a/src/app/ReadHandler.h +++ b/src/app/ReadHandler.h @@ -39,7 +39,7 @@ #include #include #include -#include +#include #include #include #include @@ -354,20 +354,8 @@ class ReadHandler : public Messaging::ExchangeDelegate AwaitingDestruction, ///< The object has completed its work and is awaiting destruction by the application. }; - /* - * This forcibly closes the exchange context if a valid one is pointed to. Such a situation does - * not arise during normal message processing flows that all normally call Close() above. - * - * This will eventually call Close() to drive the process of eventually releasing this object (unless called from the - * destructor). - * - * This is only called by a very narrow set of external objects as needed. - */ - void Abort(bool aCalledFromDestructor = false); - /** - * Called internally to signal the completion of all work on this object, gracefully close the - * exchange and finally, signal to a registerd callback that it's + * Called internally to signal the completion of all work on this objecta and signal to a registered callback that it's * safe to release this object. */ void Close(); @@ -445,7 +433,7 @@ class ReadHandler : public Messaging::ExchangeDelegate // TODO: We should shutdown the transaction when the session expires. SessionHolder mSessionHandle; - Messaging::ExchangeContext * mpExchangeCtx = nullptr; + Messaging::ExchangeHolder mExchangeCtx; ObjectList * mpAttributePathList = nullptr; ObjectList * mpEventPathList = nullptr; diff --git a/src/app/reporting/Engine.cpp b/src/app/reporting/Engine.cpp index 702b881c18e031..25ca090ba87aa1 100644 --- a/src/app/reporting/Engine.cpp +++ b/src/app/reporting/Engine.cpp @@ -515,15 +515,8 @@ CHIP_ERROR Engine::BuildAndSendSingleReportData(ReadHandler * apReadHandler) mCurReadHandlerIdx, hasMoreChunks ? "more messages" : "no more messages"); exit: - if (err != CHIP_NO_ERROR) - { - // - // WillSendMessage() was called on this EC well before it got here (since there was an intention to generate reports, which - // occurs asynchronously. Consequently, if any error occurs, it's on us to close down the exchange. - // - apReadHandler->Abort(); - } - else if ((apReadHandler->IsType(ReadHandler::InteractionType::Read) && !hasMoreChunks) || needCloseReadHandler) + if (err != CHIP_NO_ERROR || (apReadHandler->IsType(ReadHandler::InteractionType::Read) && !hasMoreChunks) || + needCloseReadHandler) { // // In the case of successful report generation and we're on the last chunk of a read, we don't expect diff --git a/src/app/tests/TestReadInteraction.cpp b/src/app/tests/TestReadInteraction.cpp index 4173fc2d99adc9..c4aa3fd32fd99e 100644 --- a/src/app/tests/TestReadInteraction.cpp +++ b/src/app/tests/TestReadInteraction.cpp @@ -2045,9 +2045,6 @@ void TestReadInteraction::TestSubscribeEarlyShutdown(nlTestSuite * apSuite, void NL_TEST_ASSERT(apSuite, engine.ActiveHandlerAt(0) != nullptr); delegate.mpReadHandler = engine.ActiveHandlerAt(0); NL_TEST_ASSERT(apSuite, delegate.mpReadHandler != nullptr); - - // Shutdown the subscription - readClient.Abort(); } // Cleanup diff --git a/src/messaging/BUILD.gn b/src/messaging/BUILD.gn index ecb009d02e9441..f01b749d3f6d17 100644 --- a/src/messaging/BUILD.gn +++ b/src/messaging/BUILD.gn @@ -43,6 +43,7 @@ static_library("messaging") { "ExchangeContext.cpp", "ExchangeContext.h", "ExchangeDelegate.h", + "ExchangeHolder.h", "ExchangeMessageDispatch.cpp", "ExchangeMessageDispatch.h", "ExchangeMgr.cpp", diff --git a/src/messaging/ExchangeContext.cpp b/src/messaging/ExchangeContext.cpp index bfc967f6ebcaf3..7bd0aaffa79025 100644 --- a/src/messaging/ExchangeContext.cpp +++ b/src/messaging/ExchangeContext.cpp @@ -309,6 +309,19 @@ ExchangeContext::ExchangeContext(ExchangeManager * em, uint16_t ExchangeId, cons mFlags.Set(Flags::kFlagEphemeralExchange, isEphemeralExchange); mDelegate = delegate; + // + // If we're an initiator and we just created this exchange, we obviously did so to send a message. Let's go ahead and + // set the flag on this to correctly mark it as so. + // + // This only applies to non-ephemeral exchanges. Ephemeral exchanges do not have an intention of sending out a message + // since they're created expressly for the purposes of sending out a standalone ACK when the message could not be handled + // through normal means. + // + if (Initiator && !isEphemeralExchange) + { + WillSendMessage(); + } + SetAckPending(false); // Do not request Ack for multicast diff --git a/src/messaging/ExchangeContext.h b/src/messaging/ExchangeContext.h index 8e3946ef2c348a..3e7e56121c6d26 100644 --- a/src/messaging/ExchangeContext.h +++ b/src/messaging/ExchangeContext.h @@ -54,6 +54,7 @@ class ExchangeContextDeletor * This class represents an ongoing conversation (ExchangeContext) between two or more nodes. * It defines methods for encoding and communicating CHIP messages within an ExchangeContext * over various transport mechanisms, for example, TCP, UDP, or CHIP Reliable Messaging. + * */ class DLL_EXPORT ExchangeContext : public ReliableMessageContext, public ReferenceCounted, @@ -204,6 +205,13 @@ class DLL_EXPORT ExchangeContext : public ReliableMessageContext, */ bool IsResponseExpected() const; + /** + * Determine whether we are expecting our consumer to send a message on + * this exchange (i.e. WillSendMessage was called and the message has not + * yet been sent). + */ + bool IsSendExpected() const { return mFlags.Has(Flags::kFlagWillSendMessage); } + private: class ExchangeSessionHolder : public SessionHolderWithDelegate { @@ -221,13 +229,6 @@ class DLL_EXPORT ExchangeContext : public ReliableMessageContext, ExchangeSessionHolder mSession; // The connection state uint16_t mExchangeId; // Assigned exchange ID. - /** - * Determine whether we are expecting our consumer to send a message on - * this exchange (i.e. WillSendMessage was called and the message has not - * yet been sent). - */ - bool IsSendExpected() const { return mFlags.Has(Flags::kFlagWillSendMessage); } - /** * Track whether we are now expecting a response to a message sent via this exchange (because that * message had the kExpectResponse flag set in its sendFlags). diff --git a/src/messaging/ExchangeDelegate.h b/src/messaging/ExchangeDelegate.h index fe870b6c3094a9..363f0508d34515 100644 --- a/src/messaging/ExchangeDelegate.h +++ b/src/messaging/ExchangeDelegate.h @@ -41,6 +41,34 @@ class ExchangeContext; * called by ExchangeContext object on specific events. If the user of ExchangeContext * is interested in receiving these callbacks, they can specialize this class and handle * each trigger in their implementation of this class. + * + * For consumers who use an ExchangeContext to send/receive protocol messages, there are specific + * expectations around who manages the exchange w.r.t clean-up and destruction: + * 1. When you allocate an exchange, you own the exchange. Until you send a message successfully, it's on you + * to release that ownership by calling Close or Abort on the exchange. + * + * 2. If you send a message successfully that doesn't require a response, the ownership transfers to + * the ExchangeMgr, and it will close the exchange for you automatically. + * + * 3. If you send a message successfully that does require a response and desire to close it before + * you get any notifications on that exchange from the ExchangeMgr, you should call Close or Abort on that exchange. + * + * 4. On reception of a message on an exchange, the ownership transfers to the OnMessageReceived callee. + * If you return from OnMessageReceived and no messages were sent on that exchange, the exchange will transfer back + * to the ExchangeMgr and it will automatically close it. + * + * 5. If you call WillSendMessage on the exchange in OnMessageReceived indicating a desire to send a message later + * on the exchange, then the exchange remains with you, and it's your responsibility to either send a message on it, + * or Close/Abort if you no longer wish to have the exchange around. + * + * 6. If you get a call to OnExchangeClosing, you should give up your reference to the exchange + * by 'nulling' out your reference to the exchange. The exchange will be automatically closed by the ExchangeMgr. + * + * 6. If you get a call to OnResponseTimeout, you should give up your reference to the exchange + * by 'nulling' out your reference to the exchange UNLESS you intend to do further work on the exchange. If so, + * rules 2, 3 and 5 apply. Otherwise, the exchange will be automatically closed by the ExchangeMgr. Note that + * if the cause of the call is the release of the underlying session, attempts to send a message will result in failure. + * */ class DLL_EXPORT ExchangeDelegate { diff --git a/src/messaging/ExchangeHolder.h b/src/messaging/ExchangeHolder.h new file mode 100644 index 00000000000000..7bb27458489c58 --- /dev/null +++ b/src/messaging/ExchangeHolder.h @@ -0,0 +1,140 @@ +/* + * Copyright (c) 2021 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include +#include +#include + +namespace chip { +namespace Messaging { + +/** + * @brief + * This provides a RAII'fied wrapper for an ExchangeContext that automatically manages + * cleaning up the EC when the holder ceases to exist, or acquires a new exchange. This is + * meant to be used by application and protocol logic code that would otherwise need to closely + * manage their internal pointers to an ExchangeContext and correctly + * null-it out/abort it depending on the circumstances. This relies on clear rules + * established by ExchangeContext and the transfer of ownership at various points + * in its lifetime. + * + * It does this by intercepting OnExchangeClosing and looking at the various + * states the exchange might be in to decide how best to correctly shutdown the exchange. + * (see AbortIfNeeded()). + * + * This is a delegate forwarder - consumers can still register to be an ExchangeDelegate + * and get notified of all relevant happenings on that delegate interface. + * + */ +class ExchangeHolder : public ExchangeDelegate +{ +public: + /** + * @brief + * Constructor that takes an ExchangeDelegate that is forwarded all relevant + * calls from the underlying exchange. + */ + ExchangeHolder(ExchangeDelegate & delegate) : mpExchangeDelegate(delegate) {} + + virtual ~ExchangeHolder() { Release(); } + + bool Contains(const ExchangeContext * exchange) const { return mpExchangeCtx == exchange; } + + /** + * @brief + * Replaces the held exchange and associated delegate to instead track the given ExchangeContext, aborting + * and dereferencing any previously held exchange as necessary. This method should be called whenever protocol logic + * that is managing this holder is transitioning from an outdated Exchange to a new one, often during + * the start of a new transaction. + */ + void Grab(ExchangeContext * exchange) + { + Release(); + + mpExchangeCtx = exchange; + mpExchangeCtx->SetDelegate(this); + } + + /* + * @brief + * This shuts down the exchange (if a valid one is being tracked) and releases our reference to it. + */ + void Release() + { + if (mpExchangeCtx) + { + mpExchangeCtx->SetDelegate(nullptr); + + /** + * Shutting down the exchange requires calling Abort() on the exchange selectively in the following scenarios: + * 1. The exchange is currently awaiting a response. This would have happened if our consumer just sent a message + * on the exchange and is awaiting a response. Since we no longer care to wait for the response, we don't care about + * doing MRP retries for the send we just did, so abort the exchange. + * + * 2. Our consumer has signaled an interest in sending a message. This could have been signaled right at exchange + * creation time as the initiator, or when handling a message and the consumer intends to send a response, albeit, + * asynchronously. In both cases, the stack expects the exchange consumer to close/abort the EC if it no longer has + * interest in it. Since we don't have a pending message at this point, calling Abort is OK here as well. + * + */ + if (mpExchangeCtx->IsResponseExpected() || mpExchangeCtx->IsSendExpected()) + { + mpExchangeCtx->Abort(); + } + } + + mpExchangeCtx = nullptr; + } + + explicit operator bool() const { return mpExchangeCtx != nullptr; } + ExchangeContext * Get() const { return mpExchangeCtx; } + + ExchangeContext * operator->() const + { + VerifyOrDie(mpExchangeCtx != nullptr); + return mpExchangeCtx; + } + +private: + CHIP_ERROR OnMessageReceived(ExchangeContext * ec, const PayloadHeader & payloadHeader, + System::PacketBufferHandle && payload) override + { + return mpExchangeDelegate.OnMessageReceived(ec, payloadHeader, std::move(payload)); + } + + void OnResponseTimeout(ExchangeContext * ec) override { return mpExchangeDelegate.OnResponseTimeout(ec); } + + void OnExchangeClosing(ExchangeContext * ec) override + { + if (mpExchangeCtx) + { + mpExchangeCtx->SetDelegate(nullptr); + mpExchangeCtx = nullptr; + } + + mpExchangeDelegate.OnExchangeClosing(ec); + } + + ExchangeMessageDispatch & GetMessageDispatch() override { return mpExchangeDelegate.GetMessageDispatch(); } + + ExchangeDelegate & mpExchangeDelegate; + ExchangeContext * mpExchangeCtx = nullptr; +}; + +} // namespace Messaging +} // namespace chip diff --git a/src/messaging/tests/BUILD.gn b/src/messaging/tests/BUILD.gn index 0e834aa99f1f0a..1cb910b415b1e9 100644 --- a/src/messaging/tests/BUILD.gn +++ b/src/messaging/tests/BUILD.gn @@ -50,6 +50,7 @@ chip_test_suite("tests") { # And TestAbortExchangesForFabric does not link on EFR32 for some reason. test_sources += [ "TestAbortExchangesForFabric.cpp", + "TestExchangeHolder.cpp", "TestExchangeMgr.cpp", "TestReliableMessageProtocol.cpp", ] diff --git a/src/messaging/tests/TestExchangeHolder.cpp b/src/messaging/tests/TestExchangeHolder.cpp new file mode 100644 index 00000000000000..ac7c826ad9d0f5 --- /dev/null +++ b/src/messaging/tests/TestExchangeHolder.cpp @@ -0,0 +1,441 @@ +/* + * Copyright (c) 2022 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @file + * This file implements unit tests for aborting existing exchanges (except + * one) for a fabric. + */ + +#include "messaging/ExchangeDelegate.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace chip { +namespace Protocols { + +// +// Let's create a mock protocol that encapsulates a 3 message exchange to test out the ExchangeHolder +// and the various states the underlying exchange might be set to, altering the clean-up behavior +// the holder will execute depending on those states. +// +namespace MockProtocol { +static constexpr Id Id(VendorId::TestVendor1, 1); + +enum class MessageType : uint8_t +{ + kMsg1 = 0x01, + kMsg2 = 0x02, + kMsg3 = 0x03 +}; +} // namespace MockProtocol + +template <> +struct MessageTypeTraits +{ + static constexpr const Protocols::Id & ProtocolId() { return MockProtocol::Id; } +}; + +} // namespace Protocols +} // namespace chip + +namespace { + +using namespace chip; +using namespace chip::Messaging; +using namespace chip::System; +using namespace chip::Protocols; + +using TestContext = Test::LoopbackMessagingContext; + +TestContext * gCtx = nullptr; + +class MockProtocolResponder : public ExchangeDelegate, public Messaging::UnsolicitedMessageHandler +{ +public: + enum class BehaviorModifier + { + kNone, + kHoldMsg1, + }; + + MockProtocolResponder(BehaviorModifier modifier = BehaviorModifier::kNone) : mExchangeCtx(*this) + { + VerifyOrDie(gCtx != nullptr); + mBehaviorModifier = modifier; + gCtx->GetExchangeManager().RegisterUnsolicitedMessageHandlerForProtocol(chip::Protocols::MockProtocol::Id, this); + } + + ~MockProtocolResponder() + { + gCtx->GetExchangeManager().UnregisterUnsolicitedMessageHandlerForProtocol(chip::Protocols::MockProtocol::Id); + } + + bool DidInteractionSucceed() { return mInteractionSucceeded; } + +private: + CHIP_ERROR OnMessageReceived(ExchangeContext * ec, const PayloadHeader & payloadHeader, + System::PacketBufferHandle && buffer) override; + + CHIP_ERROR OnUnsolicitedMessageReceived(const PayloadHeader & payloadHeader, ExchangeDelegate *& newDelegate) override + { + newDelegate = this; + return CHIP_NO_ERROR; + } + + void OnResponseTimeout(ExchangeContext * ec) override {} + + ExchangeHolder mExchangeCtx; + BehaviorModifier mBehaviorModifier = BehaviorModifier::kNone; + bool mInteractionSucceeded = false; +}; + +class MockProtocolInitiator : public ExchangeDelegate +{ +public: + enum class BehaviorModifier + { + kNone, + kHoldMsg2, + }; + + MockProtocolInitiator(BehaviorModifier modifier = BehaviorModifier::kNone) : mExchangeCtx(*this) + { + mBehaviorModifier = modifier; + } + + CHIP_ERROR StartInteraction(SessionHandle & sessionHandle); + + bool DidInteractionSucceed() { return mInteractionSucceeded; } + +private: + CHIP_ERROR OnMessageReceived(ExchangeContext * ec, const PayloadHeader & payloadHeader, + System::PacketBufferHandle && buffer) override; + + void OnResponseTimeout(ExchangeContext * ec) override {} + + ExchangeHolder mExchangeCtx; + BehaviorModifier mBehaviorModifier = BehaviorModifier::kNone; + bool mInteractionSucceeded = false; +}; + +CHIP_ERROR MockProtocolResponder::OnMessageReceived(ExchangeContext * ec, const PayloadHeader & payloadHeader, + System::PacketBufferHandle && buffer) +{ + CHIP_ERROR err = CHIP_NO_ERROR; + + if (payloadHeader.HasMessageType(chip::Protocols::MockProtocol::MessageType::kMsg1)) + { + // + // This is the first message in the exchange - let's have our holder start managing the exchange by grabbing it. + // + mExchangeCtx.Grab(ec); + + if (mBehaviorModifier != BehaviorModifier::kHoldMsg1) + { + PacketBufferHandle respBuffer = MessagePacketBuffer::New(0); + VerifyOrReturnError(!buffer.IsNull(), CHIP_ERROR_NO_MEMORY); + ReturnErrorOnFailure(mExchangeCtx->SendMessage(chip::Protocols::MockProtocol::MessageType::kMsg2, std::move(respBuffer), + SendMessageFlags::kExpectResponse)); + } + else + { + mExchangeCtx->WillSendMessage(); + } + } + else if (payloadHeader.HasMessageType(chip::Protocols::MockProtocol::MessageType::kMsg3)) + { + mInteractionSucceeded = true; + } + else + { + err = CHIP_ERROR_INVALID_MESSAGE_TYPE; + } + + return err; +} + +CHIP_ERROR MockProtocolInitiator::StartInteraction(SessionHandle & sessionHandle) +{ + PacketBufferHandle buffer = MessagePacketBuffer::New(0); + VerifyOrReturnError(!buffer.IsNull(), CHIP_ERROR_NO_MEMORY); + + auto exchange = gCtx->GetExchangeManager().NewContext(sessionHandle, this); + VerifyOrReturnError(exchange != nullptr, CHIP_ERROR_NO_MEMORY); + + // + // This is the first exchange in this interaction - let's have our holder start managing the exchange by grabbing it. + // + mExchangeCtx.Grab(exchange); + + ReturnErrorOnFailure(mExchangeCtx->SendMessage(chip::Protocols::MockProtocol::MessageType::kMsg1, std::move(buffer), + SendMessageFlags::kExpectResponse)); + + return CHIP_NO_ERROR; +} + +CHIP_ERROR MockProtocolInitiator::OnMessageReceived(ExchangeContext * ec, const PayloadHeader & payloadHeader, + System::PacketBufferHandle && buffer) +{ + CHIP_ERROR err = CHIP_NO_ERROR; + + if (payloadHeader.HasMessageType(chip::Protocols::MockProtocol::MessageType::kMsg2)) + { + if (mBehaviorModifier != BehaviorModifier::kHoldMsg2) + { + PacketBufferHandle respBuffer = MessagePacketBuffer::New(0); + VerifyOrReturnError(!buffer.IsNull(), CHIP_ERROR_NO_MEMORY); + ReturnErrorOnFailure(mExchangeCtx->SendMessage(chip::Protocols::MockProtocol::MessageType::kMsg3, std::move(respBuffer), + SendMessageFlags::kNone)); + + mInteractionSucceeded = true; + } + else + { + mExchangeCtx->WillSendMessage(); + } + } + else + { + err = CHIP_ERROR_INVALID_MESSAGE_TYPE; + } + + return err; +} + +void TestExchangeHolder(nlTestSuite * inSuite, void * inContext) +{ + TestContext & ctx = *reinterpret_cast(inContext); + + gCtx = &ctx; + + auto sessionHandle = ctx.GetSessionAliceToBob(); + + // + // #1: Initiator >--- Msg1 --X Responder. + // + // Initiator sends Msg1 to Responder, but we set it up such that Responder doesn't actually + // receive the message. + // + // Then, destroy both objects. Initiator's holder should correctly abort the exchange since it's waiting for + // a response. + // + { + ChipLogProgress(ExchangeManager, "-------- #1: Initiator >-- Msg1 --X Responder ---------"); + + { + MockProtocolInitiator initiator; + MockProtocolResponder responder; + + auto err = initiator.StartInteraction(sessionHandle); + NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + } + + // + // Service IO AFTER the objects above cease to exist to prevent Msg1 from getting to Responder. This also + // flush any pending messages in the queue. + // + ctx.DrainAndServiceIO(); + NL_TEST_ASSERT(inSuite, ctx.GetExchangeManager().GetNumActiveExchanges() == 0); + } + + // + // #2: Initiator --- Msg1 --> Responder (WillSend) + // + // Initiator sends Msg1 to Responder, which is received successfully. However, Responder + // doesn't send a response right away (calls WillSendMessage() on the EC). + // + // Then, destroy both objects. Initiator's holder should correctly abort the exchange since it's waiting for + // a response, and so should the Responder's holder since it has yet to send a message. + // + { + { + ChipLogProgress(ExchangeManager, "-------- #2: Initiator >-- Msg1 --> Responder (WillSend) ---------"); + + MockProtocolInitiator initiator; + MockProtocolResponder responder(MockProtocolResponder::BehaviorModifier::kHoldMsg1); + + auto err = initiator.StartInteraction(sessionHandle); + NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + + ctx.DrainAndServiceIO(); + } + + NL_TEST_ASSERT(inSuite, ctx.GetExchangeManager().GetNumActiveExchanges() == 0); + } + + // + // #3: Initiator --- Msg1 --> Responder + // (WillSend) Initiator <-- Msg2 <-- Responder + // + // Initiator receives Msg2 back from Responder, but calls WillSend on that EC. + // + // Then, destroy both objects. Initiator's holder should correctly abort the exchange since it's waiting + // to send a response, and Responder's holder should abort as well since it's waiting for a response. + // + { + { + ChipLogProgress(ExchangeManager, "-------- #3: (WillSend) Initiator <-- Msg2 <-- Responder ---------"); + + MockProtocolInitiator initiator(MockProtocolInitiator::BehaviorModifier::kHoldMsg2); + MockProtocolResponder responder; + + auto err = initiator.StartInteraction(sessionHandle); + NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + + ctx.DrainAndServiceIO(); + } + + NL_TEST_ASSERT(inSuite, ctx.GetExchangeManager().GetNumActiveExchanges() == 0); + } + + // + // #4: Initiator --- Msg1 --> Responder + // Initiator <-- Msg2 <-- Responder + // Initiator >-- Msg3 --> Responder + // + // Initiator sends final message in exchange to Responder, which is received successfully. + // + // Then, destroy both objects. Initiator's holder should NOT abort the underlying exchange since + // it has sent the final message in the exchange, while responder's holder should NOT abor the underlying + // exchange either since it is not going to send any further messages on the exchange. + // + { + { + ChipLogProgress(ExchangeManager, "-------- #4: Initiator >-- Msg3 --> Responder ---------"); + + MockProtocolInitiator initiator; + MockProtocolResponder responder; + + auto err = initiator.StartInteraction(sessionHandle); + NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + + ctx.DrainAndServiceIO(); + } + + NL_TEST_ASSERT(inSuite, ctx.GetExchangeManager().GetNumActiveExchanges() == 0); + } + + // + // #5: Initiator --- Msg1 --> Responder (WillSend) + // Initiator --- Msg1 --> Responder (WillSend) + // + // Similar to #2, except we have Initiator start the interaction again. This validates + // ExchangeHolder::Grab in correctly aborting a previous exchange and acquiring a new one. + // + // Then, destroy both objects. Both holders should abort the exchange (see #2). + // + { + { + ChipLogProgress(ExchangeManager, "-------- #5: Initiator >-- Msg1 --> Responder (WillSend) X2 ---------"); + + MockProtocolInitiator initiator; + MockProtocolResponder responder(MockProtocolResponder::BehaviorModifier::kHoldMsg1); + + auto err = initiator.StartInteraction(sessionHandle); + NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + + ctx.DrainAndServiceIO(); + + err = initiator.StartInteraction(sessionHandle); + NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + + ctx.DrainAndServiceIO(); + } + + ctx.DrainAndServiceIO(); + NL_TEST_ASSERT(inSuite, ctx.GetExchangeManager().GetNumActiveExchanges() == 0); + } + + // + // #6: Initiator --- Msg1 --> Responder + // Initiator <-- Msg2 <-- Responder + // Initiator >-- Msg3 --> Responder + // + // X2 + // + // Similar to #4, except we do the entire interaction twice. This validates + // ExchangeHolder::Grab in correctly releasing a reference to a previous exchange (but not aborting it) + // and acquiring a new one. + // + // Then, destroy both objects. Both holders should release their reference without aborting. + // + { + { + ChipLogProgress(ExchangeManager, "-------- #6: Initiator >-- Msg3 --> Responder X2 ---------"); + + MockProtocolInitiator initiator; + MockProtocolResponder responder; + + auto err = initiator.StartInteraction(sessionHandle); + NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + + ctx.DrainAndServiceIO(); + + err = initiator.StartInteraction(sessionHandle); + NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + + ctx.DrainAndServiceIO(); + } + + NL_TEST_ASSERT(inSuite, ctx.GetExchangeManager().GetNumActiveExchanges() == 0); + } +} + +// Test Suite + +/** + * Test Suite that lists all the test functions. + */ +// clang-format off +const nlTest sTests[] = +{ + NL_TEST_DEF("TestExchangeHolder", TestExchangeHolder), + + NL_TEST_SENTINEL() +}; +// clang-format on + +// clang-format off +nlTestSuite sSuite = +{ + "Test-TestExchangeHolder", + &sTests[0], + TestContext::Initialize, + TestContext::Finalize +}; +// clang-format on + +} // anonymous namespace + +/** + * Main + */ +int TestExchangeHolder() +{ + return chip::ExecuteTestsWithContext(&sSuite); +} + +CHIP_REGISTER_TEST_SUITE(TestExchangeHolder); From 6d5480788b783c6cf80bdb019476971b5c5c8fb0 Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Thu, 21 Jul 2022 07:31:38 -0400 Subject: [PATCH 12/18] Mark fabric-scoped commands in the XML and use that in codegen. (#21022) Fixes https://github.com/project-chip/connectedhomeip/issues/20811 --- .../templates/app/cluster-objects-src.zapt | 72 ++--- .../chip/general-commissioning-cluster.xml | 2 +- .../chip/group-key-mgmt-cluster.xml | 8 +- .../chip/operational-credentials-cluster.xml | 4 +- .../zcl/data-model/chip/scene.xml | 22 +- .../zcl/data-model/silabs/general.xml | 12 +- .../zap-generated/cluster-objects.cpp | 285 +++++++++++++++++- 7 files changed, 315 insertions(+), 90 deletions(-) diff --git a/src/app/zap-templates/templates/app/cluster-objects-src.zapt b/src/app/zap-templates/templates/app/cluster-objects-src.zapt index 8ae7efca79c57d..78b5c2e0dc4f44 100644 --- a/src/app/zap-templates/templates/app/cluster-objects-src.zapt +++ b/src/app/zap-templates/templates/app/cluster-objects-src.zapt @@ -173,66 +173,32 @@ bool CommandNeedsTimedInvoke(ClusterId aCluster, CommandId aCommand) return false; } -// TODO(#20811): Actually generate the following based on ZAP metadata -// See https://github.com/project-chip/zap/issues/609 bool CommandIsFabricScoped(ClusterId aCluster, CommandId aCommand) { // Maybe it would be smaller code to codegen a table and walk over it? // Not sure. switch (aCluster) { - case Clusters::Groups::Id: { - switch (aCommand) - { - case Clusters::Groups::Commands::AddGroup::Id: - case Clusters::Groups::Commands::ViewGroup::Id: - case Clusters::Groups::Commands::GetGroupMembership::Id: - case Clusters::Groups::Commands::RemoveGroup::Id: - case Clusters::Groups::Commands::RemoveAllGroups::Id: - return true; - default: - return false; - } - } - case Clusters::GroupKeyManagement::Id: { - switch (aCommand) - { - case Clusters::GroupKeyManagement::Commands::KeySetWrite::Id: - case Clusters::GroupKeyManagement::Commands::KeySetRead::Id: - case Clusters::GroupKeyManagement::Commands::KeySetRemove::Id: - case Clusters::GroupKeyManagement::Commands::KeySetReadAllIndices::Id: - return true; - default: - return false; - } - } - case Clusters::GeneralCommissioning::Id: { - switch (aCommand) - { - case Clusters::GeneralCommissioning::Commands::CommissioningComplete::Id: - return true; - default: - return false; - } - } - case Clusters::Scenes::Id: { - // Entire cluster is fabric-scoped. - return true; - } - case Clusters::OperationalCredentials::Id: { - switch (aCommand) - { - case Clusters::OperationalCredentials::Commands::UpdateNOC::Id: - case Clusters::OperationalCredentials::Commands::UpdateFabricLabel::Id: - return true; - default: - return false; - } - } - default: - break; + {{#zcl_clusters}} + {{#zcl_commands}} + {{#first}} + case Clusters::{{asUpperCamelCase parent.name}}::Id: + { + switch (aCommand) { + {{/first}} + {{#if isFabricScoped}} + case Clusters::{{asUpperCamelCase parent.name}}::Commands::{{asUpperCamelCase name}}::Id: + return true; + {{/if}} + {{#last}} + default: + return false; + } + } + {{/last}} + {{/zcl_commands}} + {{/zcl_clusters}} } - return false; } diff --git a/src/app/zap-templates/zcl/data-model/chip/general-commissioning-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/general-commissioning-cluster.xml index 0d913e68dc9653..e67874d6bcd5dd 100644 --- a/src/app/zap-templates/zcl/data-model/chip/general-commissioning-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/general-commissioning-cluster.xml @@ -74,7 +74,7 @@ limitations under the License. - + Signals the Server that the Client has successfully completed all steps of Commissioning/Recofiguration needed during fail-safe period. diff --git a/src/app/zap-templates/zcl/data-model/chip/group-key-mgmt-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/group-key-mgmt-cluster.xml index f278ce48644d30..3bfaeb980a6d32 100644 --- a/src/app/zap-templates/zcl/data-model/chip/group-key-mgmt-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/group-key-mgmt-cluster.xml @@ -65,13 +65,13 @@ limitations under the License. MaxGroupsPerFabric MaxGroupKeysPerFabric - + Revoke a Root Key from a Group - + Revoke a Root Key from a Group @@ -84,13 +84,13 @@ limitations under the License. - + Revoke a Root Key from a Group - + Return the list of Group Key Sets associated with the accessing fabric diff --git a/src/app/zap-templates/zcl/data-model/chip/operational-credentials-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/operational-credentials-cluster.xml index 7fe5aa904143fd..01c172b54172dc 100644 --- a/src/app/zap-templates/zcl/data-model/chip/operational-credentials-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/operational-credentials-cluster.xml @@ -113,7 +113,7 @@ limitations under the License. - + Sender is requesting to update the node operational certificates. @@ -127,7 +127,7 @@ limitations under the License. - + This command SHALL be used by an Administrative Node to set the user-visible Label field for a given Fabric, as reflected by entries in the Fabrics attribute. diff --git a/src/app/zap-templates/zcl/data-model/chip/scene.xml b/src/app/zap-templates/zcl/data-model/chip/scene.xml index a7f8957b52f902..3653e5c1db6530 100644 --- a/src/app/zap-templates/zcl/data-model/chip/scene.xml +++ b/src/app/zap-templates/zcl/data-model/chip/scene.xml @@ -52,7 +52,7 @@ limitations under the License. NameSupport LastConfiguredBy - + Add a scene to the scene table. Extension field sets are supported, and are inputed as '{"ClusterID": VALUE, "AttributeValueList":[{"AttributeId": VALUE, "AttributeValue": VALUE}]}' @@ -64,7 +64,7 @@ limitations under the License. - + Retrieves the requested scene entry from its Scene table. @@ -72,7 +72,7 @@ limitations under the License. - + Removes the requested scene entry, corresponding to the value of the GroupID field, from its Scene Table @@ -81,7 +81,7 @@ limitations under the License. - + Remove all scenes, corresponding to the value of the GroupID field, from its Scene Table @@ -89,7 +89,7 @@ limitations under the License. - + Adds the scene entry into its Scene Table along with all extension field sets corresponding to the current state of other clusters on the same endpoint @@ -98,7 +98,7 @@ limitations under the License. - + Set the attributes and corresponding state for each other cluster implemented on the endpoint accordingly to the resquested scene entry in the Scene Table @@ -107,14 +107,14 @@ limitations under the License. - + Get an unused scene identifier when no commissioning tool is in the network, or for a commissioning tool to get the used scene identifiers within a certain group - + Allows a scene to be added using a finer scene transition time than the AddScene command. @@ -124,14 +124,14 @@ limitations under the License. - + Allows a scene to be retrieved using a finer scene transition time than the ViewScene command - + Allows a client to efficiently copy scenes from one group/scene identifier pair to another group/scene identifier pair. @@ -234,4 +234,4 @@ limitations under the License. - \ No newline at end of file + diff --git a/src/app/zap-templates/zcl/data-model/silabs/general.xml b/src/app/zap-templates/zcl/data-model/silabs/general.xml index d384934248d8eb..ea606941064b6c 100644 --- a/src/app/zap-templates/zcl/data-model/silabs/general.xml +++ b/src/app/zap-templates/zcl/data-model/silabs/general.xml @@ -100,7 +100,7 @@ limitations under the License. name support - + Command description for AddGroup @@ -108,32 +108,32 @@ limitations under the License. - + Command description for ViewGroup - + Command description for GetGroupMembership - + Command description for RemoveGroup - + Command description for RemoveAllGroups - + Command description for AddGroupIfIdentifying diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp index 6d5c4cb5cf654e..b7f9abcae5b4b8 100644 --- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp +++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp @@ -20695,39 +20695,107 @@ bool CommandNeedsTimedInvoke(ClusterId aCluster, CommandId aCommand) return false; } -// TODO(#20811): Actually generate the following based on ZAP metadata -// See https://github.com/project-chip/zap/issues/609 bool CommandIsFabricScoped(ClusterId aCluster, CommandId aCommand) { // Maybe it would be smaller code to codegen a table and walk over it? // Not sure. switch (aCluster) { + case Clusters::Identify::Id: { + switch (aCommand) + { + default: + return false; + } + } case Clusters::Groups::Id: { switch (aCommand) { case Clusters::Groups::Commands::AddGroup::Id: + return true; case Clusters::Groups::Commands::ViewGroup::Id: + return true; case Clusters::Groups::Commands::GetGroupMembership::Id: + return true; case Clusters::Groups::Commands::RemoveGroup::Id: + return true; case Clusters::Groups::Commands::RemoveAllGroups::Id: return true; + case Clusters::Groups::Commands::AddGroupIfIdentifying::Id: + return true; default: return false; } } - case Clusters::GroupKeyManagement::Id: { + case Clusters::Scenes::Id: { switch (aCommand) { - case Clusters::GroupKeyManagement::Commands::KeySetWrite::Id: - case Clusters::GroupKeyManagement::Commands::KeySetRead::Id: - case Clusters::GroupKeyManagement::Commands::KeySetRemove::Id: - case Clusters::GroupKeyManagement::Commands::KeySetReadAllIndices::Id: + case Clusters::Scenes::Commands::AddScene::Id: + return true; + case Clusters::Scenes::Commands::ViewScene::Id: + return true; + case Clusters::Scenes::Commands::RemoveScene::Id: + return true; + case Clusters::Scenes::Commands::RemoveAllScenes::Id: + return true; + case Clusters::Scenes::Commands::StoreScene::Id: + return true; + case Clusters::Scenes::Commands::RecallScene::Id: + return true; + case Clusters::Scenes::Commands::GetSceneMembership::Id: + return true; + case Clusters::Scenes::Commands::EnhancedAddScene::Id: + return true; + case Clusters::Scenes::Commands::EnhancedViewScene::Id: + return true; + case Clusters::Scenes::Commands::CopyScene::Id: return true; default: return false; } } + case Clusters::OnOff::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::LevelControl::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::BridgedActions::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::Basic::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::OtaSoftwareUpdateProvider::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::OtaSoftwareUpdateRequestor::Id: { + switch (aCommand) + { + default: + return false; + } + } case Clusters::GeneralCommissioning::Id: { switch (aCommand) { @@ -20737,24 +20805,215 @@ bool CommandIsFabricScoped(ClusterId aCluster, CommandId aCommand) return false; } } - case Clusters::Scenes::Id: { - // Entire cluster is fabric-scoped. - return true; + case Clusters::NetworkCommissioning::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::DiagnosticLogs::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::GeneralDiagnostics::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::SoftwareDiagnostics::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::ThreadNetworkDiagnostics::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::WiFiNetworkDiagnostics::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::EthernetNetworkDiagnostics::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::AdministratorCommissioning::Id: { + switch (aCommand) + { + default: + return false; + } } case Clusters::OperationalCredentials::Id: { switch (aCommand) { case Clusters::OperationalCredentials::Commands::UpdateNOC::Id: + return true; case Clusters::OperationalCredentials::Commands::UpdateFabricLabel::Id: return true; default: return false; } } - default: - break; + case Clusters::GroupKeyManagement::Id: { + switch (aCommand) + { + case Clusters::GroupKeyManagement::Commands::KeySetWrite::Id: + return true; + case Clusters::GroupKeyManagement::Commands::KeySetRead::Id: + return true; + case Clusters::GroupKeyManagement::Commands::KeySetRemove::Id: + return true; + case Clusters::GroupKeyManagement::Commands::KeySetReadAllIndices::Id: + return true; + default: + return false; + } + } + case Clusters::ModeSelect::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::DoorLock::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::WindowCovering::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::BarrierControl::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::Thermostat::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::ColorControl::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::Channel::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::TargetNavigator::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::MediaPlayback::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::MediaInput::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::LowPower::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::KeypadInput::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::ContentLauncher::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::AudioOutput::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::ApplicationLauncher::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::AccountLogin::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::ElectricalMeasurement::Id: { + switch (aCommand) + { + default: + return false; + } + } + case Clusters::TestCluster::Id: { + switch (aCommand) + { + default: + return false; + } + } } - return false; } From 94f89745321eb74c7f8c9ad179d9b66744420bc0 Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Thu, 21 Jul 2022 10:50:09 -0400 Subject: [PATCH 13/18] Fix base38 decoding for long payloads. (#21037) We were casting indices into the string to uint8_t, so would fail for inputs that were longer than 255 chars. --- src/setup_payload/Base38Decode.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/setup_payload/Base38Decode.cpp b/src/setup_payload/Base38Decode.cpp index e2255335c2502e..3556182829e362 100644 --- a/src/setup_payload/Base38Decode.cpp +++ b/src/setup_payload/Base38Decode.cpp @@ -99,8 +99,8 @@ CHIP_ERROR base38Decode(std::string base38, std::vector & result) { result.clear(); - int base38CharactersNumber = static_cast(base38.length()); - int decodedBase38Characters = 0; + size_t base38CharactersNumber = base38.length(); + size_t decodedBase38Characters = 0; while (base38CharactersNumber > 0) { uint8_t base38CharactersInChunk; @@ -128,10 +128,10 @@ CHIP_ERROR base38Decode(std::string base38, std::vector & result) uint32_t value = 0; - for (int i = (base38CharactersInChunk - 1); i >= 0; i--) + for (size_t i = base38CharactersInChunk; i > 0; i--) { uint8_t v = 0; - CHIP_ERROR err = decodeChar(base38[static_cast(decodedBase38Characters + i)], v); + CHIP_ERROR err = decodeChar(base38[decodedBase38Characters + i - 1], v); if (err != CHIP_NO_ERROR) { @@ -143,7 +143,7 @@ CHIP_ERROR base38Decode(std::string base38, std::vector & result) decodedBase38Characters += base38CharactersInChunk; base38CharactersNumber -= base38CharactersInChunk; - for (int i = 0; i < bytesInDecodedChunk; i++) + for (size_t i = 0; i < bytesInDecodedChunk; i++) { result.push_back(static_cast(value)); value >>= 8; From 33aecf84e2dc27a5bf0f17a4f64186f83efc41b7 Mon Sep 17 00:00:00 2001 From: Andrei Litvin Date: Thu, 21 Jul 2022 11:29:56 -0400 Subject: [PATCH 14/18] Fabric scoped commands in idl generation (#21050) * Detect fabric-scoped commands and flag them in matter idl * zap regen --- .../all-clusters-app.matter | 40 +++++++------- .../all-clusters-minimal-app.matter | 40 +++++++------- .../bridge-common/bridge-app.matter | 14 ++--- ...p_rootnode_dimmablelight_bCwGYSDpoe.matter | 40 +++++++------- .../rootnode_contactsensor_lFAGG1bfRO.matter | 26 ++++----- .../rootnode_dimmablelight_bCwGYSDpoe.matter | 40 +++++++------- .../rootnode_flowsensor_1zVxHedlaV.matter | 26 ++++----- ...tnode_heatingcoolingunit_ncdGai1E5a.matter | 40 +++++++------- .../rootnode_humiditysensor_Xyj4gda6Hb.matter | 26 ++++----- .../rootnode_lightsensor_lZQycTFcJK.matter | 26 ++++----- ...rootnode_occupancysensor_iHyVgifZuo.matter | 26 ++++----- .../rootnode_onofflight_bbs1b7IaOV.matter | 40 +++++++------- ...ootnode_onofflightswitch_FsPlMr090Q.matter | 54 +++++++++---------- ...rootnode_onoffpluginunit_Wtf8ss5EBY.matter | 40 +++++++------- .../rootnode_pressuresensor_s0qC9wLH4k.matter | 26 ++++----- .../rootnode_speaker_RpzeXdimqA.matter | 26 ++++----- ...otnode_temperaturesensor_Qy1zkNW7c3.matter | 26 ++++----- .../rootnode_thermostat_bm3fb8dhYi.matter | 40 +++++++------- .../rootnode_windowcovering_RLCxaGi9Yx.matter | 40 +++++++------- .../light-switch-app.matter | 40 +++++++------- .../lighting-common/lighting-app.matter | 26 ++++----- examples/lock-app/lock-common/lock-app.matter | 26 ++++----- .../log-source-common/log-source-app.matter | 4 +- .../ota-provider-app.matter | 14 ++--- .../ota-requestor-app.matter | 14 ++--- .../placeholder/linux/apps/app1/config.matter | 38 ++++++------- .../placeholder/linux/apps/app2/config.matter | 38 ++++++------- examples/pump-app/pump-common/pump-app.matter | 14 ++--- .../pump-controller-app.matter | 14 ++--- .../esp32/main/temperature-measurement.matter | 14 ++--- .../thermostat-common/thermostat.matter | 32 +++++------ examples/tv-app/tv-common/tv-app.matter | 18 +++---- .../tv-casting-common/tv-casting-app.matter | 40 +++++++------- examples/window-app/common/window-app.matter | 40 +++++++------- .../idl/command_request_response.zapt | 1 + .../data_model/controller-clusters.matter | 40 +++++++------- 36 files changed, 525 insertions(+), 524 deletions(-) diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter index e5569355e063e9..1dd178ebeb4a7c 100644 --- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter +++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter @@ -99,12 +99,12 @@ server cluster Groups = 4 { group_id groupId = 1; } - command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; - command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; - command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; - command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; - command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; - command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; + fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } server cluster Scenes = 5 { @@ -206,13 +206,13 @@ server cluster Scenes = 5 { optional INT8U sceneList[] = 3; } - command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; - command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; - command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; - command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; - command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; - command RecallScene(RecallSceneRequest): DefaultSuccess = 5; - command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; + fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; + fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; + fabric command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; + fabric command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; + fabric command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; + fabric command RecallScene(RecallSceneRequest): DefaultSuccess = 5; + fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; } server cluster OnOff = 6 { @@ -911,7 +911,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -1632,8 +1632,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1699,10 +1699,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster FixedLabel = 64 { diff --git a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter index 50a151d154f03d..3660f4d9aef88d 100644 --- a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter +++ b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter @@ -93,12 +93,12 @@ server cluster Groups = 4 { group_id groupId = 1; } - command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; - command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; - command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; - command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; - command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; - command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; + fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } server cluster Scenes = 5 { @@ -200,13 +200,13 @@ server cluster Scenes = 5 { optional INT8U sceneList[] = 3; } - command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; - command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; - command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; - command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; - command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; - command RecallScene(RecallSceneRequest): DefaultSuccess = 5; - command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; + fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; + fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; + fabric command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; + fabric command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; + fabric command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; + fabric command RecallScene(RecallSceneRequest): DefaultSuccess = 5; + fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; } server cluster OnOff = 6 { @@ -840,7 +840,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -1477,8 +1477,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1544,10 +1544,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster FixedLabel = 64 { diff --git a/examples/bridge-app/bridge-common/bridge-app.matter b/examples/bridge-app/bridge-common/bridge-app.matter index b4b7248f961b4c..cc4b20444d6399 100644 --- a/examples/bridge-app/bridge-common/bridge-app.matter +++ b/examples/bridge-app/bridge-common/bridge-app.matter @@ -593,7 +593,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -1317,8 +1317,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1387,10 +1387,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster UserLabel = 65 { diff --git a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter index 3569eb47ec0efb..6d62ac5d73d286 100644 --- a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter +++ b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter @@ -99,12 +99,12 @@ server cluster Groups = 4 { group_id groupId = 1; } - command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; - command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; - command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; - command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; - command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; - command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; + fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } server cluster Scenes = 5 { @@ -209,13 +209,13 @@ server cluster Scenes = 5 { optional INT8U sceneList[] = 3; } - command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; - command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; - command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; - command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; - command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; - command RecallScene(RecallSceneRequest): DefaultSuccess = 5; - command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; + fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; + fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; + fabric command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; + fabric command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; + fabric command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; + fabric command RecallScene(RecallSceneRequest): DefaultSuccess = 5; + fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; } server cluster OnOff = 6 { @@ -709,7 +709,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster DiagnosticLogs = 50 { @@ -1290,8 +1290,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1357,10 +1357,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster FixedLabel = 64 { diff --git a/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter b/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter index 2f553f5d092407..34318b2bd76687 100644 --- a/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter +++ b/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter @@ -99,12 +99,12 @@ server cluster Groups = 4 { group_id groupId = 1; } - command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; - command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; - command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; - command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; - command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; - command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; + fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } server cluster Descriptor = 29 { @@ -465,7 +465,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -1180,8 +1180,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1247,10 +1247,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster FixedLabel = 64 { diff --git a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter index c418e260b39905..c16341fdac2f5d 100644 --- a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter +++ b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter @@ -99,12 +99,12 @@ server cluster Groups = 4 { group_id groupId = 1; } - command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; - command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; - command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; - command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; - command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; - command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; + fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } server cluster Scenes = 5 { @@ -209,13 +209,13 @@ server cluster Scenes = 5 { optional INT8U sceneList[] = 3; } - command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; - command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; - command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; - command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; - command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; - command RecallScene(RecallSceneRequest): DefaultSuccess = 5; - command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; + fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; + fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; + fabric command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; + fabric command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; + fabric command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; + fabric command RecallScene(RecallSceneRequest): DefaultSuccess = 5; + fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; } server cluster OnOff = 6 { @@ -709,7 +709,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -1424,8 +1424,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1491,10 +1491,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster FixedLabel = 64 { diff --git a/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter b/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter index 91db20992abfe3..4a0201ab324ad0 100644 --- a/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter +++ b/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter @@ -112,12 +112,12 @@ server cluster Groups = 4 { group_id groupId = 1; } - command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; - command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; - command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; - command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; - command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; - command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; + fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } server cluster Descriptor = 29 { @@ -478,7 +478,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -1193,8 +1193,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1260,10 +1260,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster FixedLabel = 64 { diff --git a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter index 16d8c8f83fae22..6ee6d45cafdf04 100644 --- a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter +++ b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter @@ -99,12 +99,12 @@ server cluster Groups = 4 { group_id groupId = 1; } - command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; - command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; - command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; - command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; - command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; - command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; + fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } server cluster Scenes = 5 { @@ -209,13 +209,13 @@ server cluster Scenes = 5 { optional INT8U sceneList[] = 3; } - command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; - command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; - command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; - command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; - command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; - command RecallScene(RecallSceneRequest): DefaultSuccess = 5; - command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; + fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; + fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; + fabric command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; + fabric command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; + fabric command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; + fabric command RecallScene(RecallSceneRequest): DefaultSuccess = 5; + fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; } server cluster OnOff = 6 { @@ -702,7 +702,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -1417,8 +1417,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1484,10 +1484,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster FixedLabel = 64 { diff --git a/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter b/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter index 1f8dd74275efa6..55e43daa753557 100644 --- a/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter +++ b/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter @@ -112,12 +112,12 @@ server cluster Groups = 4 { group_id groupId = 1; } - command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; - command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; - command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; - command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; - command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; - command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; + fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } server cluster Descriptor = 29 { @@ -478,7 +478,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -1193,8 +1193,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1260,10 +1260,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster FixedLabel = 64 { diff --git a/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter b/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter index 9bc379a20349fd..ac40c1e9c979e1 100644 --- a/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter +++ b/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter @@ -112,12 +112,12 @@ server cluster Groups = 4 { group_id groupId = 1; } - command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; - command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; - command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; - command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; - command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; - command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; + fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } server cluster Descriptor = 29 { @@ -478,7 +478,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -1193,8 +1193,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1260,10 +1260,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster FixedLabel = 64 { diff --git a/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter b/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter index 44c2d10c6975bc..d407008d720a13 100644 --- a/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter +++ b/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter @@ -112,12 +112,12 @@ server cluster Groups = 4 { group_id groupId = 1; } - command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; - command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; - command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; - command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; - command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; - command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; + fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } server cluster Descriptor = 29 { @@ -478,7 +478,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -1193,8 +1193,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1260,10 +1260,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster FixedLabel = 64 { diff --git a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter index 0b5ff1eab4d1f8..942ffc8e054171 100644 --- a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter +++ b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter @@ -99,12 +99,12 @@ server cluster Groups = 4 { group_id groupId = 1; } - command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; - command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; - command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; - command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; - command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; - command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; + fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } server cluster Scenes = 5 { @@ -209,13 +209,13 @@ server cluster Scenes = 5 { optional INT8U sceneList[] = 3; } - command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; - command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; - command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; - command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; - command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; - command RecallScene(RecallSceneRequest): DefaultSuccess = 5; - command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; + fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; + fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; + fabric command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; + fabric command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; + fabric command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; + fabric command RecallScene(RecallSceneRequest): DefaultSuccess = 5; + fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; } server cluster OnOff = 6 { @@ -709,7 +709,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -1424,8 +1424,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1491,10 +1491,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster FixedLabel = 64 { diff --git a/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter index 76f87b241a18c5..53fd7ed647c601 100644 --- a/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter +++ b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter @@ -99,12 +99,12 @@ server cluster Groups = 4 { group_id groupId = 1; } - command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; - command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; - command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; - command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; - command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; - command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; + fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } client cluster Scenes = 5 { @@ -209,13 +209,13 @@ client cluster Scenes = 5 { optional INT8U sceneList[] = 3; } - command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; - command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; - command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; - command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; - command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; - command RecallScene(RecallSceneRequest): DefaultSuccess = 5; - command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; + fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; + fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; + fabric command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; + fabric command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; + fabric command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; + fabric command RecallScene(RecallSceneRequest): DefaultSuccess = 5; + fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; } server cluster Scenes = 5 { @@ -320,13 +320,13 @@ server cluster Scenes = 5 { optional INT8U sceneList[] = 3; } - command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; - command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; - command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; - command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; - command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; - command RecallScene(RecallSceneRequest): DefaultSuccess = 5; - command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; + fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; + fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; + fabric command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; + fabric command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; + fabric command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; + fabric command RecallScene(RecallSceneRequest): DefaultSuccess = 5; + fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; } client cluster OnOff = 6 { @@ -779,7 +779,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -1494,8 +1494,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1561,10 +1561,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster FixedLabel = 64 { diff --git a/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter b/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter index e6b811977e2e30..79dd3778e3fc34 100644 --- a/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter +++ b/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter @@ -99,12 +99,12 @@ server cluster Groups = 4 { group_id groupId = 1; } - command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; - command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; - command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; - command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; - command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; - command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; + fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } server cluster Scenes = 5 { @@ -209,13 +209,13 @@ server cluster Scenes = 5 { optional INT8U sceneList[] = 3; } - command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; - command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; - command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; - command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; - command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; - command RecallScene(RecallSceneRequest): DefaultSuccess = 5; - command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; + fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; + fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; + fabric command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; + fabric command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; + fabric command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; + fabric command RecallScene(RecallSceneRequest): DefaultSuccess = 5; + fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; } server cluster OnOff = 6 { @@ -626,7 +626,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -1341,8 +1341,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1408,10 +1408,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster FixedLabel = 64 { diff --git a/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter b/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter index 572eb08ca369b8..377a8919936651 100644 --- a/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter +++ b/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter @@ -112,12 +112,12 @@ server cluster Groups = 4 { group_id groupId = 1; } - command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; - command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; - command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; - command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; - command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; - command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; + fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } server cluster Descriptor = 29 { @@ -478,7 +478,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -1193,8 +1193,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1260,10 +1260,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster FixedLabel = 64 { diff --git a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter index 66cc663bc4def9..31d9f9885c0b95 100644 --- a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter +++ b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter @@ -96,12 +96,12 @@ server cluster Groups = 4 { group_id groupId = 1; } - command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; - command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; - command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; - command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; - command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; - command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; + fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } server cluster OnOff = 6 { @@ -589,7 +589,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -1304,8 +1304,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1371,10 +1371,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster FixedLabel = 64 { diff --git a/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter b/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter index 91a5ef6e428cb0..ecf9c833f48d17 100644 --- a/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter +++ b/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter @@ -112,12 +112,12 @@ server cluster Groups = 4 { group_id groupId = 1; } - command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; - command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; - command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; - command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; - command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; - command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; + fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } server cluster Descriptor = 29 { @@ -478,7 +478,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -1193,8 +1193,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1260,10 +1260,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster FixedLabel = 64 { diff --git a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter index 086a3db0aa36c8..8ccf9a9a8b3f88 100644 --- a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter +++ b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter @@ -99,12 +99,12 @@ server cluster Groups = 4 { group_id groupId = 1; } - command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; - command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; - command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; - command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; - command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; - command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; + fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } server cluster Scenes = 5 { @@ -209,13 +209,13 @@ server cluster Scenes = 5 { optional INT8U sceneList[] = 3; } - command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; - command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; - command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; - command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; - command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; - command RecallScene(RecallSceneRequest): DefaultSuccess = 5; - command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; + fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; + fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; + fabric command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; + fabric command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; + fabric command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; + fabric command RecallScene(RecallSceneRequest): DefaultSuccess = 5; + fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; } server cluster Descriptor = 29 { @@ -576,7 +576,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -1291,8 +1291,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1358,10 +1358,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster FixedLabel = 64 { diff --git a/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter b/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter index 26b531774f3304..c5a247912a27ff 100644 --- a/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter +++ b/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter @@ -99,12 +99,12 @@ server cluster Groups = 4 { group_id groupId = 1; } - command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; - command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; - command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; - command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; - command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; - command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; + fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } server cluster Scenes = 5 { @@ -209,13 +209,13 @@ server cluster Scenes = 5 { optional INT8U sceneList[] = 3; } - command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; - command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; - command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; - command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; - command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; - command RecallScene(RecallSceneRequest): DefaultSuccess = 5; - command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; + fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; + fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; + fabric command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; + fabric command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; + fabric command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; + fabric command RecallScene(RecallSceneRequest): DefaultSuccess = 5; + fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; } server cluster Descriptor = 29 { @@ -576,7 +576,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -1291,8 +1291,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1358,10 +1358,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster FixedLabel = 64 { diff --git a/examples/light-switch-app/light-switch-common/light-switch-app.matter b/examples/light-switch-app/light-switch-common/light-switch-app.matter index ae8c31908036ca..ed884d5f553418 100644 --- a/examples/light-switch-app/light-switch-common/light-switch-app.matter +++ b/examples/light-switch-app/light-switch-common/light-switch-app.matter @@ -134,12 +134,12 @@ server cluster Groups = 4 { group_id groupId = 1; } - command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; - command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; - command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; - command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; - command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; - command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; + fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } client cluster Scenes = 5 { @@ -241,13 +241,13 @@ client cluster Scenes = 5 { optional INT8U sceneList[] = 3; } - command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; - command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; - command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; - command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; - command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; - command RecallScene(RecallSceneRequest): DefaultSuccess = 5; - command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; + fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; + fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; + fabric command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; + fabric command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; + fabric command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; + fabric command RecallScene(RecallSceneRequest): DefaultSuccess = 5; + fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; } client cluster OnOff = 6 { @@ -665,7 +665,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -1385,8 +1385,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1452,10 +1452,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster FixedLabel = 64 { diff --git a/examples/lighting-app/lighting-common/lighting-app.matter b/examples/lighting-app/lighting-common/lighting-app.matter index 67b8e0386adecb..65da89abd1bc77 100644 --- a/examples/lighting-app/lighting-common/lighting-app.matter +++ b/examples/lighting-app/lighting-common/lighting-app.matter @@ -99,12 +99,12 @@ server cluster Groups = 4 { group_id groupId = 1; } - command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; - command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; - command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; - command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; - command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; - command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; + fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } server cluster OnOff = 6 { @@ -605,7 +605,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -1320,8 +1320,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1387,10 +1387,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster FixedLabel = 64 { diff --git a/examples/lock-app/lock-common/lock-app.matter b/examples/lock-app/lock-common/lock-app.matter index a8955e113138db..db5f49bab877cd 100644 --- a/examples/lock-app/lock-common/lock-app.matter +++ b/examples/lock-app/lock-common/lock-app.matter @@ -93,12 +93,12 @@ server cluster Groups = 4 { group_id groupId = 1; } - command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; - command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; - command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; - command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; - command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; - command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; + fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } server cluster OnOff = 6 { @@ -582,7 +582,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -1262,8 +1262,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1329,10 +1329,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster FixedLabel = 64 { diff --git a/examples/log-source-app/log-source-common/log-source-app.matter b/examples/log-source-app/log-source-common/log-source-app.matter index d21e442b6b0065..1e7ae971c5e075 100644 --- a/examples/log-source-app/log-source-common/log-source-app.matter +++ b/examples/log-source-app/log-source-common/log-source-app.matter @@ -121,7 +121,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -396,7 +396,7 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } diff --git a/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter b/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter index 0d7c9f937d3d46..fd00e5818c7b1d 100644 --- a/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter +++ b/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter @@ -339,7 +339,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -713,8 +713,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -780,10 +780,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster FixedLabel = 64 { diff --git a/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter b/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter index 09ffb5b4fad390..1a58f22e330228 100644 --- a/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter +++ b/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter @@ -342,7 +342,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -716,8 +716,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -783,10 +783,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster FixedLabel = 64 { diff --git a/examples/placeholder/linux/apps/app1/config.matter b/examples/placeholder/linux/apps/app1/config.matter index d294fde5d4cddf..b73aac74549d42 100644 --- a/examples/placeholder/linux/apps/app1/config.matter +++ b/examples/placeholder/linux/apps/app1/config.matter @@ -88,12 +88,12 @@ server cluster Groups = 4 { group_id groupId = 1; } - command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; - command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; - command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; - command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; - command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; - command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; + fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } server cluster Scenes = 5 { @@ -195,13 +195,13 @@ server cluster Scenes = 5 { optional INT8U sceneList[] = 3; } - command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; - command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; - command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; - command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; - command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; - command RecallScene(RecallSceneRequest): DefaultSuccess = 5; - command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; + fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; + fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; + fabric command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; + fabric command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; + fabric command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; + fabric command RecallScene(RecallSceneRequest): DefaultSuccess = 5; + fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; } client cluster OnOff = 6 { @@ -689,7 +689,7 @@ client cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster GeneralCommissioning = 48 { @@ -751,7 +751,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -1301,8 +1301,8 @@ client cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1401,8 +1401,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } diff --git a/examples/placeholder/linux/apps/app2/config.matter b/examples/placeholder/linux/apps/app2/config.matter index d294fde5d4cddf..b73aac74549d42 100644 --- a/examples/placeholder/linux/apps/app2/config.matter +++ b/examples/placeholder/linux/apps/app2/config.matter @@ -88,12 +88,12 @@ server cluster Groups = 4 { group_id groupId = 1; } - command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; - command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; - command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; - command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; - command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; - command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; + fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } server cluster Scenes = 5 { @@ -195,13 +195,13 @@ server cluster Scenes = 5 { optional INT8U sceneList[] = 3; } - command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; - command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; - command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; - command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; - command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; - command RecallScene(RecallSceneRequest): DefaultSuccess = 5; - command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; + fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; + fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; + fabric command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; + fabric command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; + fabric command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; + fabric command RecallScene(RecallSceneRequest): DefaultSuccess = 5; + fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; } client cluster OnOff = 6 { @@ -689,7 +689,7 @@ client cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster GeneralCommissioning = 48 { @@ -751,7 +751,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -1301,8 +1301,8 @@ client cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1401,8 +1401,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } diff --git a/examples/pump-app/pump-common/pump-app.matter b/examples/pump-app/pump-common/pump-app.matter index 6df0cd5539965f..ef0af0160f78e5 100644 --- a/examples/pump-app/pump-common/pump-app.matter +++ b/examples/pump-app/pump-common/pump-app.matter @@ -508,7 +508,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -991,8 +991,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1061,10 +1061,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster PumpConfigurationAndControl = 512 { diff --git a/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter b/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter index 20890f9d4fa567..13bc86a8e40a59 100644 --- a/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter +++ b/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter @@ -423,7 +423,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -906,8 +906,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -976,10 +976,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } client cluster PumpConfigurationAndControl = 512 { diff --git a/examples/temperature-measurement-app/esp32/main/temperature-measurement.matter b/examples/temperature-measurement-app/esp32/main/temperature-measurement.matter index cf3ab81c21d6b2..fe249360f4dc01 100644 --- a/examples/temperature-measurement-app/esp32/main/temperature-measurement.matter +++ b/examples/temperature-measurement-app/esp32/main/temperature-measurement.matter @@ -237,7 +237,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -743,8 +743,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -810,10 +810,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster FixedLabel = 64 { diff --git a/examples/thermostat/thermostat-common/thermostat.matter b/examples/thermostat/thermostat-common/thermostat.matter index da69099d90f4d1..b9dd70916122e2 100644 --- a/examples/thermostat/thermostat-common/thermostat.matter +++ b/examples/thermostat/thermostat-common/thermostat.matter @@ -128,12 +128,12 @@ server cluster Groups = 4 { group_id groupId = 1; } - command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; - command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; - command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; - command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; - command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; - command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; + fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } server cluster Scenes = 5 { @@ -235,13 +235,13 @@ server cluster Scenes = 5 { optional INT8U sceneList[] = 3; } - command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; - command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; - command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; - command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; - command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; - command RecallScene(RecallSceneRequest): DefaultSuccess = 5; - command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; + fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; + fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; + fabric command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; + fabric command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; + fabric command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; + fabric command RecallScene(RecallSceneRequest): DefaultSuccess = 5; + fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; } server cluster Descriptor = 29 { @@ -555,7 +555,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -1227,8 +1227,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } diff --git a/examples/tv-app/tv-common/tv-app.matter b/examples/tv-app/tv-common/tv-app.matter index 414058c5e9e277..5d4e3f94c349b5 100644 --- a/examples/tv-app/tv-common/tv-app.matter +++ b/examples/tv-app/tv-common/tv-app.matter @@ -461,7 +461,7 @@ client cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster GeneralCommissioning = 48 { @@ -520,7 +520,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } client cluster NetworkCommissioning = 49 { @@ -1323,7 +1323,7 @@ client cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1429,8 +1429,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1496,10 +1496,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster FixedLabel = 64 { diff --git a/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter b/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter index ebf643296e65f0..18bc17eee1a5a6 100644 --- a/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter +++ b/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter @@ -93,12 +93,12 @@ server cluster Groups = 4 { group_id groupId = 1; } - command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; - command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; - command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; - command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; - command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; - command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; + fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } server cluster Scenes = 5 { @@ -200,13 +200,13 @@ server cluster Scenes = 5 { optional INT8U sceneList[] = 3; } - command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; - command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; - command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; - command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; - command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; - command RecallScene(RecallSceneRequest): DefaultSuccess = 5; - command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; + fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; + fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; + fabric command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; + fabric command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; + fabric command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; + fabric command RecallScene(RecallSceneRequest): DefaultSuccess = 5; + fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; } client cluster OnOff = 6 { @@ -810,7 +810,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -1521,8 +1521,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1580,10 +1580,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster FixedLabel = 64 { diff --git a/examples/window-app/common/window-app.matter b/examples/window-app/common/window-app.matter index c899c4af42fba7..94f083e5d56961 100644 --- a/examples/window-app/common/window-app.matter +++ b/examples/window-app/common/window-app.matter @@ -105,12 +105,12 @@ server cluster Groups = 4 { group_id groupId = 1; } - command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; - command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; - command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; - command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; - command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; - command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; + fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } server cluster Scenes = 5 { @@ -215,13 +215,13 @@ server cluster Scenes = 5 { optional INT8U sceneList[] = 3; } - command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; - command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; - command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; - command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; - command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; - command RecallScene(RecallSceneRequest): DefaultSuccess = 5; - command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; + fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; + fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; + fabric command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; + fabric command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; + fabric command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; + fabric command RecallScene(RecallSceneRequest): DefaultSuccess = 5; + fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; } server cluster Descriptor = 29 { @@ -688,7 +688,7 @@ server cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } server cluster NetworkCommissioning = 49 { @@ -1344,8 +1344,8 @@ server cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1414,10 +1414,10 @@ server cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } server cluster FixedLabel = 64 { diff --git a/src/app/zap-templates/partials/idl/command_request_response.zapt b/src/app/zap-templates/partials/idl/command_request_response.zapt index d2b3b425f08032..3f6babd4a40863 100644 --- a/src/app/zap-templates/partials/idl/command_request_response.zapt +++ b/src/app/zap-templates/partials/idl/command_request_response.zapt @@ -2,6 +2,7 @@ {{/first}} {{~indent 1~}} + {{#if isFabricScoped~}} fabric {{/if~}} {{#if mustUseTimedInvoke~}} timed {{/if~}} command {{!ensure space}} {{~#chip_access_elements entity="command"~}} diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter index be7d85fa71e7c7..90a9ddc9afa2b2 100644 --- a/src/controller/data_model/controller-clusters.matter +++ b/src/controller/data_model/controller-clusters.matter @@ -105,12 +105,12 @@ client cluster Groups = 4 { group_id groupId = 1; } - command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; - command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; - command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; - command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; - command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; - command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; + fabric command access(invoke: manage) AddGroup(AddGroupRequest): AddGroupResponse = 0; + fabric command ViewGroup(ViewGroupRequest): ViewGroupResponse = 1; + fabric command GetGroupMembership(GetGroupMembershipRequest): GetGroupMembershipResponse = 2; + fabric command access(invoke: manage) RemoveGroup(RemoveGroupRequest): RemoveGroupResponse = 3; + fabric command access(invoke: manage) RemoveAllGroups(): DefaultSuccess = 4; + fabric command access(invoke: manage) AddGroupIfIdentifying(AddGroupIfIdentifyingRequest): DefaultSuccess = 5; } client cluster Scenes = 5 { @@ -215,13 +215,13 @@ client cluster Scenes = 5 { optional INT8U sceneList[] = 3; } - command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; - command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; - command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; - command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; - command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; - command RecallScene(RecallSceneRequest): DefaultSuccess = 5; - command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; + fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0; + fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1; + fabric command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2; + fabric command access(invoke: manage) RemoveAllScenes(RemoveAllScenesRequest): RemoveAllScenesResponse = 3; + fabric command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4; + fabric command RecallScene(RecallSceneRequest): DefaultSuccess = 5; + fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6; } client cluster OnOff = 6 { @@ -1075,7 +1075,7 @@ client cluster GeneralCommissioning = 48 { command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; - command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; } client cluster NetworkCommissioning = 49 { @@ -1866,8 +1866,8 @@ client cluster OperationalCredentials = 62 { command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; - command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; - command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; } @@ -1936,10 +1936,10 @@ client cluster GroupKeyManagement = 63 { INT16U groupKeySetIDs[] = 0; } - command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; - command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; - command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; - command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + fabric command access(invoke: administer) KeySetReadAllIndices(KeySetReadAllIndicesRequest): KeySetReadAllIndicesResponse = 4; } client cluster FixedLabel = 64 { From 83deb47a279e9cf1cfd0ca03ed043098aca85356 Mon Sep 17 00:00:00 2001 From: Arkadiusz Bokowy Date: Thu, 21 Jul 2022 17:30:14 +0200 Subject: [PATCH 15/18] Remove non-used field from WiFi commissioning driver (#21048) --- src/include/platform/NetworkCommissioning.h | 2 +- src/platform/Ameba/NetworkCommissioningDriver.h | 1 - src/platform/EFR32/NetworkCommissioningWiFiDriver.h | 5 ++--- src/platform/ESP32/NetworkCommissioningDriver.h | 1 - src/platform/Linux/NetworkCommissioningDriver.h | 3 +-- src/platform/P6/NetworkCommissioningDriver.h | 1 - src/platform/Tizen/NetworkCommissioningDriver.h | 1 - src/platform/bouffalolab/BL602/NetworkCommissioningDriver.h | 1 - src/platform/mbed/NetworkCommissioningDriver.h | 1 - src/platform/webos/NetworkCommissioningDriver.h | 3 +-- 10 files changed, 5 insertions(+), 14 deletions(-) diff --git a/src/include/platform/NetworkCommissioning.h b/src/include/platform/NetworkCommissioning.h index 589f1d17a61dfb..5880ec56658fca 100644 --- a/src/include/platform/NetworkCommissioning.h +++ b/src/include/platform/NetworkCommissioning.h @@ -135,7 +135,7 @@ class BaseDriver public: /** * @brief Callback for the network driver pushing the event of network status change to the network commissioning cluster. - * The platforms is explected to push the status from operations such as autonomous connection after loss of connectivity or + * The platforms is expected to push the status from operations such as autonomous connection after loss of connectivity or * during initial establishment. * * This function must be called in a thread-safe manner with CHIP stack. diff --git a/src/platform/Ameba/NetworkCommissioningDriver.h b/src/platform/Ameba/NetworkCommissioningDriver.h index 70708df983da45..0303642d3c6396 100644 --- a/src/platform/Ameba/NetworkCommissioningDriver.h +++ b/src/platform/Ameba/NetworkCommissioningDriver.h @@ -127,7 +127,6 @@ class AmebaWiFiDriver final : public WiFiDriver bool NetworkMatch(const WiFiNetwork & network, ByteSpan networkId); CHIP_ERROR StartScanWiFiNetworks(ByteSpan ssid); - WiFiNetworkIterator mWiFiIterator = WiFiNetworkIterator(this); WiFiNetwork mSavedNetwork; WiFiNetwork mStagingNetwork; ScanCallback * mpScanCallback; diff --git a/src/platform/EFR32/NetworkCommissioningWiFiDriver.h b/src/platform/EFR32/NetworkCommissioningWiFiDriver.h index 411de01e3d1637..d311b11dda43a7 100644 --- a/src/platform/EFR32/NetworkCommissioningWiFiDriver.h +++ b/src/platform/EFR32/NetworkCommissioningWiFiDriver.h @@ -134,9 +134,8 @@ class SlWiFiDriver final : public WiFiDriver bool StartScanWiFiNetworks(ByteSpan ssid); static void OnScanWiFiNetworkDone(wfx_wifi_scan_result_t * aScanResult); - WiFiNetworkIterator mWiFiIterator = WiFiNetworkIterator(this); - WiFiNetwork mSavedNetwork = {}; - WiFiNetwork mStagingNetwork = {}; + WiFiNetwork mSavedNetwork = {}; + WiFiNetwork mStagingNetwork = {}; ScanCallback * mpScanCallback; ConnectCallback * mpConnectCallback; }; diff --git a/src/platform/ESP32/NetworkCommissioningDriver.h b/src/platform/ESP32/NetworkCommissioningDriver.h index d8d9288508e06c..d2c6bb160e745d 100644 --- a/src/platform/ESP32/NetworkCommissioningDriver.h +++ b/src/platform/ESP32/NetworkCommissioningDriver.h @@ -127,7 +127,6 @@ class ESPWiFiDriver final : public WiFiDriver bool NetworkMatch(const WiFiNetwork & network, ByteSpan networkId); CHIP_ERROR StartScanWiFiNetworks(ByteSpan ssid); - WiFiNetworkIterator mWiFiIterator = WiFiNetworkIterator(this); WiFiNetwork mSavedNetwork; WiFiNetwork mStagingNetwork; ScanCallback * mpScanCallback; diff --git a/src/platform/Linux/NetworkCommissioningDriver.h b/src/platform/Linux/NetworkCommissioningDriver.h index e0e522a29eff3e..1fbe4588fcf264 100644 --- a/src/platform/Linux/NetworkCommissioningDriver.h +++ b/src/platform/Linux/NetworkCommissioningDriver.h @@ -47,7 +47,7 @@ class LinuxScanResponseIterator : public Iterator private: size_t currentIterating = 0; - // Note: We cannot post a event in ScheduleLambda since std::vector is not trivial copiable. + // Note: We cannot post a event in ScheduleLambda since std::vector is not trivial copyable. std::vector * mpScanResponse; }; @@ -102,7 +102,6 @@ class LinuxWiFiDriver final : public WiFiDriver private: bool NetworkMatch(const WiFiNetwork & network, ByteSpan networkId); - WiFiNetworkIterator mWiFiIterator = WiFiNetworkIterator(this); WiFiNetwork mSavedNetwork; WiFiNetwork mStagingNetwork; Optional mScanStatus; diff --git a/src/platform/P6/NetworkCommissioningDriver.h b/src/platform/P6/NetworkCommissioningDriver.h index e56967fff761b1..76a232213e92c2 100644 --- a/src/platform/P6/NetworkCommissioningDriver.h +++ b/src/platform/P6/NetworkCommissioningDriver.h @@ -133,7 +133,6 @@ class P6WiFiDriver final : public WiFiDriver bool NetworkMatch(const WiFiNetwork & network, ByteSpan networkId); CHIP_ERROR StartScanWiFiNetworks(ByteSpan ssid); - WiFiNetworkIterator mWiFiIterator = WiFiNetworkIterator(this); WiFiNetwork mSavedNetwork; WiFiNetwork mStagingNetwork; ScanCallback * mpScanCallback; diff --git a/src/platform/Tizen/NetworkCommissioningDriver.h b/src/platform/Tizen/NetworkCommissioningDriver.h index d128b8ab04b40c..d998d76c6c7384 100644 --- a/src/platform/Tizen/NetworkCommissioningDriver.h +++ b/src/platform/Tizen/NetworkCommissioningDriver.h @@ -74,7 +74,6 @@ class TizenWiFiDriver final : public WiFiDriver private: bool NetworkMatch(const WiFiNetwork & network, ByteSpan networkId); - WiFiNetworkIterator mWiFiIterator = WiFiNetworkIterator(this); WiFiNetwork mSavedNetwork; WiFiNetwork mStagingNetwork; }; diff --git a/src/platform/bouffalolab/BL602/NetworkCommissioningDriver.h b/src/platform/bouffalolab/BL602/NetworkCommissioningDriver.h index c5bfac61a21383..70090297551aa3 100644 --- a/src/platform/bouffalolab/BL602/NetworkCommissioningDriver.h +++ b/src/platform/bouffalolab/BL602/NetworkCommissioningDriver.h @@ -129,7 +129,6 @@ class BLWiFiDriver final : public WiFiDriver bool NetworkMatch(const WiFiNetwork & network, ByteSpan networkId); CHIP_ERROR StartScanWiFiNetworks(ByteSpan ssid); - WiFiNetworkIterator mWiFiIterator = WiFiNetworkIterator(this); WiFiNetwork mSavedNetwork; WiFiNetwork mStagingNetwork; ScanCallback * mpScanCallback; diff --git a/src/platform/mbed/NetworkCommissioningDriver.h b/src/platform/mbed/NetworkCommissioningDriver.h index 29c917c6b56888..82d83d73558417 100644 --- a/src/platform/mbed/NetworkCommissioningDriver.h +++ b/src/platform/mbed/NetworkCommissioningDriver.h @@ -143,7 +143,6 @@ class WiFiDriverImpl final : public WiFiDriver chip::DeviceLayer::Internal::WiFiAuthSecurityType NsapiToNetworkSecurity(nsapi_security_t nsapi_security); - WiFiNetworkIterator mWiFiIterator = WiFiNetworkIterator(this); WiFiNetwork mSavedNetwork; WiFiNetwork mStagingNetwork; ScanCallback * mScanCallback; diff --git a/src/platform/webos/NetworkCommissioningDriver.h b/src/platform/webos/NetworkCommissioningDriver.h index 330f1b6d03295e..9a9dc45a73957f 100644 --- a/src/platform/webos/NetworkCommissioningDriver.h +++ b/src/platform/webos/NetworkCommissioningDriver.h @@ -47,7 +47,7 @@ class LinuxScanResponseIterator : public Iterator private: size_t currentIterating = 0; - // Note: We cannot post a event in ScheduleLambda since std::vector is not trivial copiable. + // Note: We cannot post a event in ScheduleLambda since std::vector is not trivial copyable. std::vector * mpScanResponse; }; @@ -102,7 +102,6 @@ class LinuxWiFiDriver final : public WiFiDriver private: bool NetworkMatch(const WiFiNetwork & network, ByteSpan networkId); - WiFiNetworkIterator mWiFiIterator = WiFiNetworkIterator(this); WiFiNetwork mSavedNetwork; WiFiNetwork mStagingNetwork; Optional mScanStatus; From 5665d3871b5c4c0250a3d437ea5245835953f8c9 Mon Sep 17 00:00:00 2001 From: jwinder-ca <105392648+jwinder-ca@users.noreply.github.com> Date: Thu, 21 Jul 2022 10:35:30 -0600 Subject: [PATCH 16/18] Added support to the bridge-app for action-lists. (#20121) * Added support to the bridge-app for action-lists. Added the actions to turn on/off lights in a room (endpoint-list). The instant-action is the supported command to run the actions. Also, the setup-url attrubute was changed to be active. * Restyled by clang-format * Fixed build for esp32 bridge-app. * Changes to return status correctly. Co-authored-by: Restyled.io --- .../bridge-common/bridge-app.matter | 9 + .../bridge-app/bridge-common/bridge-app.zap | 179 +++++++++--------- examples/bridge-app/esp32/main/main.cpp | 10 + examples/bridge-app/linux/Device.cpp | 12 ++ .../bridge-app/linux/bridged-actions-stub.cpp | 22 ++- examples/bridge-app/linux/include/Device.h | 25 +++ examples/bridge-app/linux/include/main.h | 2 + examples/bridge-app/linux/main.cpp | 109 +++++++++++ .../zap-generated/IMClusterCommandHandler.cpp | 40 ++++ .../zap-generated/endpoint_config.h | 47 +++-- 10 files changed, 352 insertions(+), 103 deletions(-) diff --git a/examples/bridge-app/bridge-common/bridge-app.matter b/examples/bridge-app/bridge-common/bridge-app.matter index cc4b20444d6399..9f36feecb38ac0 100644 --- a/examples/bridge-app/bridge-common/bridge-app.matter +++ b/examples/bridge-app/bridge-common/bridge-app.matter @@ -420,11 +420,19 @@ server cluster BridgedActions = 37 { readonly attribute ActionStruct actionList[] = 0; readonly attribute EndpointListStruct endpointList[] = 1; + readonly attribute long_char_string<512> setupUrl = 2; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute attrib_id attributeList[] = 65531; readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; + + request struct InstantActionRequest { + INT16U actionID = 0; + optional INT32U invokeID = 1; + } + + command InstantAction(InstantActionRequest): DefaultSuccess = 0; } server cluster Basic = 40 { @@ -1723,6 +1731,7 @@ endpoint 1 { server cluster BridgedActions { callback attribute actionList; callback attribute endpointList; + ram attribute setupUrl default = "https://example.com"; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute attributeList; diff --git a/examples/bridge-app/bridge-common/bridge-app.zap b/examples/bridge-app/bridge-common/bridge-app.zap index 6d01b0254bb3d5..10bffcd24bbd32 100644 --- a/examples/bridge-app/bridge-common/bridge-app.zap +++ b/examples/bridge-app/bridge-common/bridge-app.zap @@ -1,5 +1,5 @@ { - "featureLevel": 71, + "featureLevel": 72, "creator": "zap", "keyValuePairs": [ { @@ -115,7 +115,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 @@ -131,7 +131,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 @@ -147,7 +147,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 @@ -159,7 +159,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -175,7 +175,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -191,7 +191,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -297,7 +297,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -313,7 +313,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -373,7 +373,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -389,7 +389,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -511,7 +511,7 @@ "singleton": 1, "bounded": 0, "defaultValue": "10", - "reportable": 0, + "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 @@ -527,7 +527,7 @@ "singleton": 1, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 @@ -543,7 +543,7 @@ "singleton": 1, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 @@ -559,7 +559,7 @@ "singleton": 1, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 @@ -575,7 +575,7 @@ "singleton": 1, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 @@ -591,7 +591,7 @@ "singleton": 1, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 @@ -607,7 +607,7 @@ "singleton": 1, "bounded": 0, "defaultValue": "XX", - "reportable": 0, + "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 @@ -623,7 +623,7 @@ "singleton": 1, "bounded": 0, "defaultValue": "0", - "reportable": 0, + "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 @@ -639,7 +639,7 @@ "singleton": 1, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 @@ -655,7 +655,7 @@ "singleton": 1, "bounded": 0, "defaultValue": "0", - "reportable": 0, + "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 @@ -671,7 +671,7 @@ "singleton": 1, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 @@ -827,7 +827,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 1, "bounded": 0, "defaultValue": "", @@ -843,7 +843,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 1, "bounded": 0, "defaultValue": "", @@ -859,7 +859,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 1, "bounded": 0, "defaultValue": "", @@ -965,7 +965,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "en-US", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -981,7 +981,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -993,7 +993,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1009,7 +1009,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1025,7 +1025,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1131,7 +1131,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "0", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -1175,7 +1175,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1191,7 +1191,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1207,7 +1207,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1325,7 +1325,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1341,7 +1341,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1357,7 +1357,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1589,7 +1589,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1605,7 +1605,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1621,7 +1621,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1925,7 +1925,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1941,7 +1941,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -2273,7 +2273,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -2289,7 +2289,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -2305,7 +2305,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4175,7 +4175,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4191,7 +4191,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4207,7 +4207,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4503,7 +4503,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4519,7 +4519,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4535,7 +4535,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4687,7 +4687,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4703,7 +4703,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4719,7 +4719,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4735,7 +4735,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4751,7 +4751,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4767,7 +4767,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4783,7 +4783,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5052,7 +5052,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "0x0", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -5068,7 +5068,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "0x0", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -5080,7 +5080,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5096,7 +5096,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5112,7 +5112,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5214,7 +5214,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5230,11 +5230,11 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -5246,11 +5246,11 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -5262,11 +5262,11 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -5278,7 +5278,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5294,7 +5294,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5310,7 +5310,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5412,7 +5412,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5428,7 +5428,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5444,7 +5444,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5460,7 +5460,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5510,7 +5510,16 @@ "define": "BRIDGED_ACTIONS_CLUSTER", "side": "client", "enabled": 0, - "commands": [], + "commands": [ + { + "name": "InstantAction", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 0 + } + ], "attributes": [ { "name": "FeatureMap", @@ -5562,7 +5571,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5578,7 +5587,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5593,11 +5602,11 @@ "mfgCode": null, "side": "server", "type": "long_char_string", - "included": 0, + "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "https://example.com", "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5610,7 +5619,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5626,7 +5635,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5642,7 +5651,7 @@ "side": "server", "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", diff --git a/examples/bridge-app/esp32/main/main.cpp b/examples/bridge-app/esp32/main/main.cpp index 3b94d192d216e1..0d022828740cfb 100644 --- a/examples/bridge-app/esp32/main/main.cpp +++ b/examples/bridge-app/esp32/main/main.cpp @@ -50,6 +50,7 @@ using namespace ::chip; using namespace ::chip::DeviceManager; using namespace ::chip::Platform; using namespace ::chip::Credentials; +using namespace ::chip::app::Clusters; static AppDeviceCallbacks AppCallback; @@ -328,6 +329,15 @@ void HandleDeviceStatusChanged(Device * dev, Device::Changed_t itemChangedMask) } } +bool emberAfBridgedActionsClusterInstantActionCallback(app::CommandHandler * commandObj, + const app::ConcreteCommandPath & commandPath, + const BridgedActions::Commands::InstantAction::DecodableType & commandData) +{ + // No actions are implemented, just return status NotFound. + commandObj->AddStatus(commandPath, Protocols::InteractionModel::Status::NotFound); + return true; +} + const EmberAfDeviceType gBridgedRootDeviceTypes[] = { { DEVICE_TYPE_ROOT_NODE, DEVICE_VERSION_DEFAULT }, { DEVICE_TYPE_BRIDGE, DEVICE_VERSION_DEFAULT } }; diff --git a/examples/bridge-app/linux/Device.cpp b/examples/bridge-app/linux/Device.cpp index e2d2122a49ce25..12e78324ddc04c 100644 --- a/examples/bridge-app/linux/Device.cpp +++ b/examples/bridge-app/linux/Device.cpp @@ -262,3 +262,15 @@ Room::Room(std::string name, uint16_t endpointListId, EndpointListTypeEnum type, mType = type; mIsVisible = isVisible; } + +Action::Action(uint16_t actionId, std::string name, ActionTypeEnum type, uint16_t endpointListId, uint16_t supportedCommands, + ActionStateEnum status, bool isVisible) +{ + mActionId = actionId; + mName = name; + mType = type; + mEndpointListId = endpointListId; + mSupportedCommands = supportedCommands; + mStatus = status; + mIsVisible = isVisible; +} diff --git a/examples/bridge-app/linux/bridged-actions-stub.cpp b/examples/bridge-app/linux/bridged-actions-stub.cpp index 21712982dea9f7..debf2538206d57 100644 --- a/examples/bridge-app/linux/bridged-actions-stub.cpp +++ b/examples/bridge-app/linux/bridged-actions-stub.cpp @@ -57,8 +57,26 @@ constexpr uint16_t BridgedActionsAttrAccess::ClusterRevision; CHIP_ERROR BridgedActionsAttrAccess::ReadActionListAttribute(EndpointId endpoint, AttributeValueEncoder & aEncoder) { - // Just return an empty list - return aEncoder.EncodeEmptyList(); + CHIP_ERROR err = aEncoder.EncodeList([&endpoint](const auto & encoder) -> CHIP_ERROR { + std::vector actionList = GetActionListInfo(endpoint); + + for (auto action : actionList) + { + if (action->getIsVisible()) + { + BridgedActions::Structs::ActionStruct::Type actionStruct = { action->getActionId(), + CharSpan::fromCharString(action->getName().c_str()), + action->getType(), + action->getEndpointListId(), + action->getSupportedCommands(), + action->getStatus() }; + ReturnErrorOnFailure(encoder.Encode(actionStruct)); + } + } + + return CHIP_NO_ERROR; + }); + return err; } CHIP_ERROR BridgedActionsAttrAccess::ReadEndpointListAttribute(EndpointId endpoint, AttributeValueEncoder & aEncoder) diff --git a/examples/bridge-app/linux/include/Device.h b/examples/bridge-app/linux/include/Device.h index 1eea58a71a2eb1..75ea521e90d4d8 100644 --- a/examples/bridge-app/linux/include/Device.h +++ b/examples/bridge-app/linux/include/Device.h @@ -217,3 +217,28 @@ class Room uint16_t mEndpointListId; chip::app::Clusters::BridgedActions::EndpointListTypeEnum mType; }; + +class Action +{ +public: + Action(uint16_t actionId, std::string name, chip::app::Clusters::BridgedActions::ActionTypeEnum type, uint16_t endpointListId, + uint16_t supportedCommands, chip::app::Clusters::BridgedActions::ActionStateEnum status, bool isVisible); + inline void setName(std::string name) { mName = name; }; + inline std::string getName() { return mName; }; + inline chip::app::Clusters::BridgedActions::ActionTypeEnum getType() { return mType; }; + inline chip::app::Clusters::BridgedActions::ActionStateEnum getStatus() { return mStatus; }; + inline uint16_t getActionId() { return mActionId; }; + inline uint16_t getEndpointListId() { return mEndpointListId; }; + inline uint16_t getSupportedCommands() { return mSupportedCommands; }; + inline void setIsVisible(bool isVisible) { mIsVisible = isVisible; }; + inline bool getIsVisible() { return mIsVisible; }; + +private: + std::string mName; + chip::app::Clusters::BridgedActions::ActionTypeEnum mType; + chip::app::Clusters::BridgedActions::ActionStateEnum mStatus; + uint16_t mActionId; + uint16_t mEndpointListId; + uint16_t mSupportedCommands; + bool mIsVisible; +}; diff --git a/examples/bridge-app/linux/include/main.h b/examples/bridge-app/linux/include/main.h index fe81d30685f7ec..df7ba595cd6ece 100644 --- a/examples/bridge-app/linux/include/main.h +++ b/examples/bridge-app/linux/include/main.h @@ -19,3 +19,5 @@ #pragma once std::vector GetEndpointListInfo(chip::EndpointId parentId); + +std::vector GetActionListInfo(chip::EndpointId parentId); diff --git a/examples/bridge-app/linux/main.cpp b/examples/bridge-app/linux/main.cpp index d0b411446a210b..db5eafb1bf5544 100644 --- a/examples/bridge-app/linux/main.cpp +++ b/examples/bridge-app/linux/main.cpp @@ -24,6 +24,7 @@ #include #include +#include #include #include #include @@ -68,6 +69,7 @@ EndpointId gCurrentEndpointId; EndpointId gFirstDynamicEndpointId; Device * gDevices[CHIP_DEVICE_CONFIG_DYNAMIC_ENDPOINT_COUNT]; std::vector gRooms; +std::vector gActions; // ENDPOINT DEFINITIONS: // ================================================================================= @@ -168,6 +170,13 @@ Room room1("Room 1", 0xE001, BridgedActions::EndpointListTypeEnum::kRoom, true); Room room2("Room 2", 0xE002, BridgedActions::EndpointListTypeEnum::kRoom, true); Room room3("Zone 3", 0xE003, BridgedActions::EndpointListTypeEnum::kZone, false); +Action action1(0x1001, "Room 1 On", BridgedActions::ActionTypeEnum::kAutomation, 0xE001, 0x1, + BridgedActions::ActionStateEnum::kInactive, true); +Action action2(0x1002, "Turn On Room 2", BridgedActions::ActionTypeEnum::kAutomation, 0xE002, 0x01, + BridgedActions::ActionStateEnum::kInactive, true); +Action action3(0x1003, "Turn Off Room 1", BridgedActions::ActionTypeEnum::kAutomation, 0xE003, 0x01, + BridgedActions::ActionStateEnum::kInactive, false); + // --------------------------------------------------------------------------- // // SWITCH ENDPOINT: contains the following clusters: @@ -360,6 +369,11 @@ std::vector GetEndpointListInfo(chip::EndpointId parentId) return infoList; } +std::vector GetActionListInfo(chip::EndpointId parentId) +{ + return gActions; +} + void HandleDeviceStatusChanged(Device * dev, Device::Changed_t itemChangedMask) { if (itemChangedMask & Device::kChanged_Reachable) @@ -640,6 +654,82 @@ EmberAfStatus emberAfExternalAttributeWriteCallback(EndpointId endpoint, Cluster return ret; } +void runOnOffRoomAction(Room * room, bool actionOn, EndpointId endpointId, uint16_t actionID, uint32_t invokeID, bool hasInvokeID) +{ + if (hasInvokeID) + { + BridgedActions::Events::StateChanged::Type event{ actionID, invokeID, BridgedActions::ActionStateEnum::kActive }; + EventNumber eventNumber; + chip::app::LogEvent(event, endpointId, eventNumber); + } + + // Check and run the action for ActionLight1 - ActionLight4 + if (room->getName().compare(ActionLight1.GetLocation()) == 0) + { + ActionLight1.SetOnOff(actionOn); + } + if (room->getName().compare(ActionLight2.GetLocation()) == 0) + { + ActionLight2.SetOnOff(actionOn); + } + if (room->getName().compare(ActionLight3.GetLocation()) == 0) + { + ActionLight3.SetOnOff(actionOn); + } + if (room->getName().compare(ActionLight4.GetLocation()) == 0) + { + ActionLight4.SetOnOff(actionOn); + } + + if (hasInvokeID) + { + BridgedActions::Events::StateChanged::Type event{ actionID, invokeID, BridgedActions::ActionStateEnum::kInactive }; + EventNumber eventNumber; + chip::app::LogEvent(event, endpointId, eventNumber); + } +} + +bool emberAfBridgedActionsClusterInstantActionCallback(app::CommandHandler * commandObj, + const app::ConcreteCommandPath & commandPath, + const BridgedActions::Commands::InstantAction::DecodableType & commandData) +{ + bool hasInvokeID = false; + uint32_t invokeID = 0; + EndpointId endpointID = commandPath.mEndpointId; + auto & actionID = commandData.actionID; + + if (commandData.invokeID.HasValue()) + { + hasInvokeID = true; + invokeID = commandData.invokeID.Value(); + } + + if (actionID == action1.getActionId() && action1.getIsVisible()) + { + // Turn On Lights in Room 1 + runOnOffRoomAction(&room1, true, endpointID, actionID, invokeID, hasInvokeID); + commandObj->AddStatus(commandPath, Protocols::InteractionModel::Status::Success); + return true; + } + if (actionID == action2.getActionId() && action2.getIsVisible()) + { + // Turn On Lights in Room 2 + runOnOffRoomAction(&room2, true, endpointID, actionID, invokeID, hasInvokeID); + commandObj->AddStatus(commandPath, Protocols::InteractionModel::Status::Success); + return true; + } + if (actionID == action3.getActionId() && action3.getIsVisible()) + { + // Turn Off Lights in Room 1 + runOnOffRoomAction(&room1, false, endpointID, actionID, invokeID, hasInvokeID); + commandObj->AddStatus(commandPath, Protocols::InteractionModel::Status::Success); + return true; + } + + commandObj->AddStatus(commandPath, Protocols::InteractionModel::Status::NotFound); + return true; +} + void ApplicationInit() {} const EmberAfDeviceType gBridgedOnOffDeviceTypes[] = { { DEVICE_TYPE_LO_ON_OFF_LIGHT, DEVICE_VERSION_DEFAULT }, @@ -744,6 +834,21 @@ void * bridge_polling_thread(void * context) room3.setIsVisible(true); ActionLight2.SetZone("Zone 3"); } + if (ch == 'm') + { + // TC-ACT-2.2 step 3c, rename "Turn on Room 1 lights" + action1.setName("Turn On Room 1"); + } + if (ch == 'n') + { + // TC-ACT-2.2 step 3f, remove "Turn on Room 2 lights" + action2.setIsVisible(false); + } + if (ch == 'o') + { + // TC-ACT-2.2 step 3i, add "Turn off Room 1 renamed lights" + action3.setIsVisible(true); + } continue; } @@ -866,6 +971,10 @@ int main(int argc, char * argv[]) gRooms.push_back(&room2); gRooms.push_back(&room3); + gActions.push_back(&action1); + gActions.push_back(&action2); + gActions.push_back(&action3); + { pthread_t poll_thread; int res = pthread_create(&poll_thread, nullptr, bridge_polling_thread, nullptr); diff --git a/zzz_generated/bridge-app/zap-generated/IMClusterCommandHandler.cpp b/zzz_generated/bridge-app/zap-generated/IMClusterCommandHandler.cpp index 93cd15f439ed14..198b5688cd957c 100644 --- a/zzz_generated/bridge-app/zap-generated/IMClusterCommandHandler.cpp +++ b/zzz_generated/bridge-app/zap-generated/IMClusterCommandHandler.cpp @@ -99,6 +99,43 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP } // namespace AdministratorCommissioning +namespace BridgedActions { + +void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandPath & aCommandPath, TLV::TLVReader & aDataTlv) +{ + CHIP_ERROR TLVError = CHIP_NO_ERROR; + bool wasHandled = false; + { + switch (aCommandPath.mCommandId) + { + case Commands::InstantAction::Id: { + Commands::InstantAction::DecodableType commandData; + TLVError = DataModel::Decode(aDataTlv, commandData); + if (TLVError == CHIP_NO_ERROR) + { + wasHandled = emberAfBridgedActionsClusterInstantActionCallback(apCommandObj, aCommandPath, commandData); + } + break; + } + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatus(aCommandPath, Protocols::InteractionModel::Status::UnsupportedCommand); + ChipLogError(Zcl, "Unknown command " ChipLogFormatMEI " for cluster " ChipLogFormatMEI, + ChipLogValueMEI(aCommandPath.mCommandId), ChipLogValueMEI(aCommandPath.mClusterId)); + return; + } + } + } + + if (CHIP_NO_ERROR != TLVError || !wasHandled) + { + apCommandObj->AddStatus(aCommandPath, Protocols::InteractionModel::Status::InvalidCommand); + ChipLogProgress(Zcl, "Failed to dispatch command, TLVError=%" CHIP_ERROR_FORMAT, TLVError.Format()); + } +} + +} // namespace BridgedActions + namespace DiagnosticLogs { void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandPath & aCommandPath, TLV::TLVReader & aDataTlv) @@ -729,6 +766,9 @@ void DispatchSingleClusterCommand(const ConcreteCommandPath & aCommandPath, TLV: case Clusters::AdministratorCommissioning::Id: Clusters::AdministratorCommissioning::DispatchServerCommand(apCommandObj, aCommandPath, aReader); break; + case Clusters::BridgedActions::Id: + Clusters::BridgedActions::DispatchServerCommand(apCommandObj, aCommandPath, aReader); + break; case Clusters::DiagnosticLogs::Id: Clusters::DiagnosticLogs::DispatchServerCommand(apCommandObj, aCommandPath, aReader); break; diff --git a/zzz_generated/bridge-app/zap-generated/endpoint_config.h b/zzz_generated/bridge-app/zap-generated/endpoint_config.h index 2959aa6b9f8e48..3ccf64ec0b6f0a 100644 --- a/zzz_generated/bridge-app/zap-generated/endpoint_config.h +++ b/zzz_generated/bridge-app/zap-generated/endpoint_config.h @@ -38,6 +38,11 @@ \ /* 6 - Breadcrumb, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + \ + /* Endpoint: 1, Cluster: Bridged Actions (server), big-endian */ \ + \ + /* 14 - setup url, */ \ + 0, 19, 'h', 't', 't', 'p', 's', ':', '/', '/', 'e', 'x', 'a', 'm', 'p', 'l', 'e', '.', 'c', 'o', 'm', \ } #else // !BIGENDIAN_CPU @@ -53,11 +58,16 @@ \ /* 6 - Breadcrumb, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + \ + /* Endpoint: 1, Cluster: Bridged Actions (server), little-endian */ \ + \ + /* 14 - setup url, */ \ + 0, 19, 'h', 't', 't', 'p', 's', ':', '/', '/', 'e', 'x', 'a', 'm', 'p', 'l', 'e', '.', 'c', 'o', 'm', \ } #endif // BIGENDIAN_CPU -#define GENERATED_DEFAULTS_COUNT (2) +#define GENERATED_DEFAULTS_COUNT (3) #define ZAP_TYPE(type) ZCL_##type##_ATTRIBUTE_TYPE #define ZAP_LONG_DEFAULTS_INDEX(index) \ @@ -90,7 +100,7 @@ #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask // This is an array of EmberAfAttributeMetadata structures. -#define GENERATED_ATTRIBUTE_COUNT 240 +#define GENERATED_ATTRIBUTE_COUNT 241 #define GENERATED_ATTRIBUTES \ { \ \ @@ -439,6 +449,7 @@ /* Endpoint: 1, Cluster: Bridged Actions (server) */ \ { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* action list */ \ { 0x00000001, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* endpoint list */ \ + { 0x00000002, ZAP_TYPE(LONG_CHAR_STRING), 514, 0, ZAP_LONG_DEFAULTS_INDEX(14) }, /* setup url */ \ { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ @@ -600,14 +611,18 @@ 0x00000000 /* Identify */, \ 0x00000040 /* TriggerEffect */, \ chip::kInvalidCommandId /* end of list */, \ - /* Endpoint: 2, Cluster: On/Off (server) */\ + /* Endpoint: 1, Cluster: Bridged Actions (server) */\ /* AcceptedCommandList (index=57) */ \ + 0x00000000 /* InstantAction */, \ + chip::kInvalidCommandId /* end of list */, \ + /* Endpoint: 2, Cluster: On/Off (server) */\ + /* AcceptedCommandList (index=59) */ \ 0x00000000 /* Off */, \ 0x00000001 /* On */, \ 0x00000002 /* Toggle */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 2, Cluster: Level Control (server) */\ - /* AcceptedCommandList (index=61) */ \ + /* AcceptedCommandList (index=63) */ \ 0x00000000 /* MoveToLevel */, \ 0x00000001 /* Move */, \ 0x00000002 /* Step */, \ @@ -872,39 +887,39 @@ /* Endpoint: 1, Cluster: Bridged Actions (server) */ \ .clusterId = 0x00000025, \ .attributes = ZAP_ATTRIBUTE_INDEX(206), \ - .attributeCount = 4, \ - .clusterSize = 6, \ + .attributeCount = 5, \ + .clusterSize = 520, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ - .acceptedCommandList = nullptr ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 57 ) ,\ .generatedCommandList = nullptr ,\ },\ { \ /* Endpoint: 2, Cluster: On/Off (server) */ \ .clusterId = 0x00000006, \ - .attributes = ZAP_ATTRIBUTE_INDEX(210), \ + .attributes = ZAP_ATTRIBUTE_INDEX(211), \ .attributeCount = 3, \ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayOnOffServer, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 57 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 59 ) ,\ .generatedCommandList = nullptr ,\ },\ { \ /* Endpoint: 2, Cluster: Level Control (server) */ \ .clusterId = 0x00000008, \ - .attributes = ZAP_ATTRIBUTE_INDEX(213), \ + .attributes = ZAP_ATTRIBUTE_INDEX(214), \ .attributeCount = 16, \ .clusterSize = 27, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayLevelControlServer, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 61 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 63 ) ,\ .generatedCommandList = nullptr ,\ },\ { \ /* Endpoint: 2, Cluster: Descriptor (server) */ \ .clusterId = 0x0000001D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(229), \ + .attributes = ZAP_ATTRIBUTE_INDEX(230), \ .attributeCount = 6, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -915,7 +930,7 @@ { \ /* Endpoint: 2, Cluster: Switch (server) */ \ .clusterId = 0x0000003B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(235), \ + .attributes = ZAP_ATTRIBUTE_INDEX(236), \ .attributeCount = 5, \ .clusterSize = 9, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -934,11 +949,11 @@ // This is an array of EmberAfEndpointType structures. #define GENERATED_ENDPOINT_TYPES \ { \ - { ZAP_CLUSTER_INDEX(0), 19, 230 }, { ZAP_CLUSTER_INDEX(19), 4, 21 }, { ZAP_CLUSTER_INDEX(23), 4, 47 }, \ + { ZAP_CLUSTER_INDEX(0), 19, 230 }, { ZAP_CLUSTER_INDEX(19), 4, 535 }, { ZAP_CLUSTER_INDEX(23), 4, 47 }, \ } // Largest attribute size is needed for various buffers -#define ATTRIBUTE_LARGEST (259) +#define ATTRIBUTE_LARGEST (515) static_assert(ATTRIBUTE_LARGEST <= CHIP_CONFIG_MAX_ATTRIBUTE_STORE_ELEMENT_SIZE, "ATTRIBUTE_LARGEST larger than expected"); @@ -946,7 +961,7 @@ static_assert(ATTRIBUTE_LARGEST <= CHIP_CONFIG_MAX_ATTRIBUTE_STORE_ELEMENT_SIZE, #define ATTRIBUTE_SINGLETONS_SIZE (37) // Total size of attribute storage -#define ATTRIBUTE_MAX_SIZE (298) +#define ATTRIBUTE_MAX_SIZE (812) // Number of fixed endpoints #define FIXED_ENDPOINT_COUNT (3) From b87244d1c82e6de6e516d78e7c002926b95f4549 Mon Sep 17 00:00:00 2001 From: Evgeny Margolis Date: Thu, 21 Jul 2022 11:28:35 -0700 Subject: [PATCH 17/18] Remove Obsolete TODOs in the AddTrustedRootCertificate and AddNOC Commands. (#21060) --- .../operational-credentials-server.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/app/clusters/operational-credentials-server/operational-credentials-server.cpp b/src/app/clusters/operational-credentials-server/operational-credentials-server.cpp index ce29aaea9c5fb1..35c4ec99e4ccd3 100644 --- a/src/app/clusters/operational-credentials-server/operational-credentials-server.cpp +++ b/src/app/clusters/operational-credentials-server/operational-credentials-server.cpp @@ -668,9 +668,6 @@ bool emberAfOperationalCredentialsClusterAddNOCCallback(app::CommandHandler * co // Flush acks before really slow work commandObj->FlushAcksRightAwayOnSlowCommand(); - // TODO: Add support for calling AddNOC without a prior AddTrustedRootCertificate if - // the root properly matches an existing one. - // We can't possibly have a matching root based on the fact that we don't have // a shared root store. Therefore we would later fail path validation due to // missing root. Let's early-bail with InvalidNOC. @@ -1197,8 +1194,6 @@ bool emberAfOperationalCredentialsClusterAddTrustedRootCertificateCallback( // Flush acks before really slow work commandObj->FlushAcksRightAwayOnSlowCommand(); - // TODO(#17208): Handle checking for byte-to-byte match with existing fabrics before allowing the add - err = ValidateChipRCAC(rootCertificate); VerifyOrExit(err == CHIP_NO_ERROR, finalStatus = Status::InvalidCommand); From 1d88b3270ccc052cc30d20f2cadaf43b6f5d88ed Mon Sep 17 00:00:00 2001 From: cpagravel Date: Thu, 21 Jul 2022 11:47:05 -0700 Subject: [PATCH 18/18] Chef - Add automated_test_stamp to Chef CD builds (#21059) --- examples/chef/cicd_config.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/chef/cicd_config.json b/examples/chef/cicd_config.json index f78baa7e3d3eee..27eafbe67631d3 100644 --- a/examples/chef/cicd_config.json +++ b/examples/chef/cicd_config.json @@ -2,14 +2,14 @@ "ci_allow_list": ["rootnode_dimmablelight_bCwGYSDpoe"], "cd_platforms": { "linux": { - "linux_x86": ["--cpu_type", "x64"], - "linux_arm64_ipv6only": ["--cpu_type", "arm64", "--ipv6only"] + "linux_x86": ["--cpu_type", "x64", "-a"], + "linux_arm64_ipv6only": ["--cpu_type", "arm64", "--ipv6only", "-a"] }, "esp32": { - "m5stack": [] + "m5stack": ["-a"] }, "nrfconnect": { - "nrf52840dk": [] + "nrf52840dk": ["-a"] } } }